···
pns = lib.py.data.services;
marvin = lib.py.data.hosts.marvin.ts.ip4;
+
tsNet = lib.py.data.tsNet;
+
reverseProxyToMarvin = port: ts: {
+
reverse_proxy http://${marvin}:${toString port}
+
${if ts then "tailscale_auth" else ""}
package = pkgs.caddy.withPlugins {
"github.com/caddy-dns/desec@v0.0.0-20240526070323-822a6a2014b2"
+
"github.com/greenpau/caddy-security@v1.1.31"
+
"github.com/tailscale/caddy-tailscale@v0.0.0-20250207163903-69a970c84556"
+
hash = "sha256-rvPZ/Lomx40tvlqqhUBIG9wCHJorN2FGus7gtO7ob/0=";
email = "pyrox@pyrox.dev";
# Just get TLS certs for mailserver
+
"mail.pyrox.dev" = { };
# Redirect old domains -> pyrox.dev
redir https://pyrox.dev{uri} permanent
···
+
"${pns.authentik.extUrl}:443" = reverseProxyToMarvin pns.authentik.port false;
+
"${pns.authentik.extUrl}:80" = reverseProxyToMarvin pns.authentik.port false;
+
"http://${pns.authentik.extUrl}:389" = reverseProxyToMarvin 389 false;
+
"${pns.authentik.extUrl}:636" = reverseProxyToMarvin 636 false;
${pns.vaultwarden.extUrl} = {
···
${pns.jellyfin.extUrl} = {
···
+
reverse_proxy http://${marvin}:${toString pns.git.port}
+
${pns.grafana.extUrl} = {
+
reverse_proxy http://${marvin}:${toString pns.grafana.port}
+
${pns.miniflux.extUrl} = {
+
reverse_proxy http://${marvin}:${toString pns.miniflux.port}
+
${pns.nextcloud.extUrl} = {
+
reverse_proxy http://${marvin}:${toString pns.nextcloud.port}
+
# Nextcloud-Office(Collabora)
+
${pns.nextcloud-office.extUrl} = {
+
reverse_proxy http://${marvin}:${toString pns.nextcloud-office.port}
+
${pns.planka.extUrl} = {
+
reverse_proxy http://${marvin}:${toString pns.planka.port}
+
# Simple Tailscale Hosts
+
"${pns.deemix.tsHost}.${tsNet}" = {
+
bind tailscale/${pns.deemix.tsHost}
+
reverse_proxy http://${marvin}:${toString pns.deemix.port}
+
"${pns.pinchflat.tsHost}.${tsNet}" = {
+
bind tailscale/${pns.pinchflat.tsHost}
+
reverse_proxy http://${marvin}:${toString pns.pinchflat.port}
systemd.services.caddy.serviceConfig.CapabilityBoundingSet = "CAP_NET_BIND_SERVICE";
systemd.services.caddy.serviceConfig.AmbientCapabilities = "CAP_NET_BIND_SERVICE";