diff --git a/hosts/kariru/services/default.nix b/hosts/kariru/services/default.nix index 2f6d51b..5e578fe 100644 --- a/hosts/kariru/services/default.nix +++ b/hosts/kariru/services/default.nix @@ -1,4 +1,7 @@ _: { + imports = [ + ./traefik.nix + ]; services.radarr = { enable = true; openFirewall = true; diff --git a/hosts/kariru/services/traefik.nix b/hosts/kariru/services/traefik.nix new file mode 100644 index 0000000..bd9bda4 --- /dev/null +++ b/hosts/kariru/services/traefik.nix @@ -0,0 +1,56 @@ +_: { + networking.firewall.allowedTCPPorts = [80 443]; + services.traefik = { + enable = true; + dynamicConfigOptions = { + http = { + routers = { + api = { + rule = "PathPrefix(`/api/`)"; + entryPoints = ["websecure"]; + service = "api@internal"; + }; + sonarr = { + rule = "Host(`sonarr.home.arpa`)"; + entryPoints = ["web"]; + service = "sonarr"; + }; + radarr = { + rule = "Host(`radarr.home.arpa`)"; + entryPoints = ["web"]; + service = "radarr"; + }; + prowlarr = { + rule = "Host(`prowlarr.home.arpa`)"; + entrypoints = ["web"]; + service = "prowlarr"; + }; + }; + services = { + sonarr.loadBalancer.servers = [{url = "http://localhost:8989";}]; + radarr.loadBalancer.servers = [{url = "http://localhost:7878";}]; + prowlarr.loadBalancer.servers = [{url = "http://localhost:9696";}]; + }; + }; + }; + staticConfigOptions = { + log.level = "DEBUG"; + api.dashboard = false; + api.insecure = false; + global = { + checkNewVersion = false; + sendAnonymousUsage = false; + }; + entryPoints = { + websecure = { + address = ":443"; + forwardedHeaders.insecure = true; + }; + web = { + address = ":80"; + forwardedHeaders.insecure = true; + }; + }; + }; + }; +}