diff --git a/constants.nix b/constants.nix index a647979..cfa6d05 100644 --- a/constants.nix +++ b/constants.nix @@ -1,5 +1,6 @@ rec { domain = "sid.ovh"; + intranet = "intra." + domain; hosts = { sid = { ip = "100.64.0.6"; @@ -24,7 +25,7 @@ rec { port = 8085; }; netdata = { - fqdn = "netdata.intra." + domain; + fqdn = "netdata." + intranet; port = 19999; }; open-webui-oci = { @@ -40,11 +41,11 @@ rec { port = 1200; }; vaultwarden = { - fqdn = "pw.intra." + domain; + fqdn = "pw." + intranet; port = 8222; }; webdav = { - fqdn = "dav.intra." + domain; + fqdn = "dav." + intranet; port = 8080; }; }; diff --git a/hosts/sid/secrets/secrets.yaml b/hosts/sid/secrets/secrets.yaml index 5df246e..9612a65 100644 --- a/hosts/sid/secrets/secrets.yaml +++ b/hosts/sid/secrets/secrets.yaml @@ -32,6 +32,7 @@ mailserver: vaultwarden: ENC[AES256_GCM,data:nSiiyurI0pNGlJiHpgu5jUQIq688IbPKlJCvx4jrFN9TwIY+kfVOaO4KWKkavBYfMZqMuEBr7EAdRULS,iv:OpgfXl1uYLgjOGDTkXFj/wPFUoE6uK89gtXLsB2x6gE=,tag:knJkNQnRCNcc/2nKBYdVCw==,type:str] radicale: sid: ENC[AES256_GCM,data:/OgIrXnGttIymGw98feiUjKPOIlrgRIC0TNCdBnuJOiA0RzbF0b9SMVzwEZiTEmS82g2lSvxQkE4kZjeOgOC0RLvCyZAmtWojq+g1pN0qhEkhwH0Qtu9wNnSYHuRqh2E5nWzHNGl/eF6zQ==,iv:5XtlyXjpB+XrVvJ7IoM7Gu63xA8vYrcJjUjLPmOMAIU=,tag:SAuYl/wzxnINyVWn9nI5yA==,type:str] +hetzner-dns-api-key: ENC[AES256_GCM,data:KQooOZjQMtCSVqMI8yKVEk0xebTEuNs5WsxTDC9kcXdGZIgq8ZIEk5ku94EV95i0ad9y5Zx0ozt7aWcNHiMMfQ==,iv:jssQ7PejT5awmeMowdSIEFKDfLW7PWvsd++lh9/MlXs=,tag:UoNRz9neDzDxDjmGmBNPjA==,type:str] sops: age: - recipient: age19yeqvv28fgrtk6jsh3xyaf0lch86kna6rcz4dwe962yyyyevu30sx474xy @@ -52,7 +53,7 @@ sops: RzhnczA0S1pxcXZncGpWVHNYQW96L28K+ytH3PPyg4+wibpAQhp02RiSfZ83EDRB UJ8UV1d+51D0e2A1sI95r2AzDj4jfwUnI+LYDPC/qEpsu5LFLGVyeg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-04-03T11:37:47Z" - mac: ENC[AES256_GCM,data:5f4/mIJzzvKhZjES4WA0Ds2g642FDS03oSmH4dUi0pnF01aQD75eZ0HI3vcdks6kY+b5xyH5BJ283cgrnIiG2oPjYsIt8ULFnXZql31QQJArirYC35qf5lIiN4gC0ObzC5nSTR4rzrqpWtmf2vrvxDXWftK+JdwPyPjk/4IAu50=,iv:tfHDum7KB+nYQnxfukm+w/BotWW+Itmn11yy6O4V6oE=,tag:0/sFkH9Z2ZP2wzVfJEYFqA==,type:str] + lastmodified: "2026-04-03T13:35:11Z" + mac: ENC[AES256_GCM,data:fUOfIHeXjpDe57Q5sTYFlAefk1JpX2uvwmgpr9Mvl7pH47NBJUnQjC2NH5e89gc08H91ZYD8T4xE2e/E0zBb4rnW6geVpTPfV7NTj/HPOpRZCj/4ikMv/u6cFDODSThTRRRm4rBhFv2jpNR9Ez50OxOxbOGXILEAaQ1yytyVQKs=,iv:5F85fPxdab1KKHN978stzLhFTOH811+qwFZ0mP13Dx0=,tag:euM1ecdQX1d5L9ViZZknQw==,type:str] unencrypted_suffix: _unencrypted version: 3.12.1 diff --git a/hosts/sid/services/headscale.nix b/hosts/sid/services/headscale.nix index 1647e6a..3faf0b0 100644 --- a/hosts/sid/services/headscale.nix +++ b/hosts/sid/services/headscale.nix @@ -1,6 +1,5 @@ { inputs, - constants, ... }: @@ -10,32 +9,6 @@ inputs.synix.nixosModules.headscale ]; - services.resolved.enable = false; - networking.resolvconf.enable = false; - - networking.nameservers = [ constants.hosts.sid.ip ]; - - services.coredns = { - enable = true; - config = with constants; '' - .:53 { - bind ${hosts.sid.ip} - hosts { - ${hosts.rx4.ip} ${services.vaultwarden.fqdn} - ${hosts.rx4.ip} ${services.webdav.fqdn} - ${hosts.rx4.ip} rx4.tail - ${hosts.sid.ip} sid.tail - ${hosts.vde.ip} vde.tail - fallthrough - } - forward . 1.1.1.1 - cache - log - errors - } - ''; - }; - services.headplane = { enable = true; reverseProxy = { diff --git a/hosts/sid/services/nginx.nix b/hosts/sid/services/nginx.nix index 0bc8752..98fb554 100644 --- a/hosts/sid/services/nginx.nix +++ b/hosts/sid/services/nginx.nix @@ -1,6 +1,7 @@ { inputs, constants, + config, lib, ... }: @@ -15,6 +16,41 @@ in inputs.synix.nixosModules.nginx ]; + services.resolved.enable = false; + networking.resolvconf.enable = false; + + networking.nameservers = [ constants.hosts.sid.ip ]; + + services.coredns = { + enable = true; + config = with constants; '' + .:53 { + bind ${hosts.sid.ip} + hosts { + ${hosts.rx4.ip} ${services.vaultwarden.fqdn} + ${hosts.rx4.ip} ${services.webdav.fqdn} + ${hosts.rx4.ip} rx4.tail + ${hosts.sid.ip} sid.tail + ${hosts.vde.ip} vde.tail + fallthrough + } + forward . 1.1.1.1 + cache + log + errors + } + ''; + }; + + security.acme = { + certs."${constants.intranet}" = { + domain = "*.${constants.intranet}"; + dnsProvider = "hetzner"; + credentialsFile = config.sops.secrets.hetzner-dns-api-key.path; + }; + }; + sops.secrets.hetzner-dns-api-key = { }; + services.nginx = { enable = true; openFirewall = true;