nixdots/hosts/kittykat/traefik.nix
2026-04-25 21:23:44 +03:00

77 lines
1.7 KiB
Nix

{config, ...}: {
networking.firewall = {
enable = true;
allowedTCPPorts = [80 443];
};
services.traefik = {
enable = true;
staticConfigOptions = {
entryPoints = {
web = {
address = ":80";
http.redirections.entrypoint = {
to = "websecure";
scheme = "https";
};
};
websecure = {
address = ":443";
http.tls.certResolver = "letsencrypt";
};
};
log = {
level = "INFO";
filePath = "${config.services.traefik.dataDir}/traefik.log";
format = "json";
};
certificatesResolvers.letsencrypt.acme = {
email = "tulg@protonmail.ch";
storage = "${config.services.traefik.dataDir}/acme.json";
httpChallenge.entryPoint = "web";
};
api.dashboard = true;
};
dynamicConfigOptions = {
http = {
routers = {
xray = {
rule = "Host(`v2.kittykat.poggerer.xyz`)";
entryPoints = ["websecure"];
service = "xray";
tls = {
certResolver = "letsencrypt";
};
};
vaultwarden = {
rule = "Host(`vault.kittykat.poggerer.xyz`)";
entryPoints = ["websecure"];
service = "vaultwarden";
tls.certResolver = "letsencrypt";
};
};
services = {
xray = {
loadBalancer = {
servers = [
{url = "http://127.0.0.1:2053";}
];
};
};
vaultwarden = {
loadBalancer.servers = [
{url = "http://127.0.0.1:8222";}
];
};
};
};
};
};
}