Jika Anda menjalankan aplikasi di Docker containers, Anda butuh reverse proxy di depannya. Caddy adalah pilihan terbaik untuk self-hosting karena auto-HTTPS dan konfigurasi yang minimal.
Kenapa Caddy?
Perbandingan Caddy vs Nginx untuk reverse proxy:
- Caddy — 3 baris konfigurasi, auto-HTTPS, zero maintenance
- Nginx — 15+ baris konfigurasi, manual SSL setup, perlu Certbot + cron
Install Caddy
# Ubuntu/Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Konfigurasi Dasar
Buat file /etc/caddy/Caddyfile:
# Reverse proxy untuk aplikasi di port 3000
example.com {
reverse_proxy localhost:3000
}
# Multi-service setup
api.example.com {
reverse_proxy localhost:8080
}
dashboard.example.com {
reverse_proxy localhost:3001
}
Docker Compose + Caddy
Kombinasi paling powerful untuk self-hosting:
version: '3.8'
services:
caddy:
image: caddy:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
app:
image: myapp:latest
expose:
- "3000"
restart: unless-stopped
volumes:
caddy_data:
caddy_config:
Wild Card SSL
Caddy mendukung wildcard SSL dengan DNS challenge:
*.example.com {
tls {
dns cloudflare {env.CF_API_TOKEN}
}
reverse_proxy localhost:3000
}
Troubleshooting
- Sertifikat tidak muncul? — Pastikan port 80 dan 443 terbuka di firewall
- 502 Bad Gateway? — Cek apakah backend service berjalan di port yang benar
- Caddy restart sendiri? — Cek logs:
journalctl -u caddy -f
Untuk perbandingan lengkap Caddy vs Nginx, baca Caddy vs Nginx di 2026. Untuk setup server dari awal, lihat panduan self-hosting lengkap.