Dreamer Docs
Dreamer is a self-hosted PaaS that runs entirely on one box you own — GitHub import, automatic framework detection, a real build pipeline, and two independent deployment runtimes (static files on a MinIO object store, server-rendered apps as Docker containers), all fronted by a routing-aware reverse proxy behind nginx.
This isn't a marketing site. It's the same documentation style you'd expect from Vite, Next.js, or Vercel's own docs — how each piece actually works, why it's built the way it is, and enough detail that you could rebuild it yourself from these pages alone.
Start here
If you're new to this system, read these in order:
- Architecture Overview — the whole
system in one page: every container, how they talk to each other, and
the full lifecycle of a request from
git pushto a live URL. - Authentication — the single-admin model, the one-time setup endpoint, JWT access tokens, rotating refresh tokens, session management.
- Projects & the Import Wizard — turning a GitHub repo into a Project row: slugs, ownership, settings.
- Framework Detection — how a repo gets turned into a build config: lazy directory fetching, the preset table, the detection algorithm, and how you override what was auto-detected.
- Deployments — the shared pipeline both
deployment types run through, then split into two from-scratch deep
dives:
- Static deployments — MinIO
storage, how
reverse-proxyserves it. - Dynamic (SSR) deployments — local image builds, health-checked container swaps.
- Static deployments — MinIO
storage, how
- reverse-proxy — the single ingress point for every deployed app, request by request.
Other references
- Self-Hosting Guide — installing and operating
the whole stack on your own VPS, from
install.shto day-2 operations.
The nine containers, at a glance
| Service | What it does | Reachable from |
|---|---|---|
nginx | TLS termination for deployed apps + custom domains | The internet, *.yourdomain.com only |
frontend | The dashboard — Next.js | 127.0.0.1:3000 on the box only |
api-server | REST API + realtime gateway; owns the Docker build/run engine | 127.0.0.1:8000 on the box only |
build-worker | Dequeues build jobs, launches build-engine containers | Nothing external |
build-engine | Not a long-running service — launched fresh per build, exits when done | Nothing external |
reverse-proxy | Routes every deployed app's traffic to MinIO or to its app container | Nothing external (nginx proxies to it) |
postgres | Every Project, Deployment, User row | Nothing external |
redis | Build queue, log pub/sub, routing cache | Nothing external |
minio | Object storage for static deployment output | Nothing external |
The dashboard being loopback-only — reachable via an SSH tunnel, not a public hostname — is deliberate, not an oversight. See the Architecture Overview for why each surface of the system gets exactly the network exposure it needs and no more.