# Example 05: Dokploy / Docker Deployment Production-ready docker-compose configuration for deploying the Shade Prekey Server to Dokploy or any Docker host. ## What's here - `docker-compose.yml` — single-service deployment with persistent SQLite - `docker-compose.postgres.yml` — alternative with PostgreSQL backend - Persistent volume for the SQLite database - Health checks, restart policy, structured logging ## Deploy ```bash # SQLite (zero-config, recommended for small deployments) docker compose up -d # PostgreSQL (for shared databases or HA) docker compose -f docker-compose.postgres.yml up -d ``` After deployment, the prekey server is reachable at `http://localhost:3900`: ```bash # Health check curl http://localhost:3900/health # Metrics curl http://localhost:3900/metrics # Anonymous bundle fetch (works without auth) curl http://localhost:3900/v1/keys/bundle/some-address ``` ## Reverse proxy For TLS termination, put the prekey server behind a reverse proxy like Caddy or Traefik. Dokploy handles this automatically when you set the domain in the project settings. ## Backups The persistent volume `shade-data` contains the SQLite database. Back it up with: ```bash docker run --rm -v shade-data:/data -v $(pwd):/backup alpine \ tar czf /backup/shade-data-$(date +%Y%m%d).tar.gz /data ``` For PostgreSQL, use standard `pg_dump` against the `postgres` service.