Self-host
Self-host on Docker
Run VegaStack Pages on Docker or Node with SQLite, filesystem object storage, and the same MCP endpoint.
Docker runs the same Astro app through the Node adapter. D1 becomes SQLite and R2 becomes filesystem object storage under /data.
What gets swapped
| Cloudflare | Node / Docker |
|---|---|
| Workers + Astro SSR | Node process running the same Astro SSR build |
| D1 | SQLite (includes app sessions) |
| R2 | Local filesystem object storage under /data/objects |
| Console by default; AWS SES when configured |
The renderer, MCP endpoint, comments, permissions, and search use the same application services.
Quickstart
export VPG_SETUP_TOKEN="$(openssl rand -base64 32)"
docker compose --file install/docker/docker-compose.yml up --build
Open http://localhost:4321/app/setup and enter VPG_SETUP_TOKEN.
The MCP endpoint is http://localhost:4321/mcp.
For a production URL:
export VPG_BASE_URL=https://pages.example.com
export VPG_SETUP_TOKEN="$(openssl rand -base64 32)"
docker compose --file install/docker/docker-compose.yml up --build -d
Persistence
The Compose file mounts /data as a named volume:
/data/state/vegastack-pages.sqlitestores metadata, comments, permissions, sessions, versions, search, and audit logs./data/objectsstores page source, attachments, exports, and object-backed artifacts.
Back up the SQLite file and object directory together.
Configuration
Common Docker variables are documented in install/docker/README.md. The broader environment model is in docs/specs/008-configuration-env.md.
Last updated