caddy
Install Caddy on Ubuntu/Linux
sudo apt update && sudo apt upgrade -y
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /usr/share/keyrings/caddy-stable-archive-keyring.gpg >/dev/null
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 -y
caddy version
Start Caddy
sudo systemctl start caddy
Stop Caddy
sudo systemctl stop caddy
Restart Caddy
sudo systemctl restart caddy
Check Caddy Status
sudo systemctl status caddy
View Caddy Logs
Validate Caddyfile
caddy validate --config /etc/caddy/Caddyfile
Reload Caddy Without Downtime
sudo caddy reload --config /etc/caddy/Caddyfile
Caddyfile Location
Edit Caddyfile
sudo nano /etc/caddy/Caddyfile
Fix Caddyfile Permissions
sudo chown -R caddy:caddy /etc/caddy
Mount Caddyfile in Docker
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
Docker Compose for Caddy
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- proxy
networks:
proxy:
driver: bridge
volumes:
caddy_data:
caddy_config:
Caddyfile Example
:8080 {
handle_path /api/* {
reverse_proxy backend:8000
}
handle_path /ws/* {
reverse_proxy backend:9000 {
transport http {
versions 1.1
}
}
}
handle {
respond "Server Alive" 200
}
}
api.a.com {
reverse_proxy api:8000
}
api.b.com {
reverse_proxy api2:8000
}
Reload Caddy in Docker
docker exec -it caddy caddy reload --config /etc/caddy/Caddyfile
View Caddy Logs in Docker
Important Naming Rule
reverse_proxy service_name:port