Quick start
VPS / production (recommended)
Section titled “VPS / production (recommended)”No git clone and no Node on the host — pull the published image and platform deps:
curl -sSL https://raw.githubusercontent.com/kielerdotdev/deplow/main/deploy/install.sh | bashOpen http://localhost:3000, create the first user, then configure Domains.
Upgrade later (preserves SQLite / Redis volumes):
curl -sSL https://raw.githubusercontent.com/kielerdotdev/deplow/main/deploy/install.sh | bash -s updatePin a release: DEPLOW_VERSION=v1.2.3 curl -sSL …/install.sh | bash.
Default install directory: /opt/deplow (DEPLOW_HOME to override). The script starts BuildKit and prints a gVisor checklist — user app deploys require runsc by default.
Optional public HTTPS: set CLOUDFLARE_TUNNEL_TOKEN in /opt/deplow/.env, then:
docker compose -p deplow --project-directory /opt/deplow --profile edge up -dDevelopment: host installer
Section titled “Development: host installer”git clone <your-repo-url> Hostrigcd Hostrigbash scripts/install.shpnpm devThe installer checks Docker/Node/pnpm, starts BuildKit, installs Railpack when missing, installs/verifies gVisor (runsc), runs pnpm install, starts compose services, and applies the control-plane schema. Open http://localhost:3000.
If gVisor is not ready, the script exits non-zero and prints next steps — deploys require runsc by default (DEPLOW_APP_RUNTIME=runc is an unsandboxed escape hatch only).
Development: manual path
Section titled “Development: manual path”1. Clone and install
Section titled “1. Clone and install”git clone <your-repo-url> Hostrigcd Hostrigpnpm install2. Start platform services
Section titled “2. Start platform services”pnpm infra:upThis starts Caddy, platform Redis, and related compose services. Configure DEPLOW_S3_* for MinIO or R2. App Postgres/Redis are created later as project services.
3. Apply control-plane schema
Section titled “3. Apply control-plane schema”pnpm db:pushThe control plane uses SQLite (packages/db/data/deplow.db by default).
4. Configure environment
Section titled “4. Configure environment”cp apps/web/.env.example apps/web/.envSet at minimum:
BETTER_AUTH_SECRET— auth signing and encryption fallbackBUILDKIT_HOST=docker-container://buildkitif you use the BuildKit container
5. Start the control plane
Section titled “5. Start the control plane”pnpm devOpen the dashboard at http://localhost:3000.
First deploy loop
Section titled “First deploy loop”- Domains — set base domain (e.g.
apps.localhostorapps.example.com), enable auto subdomains. v1 URLs are platform wildcard only. - Create project → add a web service (+ postgres/redis if needed) → bind → Deploy.
- Optional public HTTPS: Cloudflare Tunnel + compose
edgeprofile (TLS at Cloudflare).
Smoke test (optional)
Section titled “Smoke test (optional)”With Docker and platform services running (dev):
pnpm e2eThis exercises image deploy, backup, and project destroy against the live API.