project-flake/servers/reine/traefik.nix
2025-09-17 16:39:03 +07:00

66 lines
1.7 KiB
Nix

{ config, pkgs, ... }:
{
services.traefik = {
enable = true;
staticConfigOptions = {
entryPoints = {
web = {
address = ":80";
http.redirections.entryPoint = {
to = "websecure";
scheme = "https";
};
};
websecure = {
address = ":443";
http.tls = {
certResolver = "letsencrypt";
};
};
};
api = {
dashboard = false;
insecure = false; # Включить только для отладки, лучше использовать безопасный доступ
};
certificatesResolvers.letsencrypt.acme = {
email = "luc_ren@blnt-cult.ru";
storage = "${config.services.traefik.dataDir}/acme.json";
httpChallenge.entryPoint = "web";
};
};
dynamicConfigOptions = {
http = {
routers = {
jellyfin = {
rule = "Host(`jellyfin.project-a.space`)";
service = "jellyfin";
entryPoints = ["websecure"];
tls = {
certResolver = "letsencrypt";
};
};
jellyseerr = {
rule = "Host(`jellyseerr.project-a.space`)";
service = "jellyseerr";
entryPoints = ["websecure"];
tls = {
certResolver = "letsencrypt";
};
};
};
services = {
jellyfin.loadBalancer.servers = [
{ url = "http://127.0.0.1:8096"; }
];
jellyseerr.loadBalancer.servers = [
{ url = "http://127.0.0.1:5055"; }
];
};
};
};
};
}