selfhostedops-stack/Caddyfile

44 lines
1,000 B
Caddyfile

# ~$ selfhostedops — Caddyfile
# Automatic HTTPS for every subdomain. Nothing to renew, ever.
{
email {$ACME_EMAIL}
}
git.{$DOMAIN} {
reverse_proxy forgejo:3000
}
wiki.{$DOMAIN} {
reverse_proxy outline:3000
}
vault.{$DOMAIN} {
reverse_proxy vaultwarden:80
}
status.{$DOMAIN} {
reverse_proxy uptime-kuma:3001
}
# Push notifications (episode 6). Websockets and long polling pass through as-is.
ntfy.{$DOMAIN} {
reverse_proxy ntfy:80
}
# n8n has no public route any more - it is reachable over the mesh only (episode 5)
# NetBird control plane (episode 5) - dashboard, API, gRPC, relay, built-in IdP
vpn.{$DOMAIN} {
# Native gRPC (needs HTTP/2 cleartext to backend)
@grpc header Content-Type application/grpc*
reverse_proxy @grpc h2c://netbird-server:80
# Combined server paths (relay, signal, management, OAuth2)
@backend path /relay* /ws-proxy/* /api/* /oauth2/*
reverse_proxy @backend netbird-server:80
# Dashboard (everything else)
reverse_proxy /* netbird-dashboard:80
}