Self-Hosted Deployment (VPS)
The Curate-Me platform is designed to run on a single VPS using Docker Compose with Caddy as a reverse proxy handling automatic HTTPS certificate provisioning.
Production URLs
| Service | URL |
|---|---|
| Dashboard | https://dashboard.curate-me.ai |
| API (Gateway + B2B) | https://api.curate-me.ai |
| Documentation | https://docs.curate-me.ai |
Requirements
- VPS with at least 4 GB RAM (Hetzner CX31 or equivalent)
- Ubuntu 22.04+ or Debian 12+
- Docker Engine 24+ and Docker Compose v2
- Domain DNS records pointing to the VPS IP address
- SSH access configured with key-based authentication
Architecture Overview
Internet
|
v
Caddy (reverse proxy, auto HTTPS)
|
+---> gateway (FastAPI, port 8002) ← Core product: LLM proxy + governance
+---> dashboard (Next.js, port 3001) ← Ops console
+---> backend-b2b (FastAPI, port 8001) ← Dashboard API
+---> docs (Nextra, port 3003) ← Documentation site
|
+---> MongoDB (port 27017, internal)
+---> Redis (port 6379, internal)
+---> Celery Worker (background tasks)
+---> Celery Beat (scheduled tasks)All services run as Docker containers orchestrated by Docker Compose. Caddy handles TLS termination and routes requests to the appropriate container based on the hostname.
Deploying from Your Local Machine
The platform includes a deployment script that builds, pushes, and deploys from your development machine.
# Deploy all changed services
./scripts/deploy-to-vps.sh
# Deploy only the dashboard
./scripts/deploy-to-vps.sh --dashboard
# Deploy only the backend services (Gateway + B2B API)
./scripts/deploy-to-vps.sh --backend
# Deploy only the docs site
./scripts/deploy-to-vps.sh --docs
# Full rebuild of all services (no Docker cache)
./scripts/deploy-to-vps.sh --full
# Skip git push (deploy whatever is on the remote)
./scripts/deploy-to-vps.sh --no-pushThe script performs the following steps:
- Pushes the current branch to the remote repository.
- SSHs into the VPS and pulls the latest code.
- Builds Docker images for the selected services.
- Restarts the updated containers with zero-downtime rolling updates.
- Runs health checks to verify the deployment.
VPS-Side Management
After SSHing into the VPS (ssh curateme@46.224.88.8), use the management script in the ~/platform directory.
Check Service Status
./deploy/vps/deploy.sh statusDisplays the running state, uptime, and resource usage for all containers.
View Logs
# All services
./deploy/vps/deploy.sh logs
# Specific service
./deploy/vps/deploy.sh logs gateway
./deploy/vps/deploy.sh logs dashboard
./deploy/vps/deploy.sh logs caddyHealth Check
./deploy/vps/deploy.sh healthRuns HTTP health checks against all service endpoints and reports their status.
Manual Update
./deploy/vps/deploy.sh updatePulls the latest code from the remote, rebuilds changed images, and restarts updated containers.
Key Deployment Files
| File | Purpose |
|---|---|
scripts/deploy-to-vps.sh | Local deployment script (run from your machine) |
deploy/vps/deploy.sh | VPS-side deployment and management |
docker-compose.production.yml | Production Docker Compose configuration |
Caddyfile | Reverse proxy and HTTPS configuration |
Rollback
To roll back to a previous deployment, SSH into the VPS and check out the previous commit:
ssh curateme@46.224.88.8
cd ~/platform
git log --oneline -10 # Find the commit to roll back to
git checkout {commit_sha}
./deploy/vps/deploy.sh update