Self-host with Docker
Deploy the Vupt cloud surface (API + Postgres + R2-compatible storage) via the published docker-compose stack.
Self-host with Docker
The Vupt cloud surface (API, Cloud MCP, billing, signed audit log) ships as a docker-compose stack. The desktop app talks to your self-hosted endpoint by setting VUPT_API_URL in ~/.vupt/config.toml.
Prerequisites
- Docker 25+
- Docker Compose v2.20+
- A Postgres-compatible store (the stack ships one, or you can point at managed Postgres)
- An S3-compatible bucket for backups (the stack ships MinIO)
Quick start
git clone https://github.com/Riiquezz/vuptdev.git
cd vuptdev/docker
cp .env.example .env # fill in secrets
docker compose -f stack.yml up -d
The default stack listens on http://localhost:8080. Point your desktop client at it:
# ~/.vupt/config.toml
[cloud]
api_url = "http://localhost:8080"
Persistence
| Service | Volume |
|---|---|
| Postgres | vupt-postgres-data |
| MinIO (S3) | vupt-minio-data |
| Audit log | vupt-audit-data |
Back up via the standard Postgres pg_dump cadence and a MinIO mirror to off-site storage.
TLS termination
The compose stack does NOT include a reverse proxy. Front it with whatever you already use (Caddy, Nginx, Traefik, Cloudflare Tunnel). The API expects to be reachable at a stable URL — configure CORS via the VUPT_ALLOWED_ORIGINS environment variable.
Upgrade flow
docker compose pull
docker compose up -d
Migrations are applied automatically on container start. Roll back by pinning VUPT_API_VERSION in .env to the previous tag and running docker compose up -d again.
For Kubernetes deployments, see Helm chart. For air-gapped setups, see Air-gapped mode.