Files
hetzner_server/caddy/Caddyfile
2026-04-03 22:03:53 +05:45

116 lines
2.5 KiB
Caddyfile

# Global config
{
email me@sauravdhakal.com.np
acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
# -----------------------------------------------
# PUBLIC services (resolves to your public VPS IP)
# -----------------------------------------------
# blog.sauravdhakal.com.np {
# reverse_proxy blog:3000
# }
#n8n-webhook.sauravdhakal.com.np {
# reverse_proxy n8n:5678
#}
# Public — only webhook endpoint, no UI
n8n.sauravdhakal.com.np {
@public path /webhook/* /webhook-test/*
handle @public {
reverse_proxy localhost:5678
}
handle {
abort # block everything else (UI, API, etc)
}
}
# Private — full n8n UI through VPN
n8n-admin.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:5678
}
# -----------------------------------------------
# VPN-ONLY services (resolves to 100.81.85.182)
# bind tells Caddy to only listen on Netbird interface
# -----------------------------------------------
vault.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8080
}
actual.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8081
}
immich.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8082
}
filebrowser.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8083
}
syncthing.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8384
}
portainer.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:9000
}
uptime.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:3001
}
# Gitea — VPN only, it's your private git server
gitea.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:3000
}
# Woodpecker CI — VPN only
ci.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8000
}
# Your site — public, with caching
sauravdhakal.com.np, www.sauravdhakal.com.np {
root * /home/saurav/site/public
header /static/* Cache-Control "public, max-age=31536000, immutable" # assets forever
header /assets/* Cache-Control "public, max-age=31536000, immutable" # assets forever
# This is where you learn caching
header Cache-Control "public, max-age=3600" # cache 1 hour by default
file_server
encode gzip
}
memos.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:5230
}
dozzle.sauravdhakal.com.np {
bind 100.81.85.182
reverse_proxy localhost:8888
}
#
# glances.sauravdhakal.com.np {
# bind 100.81.85.182
# reverse_proxy localhost:61208
# }