From 84bf4e539795bc47a612c85730be196260046b52 Mon Sep 17 00:00:00 2001 From: "sascha.koenig" Date: Wed, 15 Oct 2025 07:48:10 +0200 Subject: [PATCH] +it-tools --- flake.nix | 1 + hosts/AZ-CLD-1/services/default.nix | 1 + hosts/AZ-CLD-1/services/it-tools.nix | 45 +++++++++++++++++++++++++++ lib/ports.nix | 1 + secrets/librechat-env-dev.age | Bin 2967 -> 4212 bytes 5 files changed, 48 insertions(+) create mode 100644 hosts/AZ-CLD-1/services/it-tools.nix diff --git a/flake.nix b/flake.nix index fe54fe3..4aa13bb 100644 --- a/flake.nix +++ b/flake.nix @@ -121,6 +121,7 @@ ./hosts/AZLT124-L agenix.nixosModules.default inputs.home-manager-unstable.nixosModules.home-manager + m3ta-nixpkgs.nixosModules.default ]; }; }; diff --git a/hosts/AZ-CLD-1/services/default.nix b/hosts/AZ-CLD-1/services/default.nix index 8d219b8..39394dd 100644 --- a/hosts/AZ-CLD-1/services/default.nix +++ b/hosts/AZ-CLD-1/services/default.nix @@ -3,6 +3,7 @@ ./containers ./gitea.nix + ./it-tools.nix ./metabase.nix ./n8n.nix ./ntfy.nix diff --git a/hosts/AZ-CLD-1/services/it-tools.nix b/hosts/AZ-CLD-1/services/it-tools.nix new file mode 100644 index 0000000..7ee55f4 --- /dev/null +++ b/hosts/AZ-CLD-1/services/it-tools.nix @@ -0,0 +1,45 @@ +{ + config, + lib, + pkgs, + ... +}: let + serviceName = "it-tools"; + portUtils = import ../../../lib/port-utils.nix {inherit lib;}; + servicePort = portUtils.getPort serviceName "AZ-CLD-1"; +in { + services.nginx = { + enable = true; + virtualHosts.${serviceName} = { + listen = [ + { + addr = "127.0.0.1"; + port = servicePort; + } + ]; + locations."/" = { + root = "${pkgs.it-tools}/lib"; + index = "index.html"; + tryFiles = "$uri $uri/ /index.html"; + }; + }; + }; + + # Traefik configuration + services.traefik.dynamicConfigOptions.http = { + services.${serviceName}.loadBalancer.servers = [ + { + url = "http://localhost:${toString servicePort}/"; + } + ]; + + routers.${serviceName} = { + rule = "Host(`tools.az-gruppe.com`)"; + tls = { + certResolver = "ionos"; + }; + service = serviceName; + entrypoints = "websecure"; + }; + }; +} diff --git a/lib/ports.nix b/lib/ports.nix index b22e0e3..489efec 100644 --- a/lib/ports.nix +++ b/lib/ports.nix @@ -14,6 +14,7 @@ zammad = 3034; metabase = 3013; ntfy-sh = 3033; + it-tools = 3035; # Docker services (3100-3199 range) librechat = 3040; diff --git a/secrets/librechat-env-dev.age b/secrets/librechat-env-dev.age index 8aa9be87885840a3a3e4520951a3696ea4bb5112..238c3e4bee71e0ad11165e62ea720bdac7221b05 100644 GIT binary patch literal 4212 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