nix/hosts/nixos/vps/proxy.nix
2026-01-20 12:31:19 +01:00

128 lines
2.7 KiB
Nix

{ config, ... }:
{
# Traefik dynamic configuration for vps host
services.traefik.dynamicConfigOptions = {
http = {
routers = {
photo = {
rule = "Host(`photo.yanlincs.com`)";
service = "photo";
tls = {
certResolver = "cloudflare";
domains = [{
main = "*.yanlincs.com";
}];
};
};
immich-lib = {
rule = "Host(`immich-lib.yanlincs.com`)";
service = "immich-lib";
tls = {
certResolver = "cloudflare";
domains = [{
main = "*.yanlincs.com";
}];
};
};
audio = {
rule = "Host(`audio.yanlincs.com`)";
service = "audio";
tls = {
certResolver = "cloudflare";
domains = [{
main = "*.yanlincs.com";
}];
};
};
music = {
rule = "Host(`music.yanlincs.com`)";
service = "music";
tls = {
certResolver = "cloudflare";
domains = [{
main = "*.yanlincs.com";
}];
};
};
deluge = {
rule = "Host(`deluge.yanlincs.com`)";
service = "deluge";
tls = {
certResolver = "cloudflare";
domains = [{
main = "*.yanlincs.com";
}];
};
};
};
services = {
photo = {
loadBalancer = {
servers = [{
url = "http://thinkpad.yanlincs.com:5000";
}];
};
};
immich-lib = {
loadBalancer = {
servers = [{
url = "http://thinkpad.yanlincs.com:5099";
}];
};
};
audio = {
loadBalancer = {
servers = [{
url = "http://nfss.yanlincs.com:8000";
}];
};
};
music = {
loadBalancer = {
servers = [{
url = "http://nfss.yanlincs.com:4533";
}];
};
};
deluge = {
loadBalancer = {
servers = [{
url = "http://nfss.yanlincs.com:8112";
}];
};
};
};
};
tcp = {
routers.mongodb = {
rule = "HostSNI(`mongodb.yanlincs.com`)";
service = "mongodb";
entrypoints = [ "mongodb" ];
tls = {
certResolver = "cloudflare";
domains = [{ main = "*.yanlincs.com"; }];
};
};
services.mongodb = {
loadBalancer.servers = [{ address = "nfss.yanlincs.com:27017"; }];
};
};
};
}