Setting Up a Reverse Proxy
Right now your tools are running on ports like :3001 or :8080. A reverse proxy is the traffic cop that maps a domain like uptime.yourdomain.com to your server’s local port and handles SSL automatically.
Which one should I pick?
- Caddy: Best for 99% of people. Zero-config SSL, human-readable config, extremely fast.
- Nginx Proxy Manager: Best if you want a web UI to click and manage your domains.
- Traefik: Best if you want a “hands-off” approach that auto-discovers new containers as you spin them up (complex but powerful).
Caddy Setup
Caddy is the “batteries included” proxy. It just works.
1. The Docker Compose
Create a folder for Caddy and add this docker-compose.yml:
version: '3.8'
services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:2. The Caddyfile
In the same folder, create a file named Caddyfile:
uptime.yourdomain.com {
reverse_proxy localhost:3001
}
plausible.yourdomain.com {
reverse_proxy localhost:8000
}3. Start it
docker compose up -d🔒 A Note on SSL/TLS
Every proxy above handles SSL certificates via Let’s Encrypt automatically.
Crucial Step: Before you start your proxy, your domain’s DNS A Record must point to your server’s public IP address. If the DNS isn’t pointing correctly, Let’s Encrypt will fail to issue a certificate.
Next Steps
→ Your First Deployment — Connect your tools to your new proxy. → SSL/TLS Deep Dive — How it works under the hood.