DNS includes wildcard support, so I can easily use anything.mydomain.net
After briefly trying out a couple of somewhat ingrated Caddy projects others have done, I decided they were too specific to their set-ups and did not make my life easier. I tossed them out and went simple. I wanted something super easy to understand, and thus easy to troubleshoot.
First I set it up in Docker. I created a really, really simple docker compose file:
version: "3.7"
services:
caddy:
image: caddy:alpine
restart: unless-stopped
ports:
- "1080:80" # Because Synology DSM reserves 80 for itself
- "10443:443" # Because Synology DSM reserves 443 for itself
- "10443:443/udp" # Because Synology DSM reserves 443 for itself
volumes:
# next four lines are default
# - $PWD/Caddyfile:/etc/caddy/Caddyfile
# - $PWD/site:/srv
# - caddy_data:/data
# - caddy_config:/config
- /var/docker/caddy/config/Caddyfile:/etc/caddy/Caddyfile
- /var/web:/srv # serve this by default?
- /var/docker/caddy/data:/data
- /var/docker/caddy/config:/config
volumes:
data:
external: true
config:
external: true
(If the machine you are running Caddy on doesn't reserve ports 80 and 443 for itself like Synology DSM does, you don't need the ridiculous high ports I mapped. Just do 80:80 and 443:443.)
Then I created a simple Caddyfile.
web.fakeme.net, www.fakeme.net {
# This connects to the default Synology web service
reverse_proxy 192.168.2.15:80
}
This tells Caddy: When you get a request for web or www, send it to the machine at 192.168.2.15 using port 80.
Then I added to it, one service at a time to make sure things worked at each step