system/roles/reverse-proxy.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | {
pkgs,
...
}:
{
imports = [
../settings/configuration/nur.nix
];
services.caddy = {
package = pkgs.nur.repos.xyenon.caddy.withPlugins {
plugins = [
"github.com/caddyserver/cache-handler@v0.16.0"
"github.com/mholt/caddy-l4@v0.0.0-20260212155620-dd12cc413469"
"github.com/tailscale/caddy-tailscale@v0.0.0-20260106222316-bb080c4414ac"
];
hash = "sha256-A+wDNJijfD1pnOePXCVMXYzRNxf4Fmpbq2rJG+FMstM=";
};
globalConfig = ''
cache
servers {
listener_wrappers {
layer4 {
@ssh ssh
route @ssh {
proxy localhost:22
}
route
}
tls
}
}
tailscale {
tags tag:app
}
'';
};
users.groups.webservice = {
members = [ "caddy" ];
};
systemd.tmpfiles.rules = [
# setgid bit (2)
# sticky bit (4)
"d /run/web/ 6770 caddy webservice -"
];
systemd.services.caddy.serviceConfig = {
ReadWritePaths = [ "/run/web" ];
};
}
|