Show HN: DCD – Deploy Docker Compose apps to any VPS with one command

4 months ago 19

DCD in action - deploy in seconds

Deploy your Docker app to production in one command ⚡

💡 The Problem Every Developer Knows

You've built something amazing locally. docker-compose up works perfectly. Now you need to deploy it...

Option 1: Managed Platforms

  • 💸 Expensive as you scale
  • 🔒 Vendor lock-in
  • ⚙️ Limited customization
  • 🚫 Not all apps supported

Option 2: Complex CI/CD

  • 📚 Hours learning Kubernetes/Docker Swarm
  • 🔧 Complex pipeline setup
  • 🐛 More things to break
  • ⏰ Weeks to get right

What if there was a third way?

✨ Meet DCD - Your Deploy Button for Any Server

DCD gives you the simplicity of Heroku with the power of your own server. Deploy Docker Compose apps to any VPS with a single command.

# That's it. Your app is live. 🎉 dcd up [email protected]

Perfect for:

  • 🏗️ Personal projects that outgrew localhost
  • 💡 Side hustles that need production deployment
  • 🚀 Startups wanting infrastructure control
  • 👨‍💻 Developers who value simplicity over complexity

🔥 Why Developers Love DCD

🎯 Zero Configuration Deployment

No YAML hell, no pipeline setup. If it runs with docker-compose, it deploys with DCD.

From code change to live production in under 30 seconds. No build queues, no waiting.

🔒 Your Infrastructure, Your Rules

Deploy to any Linux server you control. Keep your data, control your costs.

Drop-in action for automatic deployments. Perfect CI/CD in 5 lines of YAML.

$5/month VPS vs $20+/month managed platform. DCD pays for itself immediately.

# macOS brew install g1ibby/dcd/dcd # Other platforms cargo install dcd

Or download from releases

# 1. Have a docker-compose.yml? ✅ # 2. Have SSH access to a server? ✅ # 3. Deploy! dcd up [email protected] # That's literally it. Your app is live!

Setup Automatic Deployments

Add this to .github/workflows/deploy.yml:

- name: Deploy to production uses: g1ibby/dcd/dcd-deploy@v1 with: target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}

Push to main = instant deployment

🌟 Real-World Success Story

Why I Built DCD - My HomeLLM Deployment Story

I created DCD to solve my own deployment frustrations while building HomeLLM - a self-hosted AI platform with Open WebUI, LiteLLM proxy, PostgreSQL, and Traefik.

The Pain Before DCD: Every deployment was a manual nightmare:

ssh [email protected] cd /opt/homellm git pull origin main docker-compose down docker-compose pull docker-compose up -d

This process took 5-10 minutes and often failed. I avoided deploying updates, which meant bugs stayed unfixed and features took weeks to reach production.

After Building DCD:

The transformation:

  • 10x faster
  • 🔄 100% reliable
  • 🚀 Deploy confidence
  • 🎯 Focus on features

See the live deployment workflow →

Now HomeLLM automatically deploys every time I push to main. What used to be a stressful weekend task is now a seamless part of my development flow.

The Side Project That Became Profitable

Before DCD:

# Every deployment was a nightmare ssh user@server git pull docker-compose down docker-compose pull docker-compose up -d

With DCD:

Result: Went from deploying once a week (too scary) to deploying multiple times per day. Shipped features faster, caught bugs earlier, grew revenue 3x.

  • 🐳 Any Docker Compose app
  • 🌐 Web apps (React, Vue, Next.js...)
  • 🗄️ Full-stack apps with databases
  • 🤖 AI/ML applications
  • 📊 Data analytics platforms
  • 🔗 API services and microservices
  • 🐧 Ubuntu/Debian servers
  • ☁️ Any VPS (DigitalOcean, Linode, AWS EC2...)
  • 🏠 Self-hosted servers
  • 🔒 Private infrastructure
📋 Full Command Reference
  • dcd analyze - Preview what will be deployed
  • dcd up <target> - Deploy or update your app
  • dcd status <target> - Check deployment status
  • dcd destroy <target> - Clean removal
-f, --file <FILES>... Docker Compose files -e, --env-file <FILES>... Environment files -i, --identity <KEY> SSH private key (Auto-detects ~/.ssh/id_rsa or ~/.ssh/id_ed25519 if not specified) -w, --workdir <DIR> Remote working directory -v, --verbose Debug output
# Multiple compose files dcd -f docker-compose.yml -f docker-compose.prod.yml up user@server # Custom SSH key and port dcd -i ~/.ssh/deploy_key up [email protected]:2222 # Different environment dcd -e .env.production up [email protected]
🔄 GitHub Actions Integration
name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: g1ibby/dcd/dcd-deploy@v1 with: target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
- uses: g1ibby/dcd/dcd-deploy@v1 with: command: up target: ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} compose_files: "docker-compose.yml docker-compose.prod.yml" env_files: ".env.prod" ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} remote_dir: "/opt/myapp" no_health_check: false
jobs: deploy: environment: production # GitHub environment with secrets env: DATABASE_URL: ${{ secrets.DATABASE_URL }} API_KEY: ${{ secrets.API_KEY }}
⚙️ Technical Details
  1. Analyzes your Docker Compose configuration locally
  2. Syncs necessary files to your server via SSH/SFTP
  3. Installs Docker if needed (optional)
  4. Deploys using docker compose up
  5. Verifies health checks pass
  6. Reports success or failure
  • Automatically detects referenced files in volumes
  • Syncs only what's needed
  • Preserves file permissions
  • Creates backups before updates
  • Scans compose files for variable usage
  • Sources from local environment
  • Generates .env.dcd file for remote deployment
  • Secure handling of secrets
  • Uses SSH key authentication
  • Files transferred over encrypted SFTP
  • No credentials stored on remote server
  • Configurable working directories

Star this repo if DCD helps your deployments! ⭐

Open an issue - we respond fast!

Join discussions and help shape DCD's future.

brew install g1ibby/dcd/dcd

Get the latest release for your platform:

🚀 Ready to Deploy Faster?

Stop spending hours on deployment setup. Start shipping features.

# Install DCD brew install g1ibby/dcd/dcd # macOS # cargo install dcd # Other platforms # Deploy your app dcd up [email protected]

While DCD handles most Docker Compose deployments perfectly, there are a few current limitations:

  • Build Context: Services using build: directive aren't supported yet. Use pre-built images from registries instead.
  • Platform Support: Currently optimized for Debian/Ubuntu systems. Other Linux distributions may need adjustments.

Built with 🦀 Rust for maximum performance and reliability

Read Entire Article