nixcfg/systems/x86_64-linux/mx/headscale.nix
Harald Hoyer 2d0d03f845 chore(nix): enhance Nginx proxy settings for Headscale
- Added extra HTTP headers and security configurations in the Nginx proxy for Headscale.
- Improves websocket handling, security headers, and HTTPS redirection.
2025-11-24 13:54:52 +01:00

48 lines
1.4 KiB
Nix

{ config, ... }:
let
domain = "headscale.hoyer.xyz";
in
{
services = {
headscale = {
enable = true;
address = "0.0.0.0";
port = 8080;
settings = {
server_url = "https://${domain}";
dns = {
base_domain = "hoyer.tail";
};
oidc = {
allowed_domains = [ "hoyer.xyz" ];
client_id = "UgQYtXftYvB9ua4cuyZ9NBvaknQfN76pPnf50pDhqghdb87g9tFcuSMiTLVje3R7";
client_secret_path = "/var/lib/headscale/client_secret";
issuer = "https://nc.hoyer.xyz";
};
};
};
nginx.virtualHosts.${domain} = {
useACMEHost = "hoyer.xyz";
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.headscale.port}";
proxyWebsockets = true;
extraConfig = ''
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $server_name;
proxy_redirect http:// https://;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
'';
};
};
};
environment.systemPackages = [ config.services.headscale.package ];
}