Skip to Content
DeploymentSelf-Hosted Deployment (VPS)

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

ServiceURL
Dashboardhttps://dashboard.curate-me.ai
API (Gateway + B2B)https://api.curate-me.ai
Documentationhttps://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-push

The script performs the following steps:

  1. Pushes the current branch to the remote repository.
  2. SSHs into the VPS and pulls the latest code.
  3. Builds Docker images for the selected services.
  4. Restarts the updated containers with zero-downtime rolling updates.
  5. 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 status

Displays 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 caddy

Health Check

./deploy/vps/deploy.sh health

Runs HTTP health checks against all service endpoints and reports their status.

Manual Update

./deploy/vps/deploy.sh update

Pulls the latest code from the remote, rebuilds changed images, and restarts updated containers.

Key Deployment Files

FilePurpose
scripts/deploy-to-vps.shLocal deployment script (run from your machine)
deploy/vps/deploy.shVPS-side deployment and management
docker-compose.production.ymlProduction Docker Compose configuration
CaddyfileReverse 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