Produkty
Workers
Ciężkie i długo działające zadania w 15 środowiskach: autodetekcja, pakiety systemowe i galeria gotowych szablonów.
Workers (Panel → projekt → Workers) uruchamiają kod, który nie mieści się w Edge Function: długie zadania, duże zależności, przeglądarki headless, ffmpeg, usługi JVM i .NET. Wgrywasz kod (albo wybierasz szablon), my budujemy obraz na hoście danych i uruchamiamy go w izolowanym kontenerze gVisor z dostępem do Twojej bazy. Typy: http (publiczny adres HTTPS), background, cron i queue (konsument pgmq).
Środowiska i autodetekcja
Podaj runtime: "auto" (w kreatorze: Wykryj automatycznie), a rozpoznamy środowisko po plikach — to czysta funkcja pokryta testami jednostkowymi. Kolejność: Dockerfile → mix.exs → Cargo.toml → go.mod → Maven/Gradle → *.csproj → composer.json → Gemfile → Deno → Node/Bun → Python.
| Runtime | Detected from | Install / build | Start |
|---|---|---|---|
python3.11 / 3.12 / 3.13 | requirements.txt, pyproject.toml, Pipfile, *.py | uv pip install (fast installs) | main.py · uvicorn / gunicorn when present · Procfile |
node20 / node22 / node24 | package.json (engines.node) | npm ci / pnpm / yarn, npm run build, prune | npm start · index.js · server.js |
bun | bun.lock, bunfig.toml, packageManager | bun install | bun run index.ts |
deno2 | deno.json, deno.lock | deno cache | deno task start · deno run -A main.ts |
go1.22 – go1.25 | go.mod (go directive) | go build (static, multi-stage, cmd/*) | /app/server |
rust | Cargo.toml | cargo build --release (multi-stage, cached registry) | /app/server |
java21 | pom.xml, build.gradle(.kts) | Maven or Gradle → fat JAR → JRE 21 | java -jar app.jar (-Dserver.port=$PORT) |
dotnet8 / dotnet9 | *.csproj, *.sln | dotnet publish (multi-stage) | dotnet <project>.dll (ASPNETCORE_URLS) |
php8.3 | composer.json | composer install on FrankenPHP (Laravel, Symfony, Octane) | Caddy php_server on $PORT |
ruby3.3 | Gemfile, config.ru | bundle install (deployment) | puma on $PORT (Rails, Sinatra, Rack) |
elixir | mix.exs | mix release (multi-stage) | bin/<app> start |
dockerfile | Dockerfile | your own build (uid 10001, read-only rootfs) | your CMD |
Procfile (web: … dla http, worker: … dla pozostałych) lub pole command nadpisuje komendę startową. Kontenery działają jako uid 10001 z systemem plików tylko do odczytu; zapisywalny jest /tmp (128 MB), HOME=/tmp. Presety przekierowują tam cache frameworków (Rails tmp/ i log/, Laravel storage/, Deno, npm, uv). Port podaje zmienna $PORT.
Pakiety systemowe
Wybierz pakiety z białej listy w kreatorze, w worker.json ("packages": ["ffmpeg","chromium"]), w API (packages) albo w pliku Aptfile obok kodu. Dozwolone: ffmpeg, chromium, tesseract, poppler, imagemagick, ghostscript, pandoc, libreoffice, wkhtmltopdf, weasyprint, fonts, libvips, opencv, graphviz, git, curl, jq, unzip, sqlite, postgresql-client, libpq, build-tools. Typowe zależności Pythona wykrywamy same: weasyprint, pytesseract, ffmpeg-python, pdf2image, opencv-python, psycopg2. Gdy w requirements.txt lub package.json jest playwright, budowanie uruchamia też playwright install --with-deps chromium.
Galeria szablonów
35 gotowych workerów z działającym kodem, opisem zmiennych środowiskowych i listą funkcji Supabase, z których korzystają (baza, Auth, Storage, kolejki pgmq, Realtime, AI Gateway, Email, pgvector). Otwórz Workers → Galeria szablonów, filtruj po języku, kategorii lub funkcji Supabase i kliknij Wdróż: szablony bez wymaganych sekretów wdrażają się od razu, pozostałe otwierają kreator z wypełnioną konfiguracją (oraz opcjonalnym SQL tworzącym tabele i kolejki).
hostbase workers templates # lista (filtry: --language Python --category ai)
hostbase workers init --template stripe-webhook # tworzy workers/stripe-webhook/ + worker.json + .env.example
hostbase workers deploy stripe-webhook # buduje i wdraża
hostbase workers deploy-template ocr-tesseract --name ocr # jedno polecenie, bez plików lokalnych
GET /api/v1/worker-templates?q=ocr&language=Python
GET /api/v1/worker-templates/{id} # razem z plikami źródłowymi
POST /api/v1/projects/{ref}/workers/from-template # { template, name?, env?, size?, run_setup_sql? }
Narzędzia MCP: list_worker_templates i deploy_worker_template; deploy_worker przyjmuje runtime: "auto" oraz packages.
Wszystkie szablony
fastapi— FastAPI (HTTP) (Python, http)pgmq-consumer— Konsument kolejki pgmq (Python) (Python, queue)node-cron— Zadanie cron (Node.js) (Node.js, cron)go-http— Serwer HTTP (Go) (Go, http)bun-http— Serwer HTTP (Bun) (Bun, http)cron-backup-s3— Backup bazy do S3 (cron) (Python, cron)csv-excel-import— Import CSV/Excel do Postgresa (FastAPI) (Python, http)data-sync-api— Synchronizacja z zewnętrznym API (cron) (Python, cron)deno-oak-api— API Oak (Deno 2) (Deno, http)discord-bot— Bot Discord (discord.js) (Node.js, background)dotnet-minimal-api— API CRUD (.NET 9 Minimal API) (.NET, http)elixir-plug-api— API (Elixir, Plug + Bandit) (Elixir, http)email-digest— Dzienny digest e-mail (cron) (Python, cron)embeddings-worker— Worker embeddingów (pgmq + pgvector) (Python, queue)fastapi-supabase-crud— API CRUD (FastAPI) (Python, http)flask-webhook-receiver— Odbiornik webhooków (Flask) (Python, http)go-grpc-service— Usługa gRPC (Go) (Go, http)hono-bun-api— API Hono (Bun) (Bun, http)langgraph-agent— Agent LangGraph (FastAPI) (Python, http)laravel-api— API CRUD (Laravel 12) (PHP, http)media-ffmpeg-pillow— Miniatury i transkodowanie (ffmpeg + Pillow) (Python, http)nestjs-api— API NestJS (TypeScript) (Node.js, http)ocr-tesseract— OCR (Tesseract) (Python, http)pdf-weasyprint— Generator PDF (WeasyPrint) (Python, http)pgmq-tasks— Zadania w tle na pgmq (Celery-like) (Python, queue)rag-api— RAG API (FastAPI + pgvector) (Python, http)rails-api— API CRUD (Rails 7.2) (Ruby, http)report-to-storage— Raport tygodniowy do Storage (cron) (Python, cron)rust-axum-api— API CRUD (Rust, Axum) (Rust, http)scraper-playwright— Scraper stron (Playwright) (Python, http)slack-bot— Bot Slack (Socket Mode) (Node.js, background)spring-boot-api— API CRUD (Spring Boot) (Java, http)stripe-webhook— Webhook Stripe (FastAPI) (Python, http)telegram-bot— Bot Telegram (long polling) (Python, background)websocket-server— Serwer WebSocket (ws) (Node.js, http)
Czasy budowania
Jedno budowanie naraz na hoście; czasy obejmują pobranie obrazów bazowych przy zimnym cache i zależności (zmierzone na VM danych przy obciążeniu 17–23 — równolegle działały inne budowania i bazy klientów; budowanie ograniczone do 2 CPU / 2 GB). Kolejne budowania korzystają z warstw i cache Cargo / Maven / NuGet.
| Szablon | Runtime | Czas budowania | Obraz | Uwagi |
|---|---|---|---|---|
hono-bun-api | bun | 11 s | 331 MB | bun install |
fastapi-supabase-crud | python3.12 | 15 s | 297 MB | uv pip install |
deno-oak-api | deno2 | 25 s | 290 MB | deno cache |
pdf-weasyprint | python3.12 | 55 s | 480 MB | + apt: Pango, fonts |
dotnet-minimal-api | dotnet9 | 62 s | 331 MB | dotnet publish |
spring-boot-api | java21 | 75 s | 515 MB | Maven → fat JAR → JRE |
ocr-tesseract | python3.12 | 77 s | 478 MB | + apt: tesseract (pol, eng), poppler |
nestjs-api | node22 | 115 s | 629 MB | npm install + nest build + prune |
go-grpc-service | go1.24 | 147 s | 37 MB | static binary on Alpine |
scraper-playwright | python3.12 | 170 s | 2.1 GB | playwright install --with-deps chromium |
laravel-api | php8.3 | 187 s | 1.0 GB | composer install on FrankenPHP (cold) |
elixir-plug-api | elixir | 211 s | 587 MB | mix release |
rails-api | ruby3.3 | 211 s | 401 MB | bundle install (multi-stage) |
rust-axum-api | rust | 284 s | 135 MB | cargo build --release, ~250 crates; 28 s after a code change (dependencies are a cached layer) |
Zużycie i rozliczenie
Workery rozliczamy za godziny pracy replik w przeliczeniu na instancję Small (Small = 1, Medium = 2, Large = 8). Płatne plany zawierają miesięczny limit (Pro: 750 godz.). Ustawienia → Zużycie pokazuje panel Workery z ostatnimi 7 dniami i limitem planu; strona zużycia organizacji — sumę miesięczną i nadwyżkę.