mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
118 lines
2.9 KiB
Nix
118 lines
2.9 KiB
Nix
{ config, pkgs, lib, hostName, serverAddr, domain, ... }:
|
|
|
|
{
|
|
##########################################################################
|
|
# EDIT HERE — set your domain
|
|
# The domain below is used for TLS certificates via Porkbun DNS challenge.
|
|
# Set PORKBUN_API_KEY and PORKBUN_SECRET_KEY in /etc/caddy/porkbun.env
|
|
# (sops-injected via porkbun-env.age).
|
|
##########################################################################
|
|
|
|
sops.secrets.porkbun-env = {
|
|
sopsFile = ./secrets/porkbun-env.age;
|
|
format = "yaml";
|
|
path = "/etc/caddy/porkbun.env";
|
|
};
|
|
|
|
sops.secrets.authentik-secrets = {
|
|
sopsFile = ./secrets/authentik-secrets.age;
|
|
format = "yaml";
|
|
};
|
|
|
|
services.k3s = {
|
|
enable = true;
|
|
role = "server";
|
|
clusterInit = true;
|
|
extraFlags = [
|
|
"--disable=traefik"
|
|
"--tls-san=100.102.173.61"
|
|
"--tls-san=researchstack.info"
|
|
"--tls-san=nixos-laptop"
|
|
"--advertise-address=100.102.173.61"
|
|
"--node-ip=100.102.173.61"
|
|
"--flannel-iface=tailscale0"
|
|
];
|
|
};
|
|
|
|
systemd.services.caddy.serviceConfig.EnvironmentFile = [ "/etc/caddy/porkbun.env" ];
|
|
|
|
services.caddy = {
|
|
enable = true;
|
|
package = pkgs.caddy;
|
|
globalConfig = ''
|
|
auto_https off
|
|
'';
|
|
extraConfig = ''
|
|
http://auth.${domain} {
|
|
reverse_proxy 100.85.244.73:30080
|
|
}
|
|
|
|
http://status.${domain} {
|
|
reverse_proxy 127.0.0.1:30801
|
|
}
|
|
|
|
http://apps.${domain} {
|
|
reverse_proxy 127.0.0.1:30802
|
|
}
|
|
|
|
http://home.${domain} {
|
|
reverse_proxy 127.0.0.1:30803
|
|
}
|
|
|
|
http://pulse.${domain} {
|
|
reverse_proxy 127.0.0.1:30804
|
|
}
|
|
|
|
http://dash.${domain} {
|
|
reverse_proxy 127.0.0.1:30805
|
|
}
|
|
|
|
http://media.${domain} {
|
|
reverse_proxy 127.0.0.1:30810
|
|
}
|
|
|
|
http://vault.${domain} {
|
|
reverse_proxy 10.43.130.188:80
|
|
}
|
|
|
|
http://books.${domain} {
|
|
reverse_proxy 127.0.0.1:30807
|
|
}
|
|
|
|
http://music.${domain} {
|
|
reverse_proxy 127.0.0.1:30809
|
|
}
|
|
|
|
http://mail.${domain} {
|
|
reverse_proxy 127.0.0.1:30808
|
|
}
|
|
|
|
http://webmail.${domain} {
|
|
reverse_proxy 127.0.0.1:30808
|
|
}
|
|
|
|
http://${domain} {
|
|
respond "k3s unified topology — Research Stack"
|
|
}
|
|
'';
|
|
};
|
|
|
|
systemd.services.deploy-k3s-services = {
|
|
description = "Deploy k3s topology services";
|
|
after = [ "k3s.service" "tailscaled.service" "network-online.target" ];
|
|
wants = [ "k3s.service" "tailscaled.service" "network-online.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
path = with pkgs; [ kubectl ];
|
|
environment = {
|
|
KUBECONFIG = "/etc/rancher/k3s/k3s.yaml";
|
|
AUTHENTIK_SECRETS = "${config.sops.secrets.authentik-secrets.path}";
|
|
};
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
Restart = "on-failure";
|
|
RestartSec = 10;
|
|
ExecStart = "${pkgs.bash}/bin/bash ${./scripts/deploy-services.sh}";
|
|
};
|
|
};
|
|
}
|