Koyeb is a serverless PaaS that can run the prebuilt LibreDB Studio Docker image directly from GHCR — no rebuild, no Dockerfile.
There are two ways to get LibreDB Studio onto Koyeb:
- Deploy to Koyeb button (self-service, already live in the repo README).
- Koyeb One-Click Apps catalog listing (curated by Koyeb — see
CATALOG_SUBMISSION.md).
The button encodes the whole service definition in the app.koyeb.com/deploy
query string:
| Setting | Value |
|---|---|
| Source | Docker image ghcr.io/libredb/libredb-studio:latest |
| Port | 3000 (HTTP, path /) |
| Health check | TCP on 3000, 5s grace / 30s interval |
| Instance | free (scale-to-zero after idle) |
| Region | fra |
| Storage | STORAGE_PROVIDER=local (browser-side, default) |
Because the deploy button URL is long, edit it in the repo README rather than
by hand. URL-encode every special character (@ → %40, : → %3A,
[ → %5B, ] → %5D, = inside a value → %3D).
- No secret generation. Unlike Railway's
${{ secret(48) }}, Koyeb cannot auto-generate values. The user must set a strongJWT_SECRET(32+ chars) and realADMIN_PASSWORD/USER_PASSWORDin the deploy form before launching. The prefilled values in the button are placeholders only. - Ephemeral filesystem. Koyeb instances do not have a persistent disk in the
button flow, so SQLite-on-disk storage (
STORAGE_PROVIDER=sqlite) will reset on every redeploy/sleep. The button therefore defaults toSTORAGE_PROVIDER=local(connection metadata kept in the browser). - Persistence option. For storage that survives redeploys, set
STORAGE_PROVIDER=postgresandSTORAGE_POSTGRES_URLto a Koyeb managed Postgres or Neon connection string. - Scale-to-zero. The
freeinstance sleeps when idle and wakes on the next request (a brief cold start). Fine for demos and personal use.
See the main README environment table for the full list. Minimum required for a working Koyeb deploy:
| Variable | Notes |
|---|---|
JWT_SECRET |
32+ chars, set your own |
ADMIN_EMAIL / ADMIN_PASSWORD |
admin login |
USER_EMAIL / USER_PASSWORD |
standard user login |
NEXT_PUBLIC_AUTH_PROVIDER |
local (default) or oidc |
STORAGE_PROVIDER |
local (default); postgres for persistence |
The button pins :latest, but a catalog listing pins a specific tag. On each
release, update the image tag in the catalog submission (same manual-bump
caveat as the Railway and CapRover Docker-image templates).