hosts/common: add server profile

- bridge sysctl, caddy, mongodb, factorio, *arr, transmission, adguardhome, ddclient, flaresolverr, jackett shared by baremetal
This commit is contained in:
Jordan Ashurst
2026-09-18 04:23:12 -07:00
parent 6d6e00845b
commit 733fcf45e8
+137
View File
@@ -0,0 +1,137 @@
# Server stack shared by dogma-nixos and dogma-nixos-rtx (not WSL)
{
config,
lib,
pkgs,
...
}: {
boot.kernel.sysctl = {
"net.ipv4.ip_forward" = 1;
"net.bridge.bridge-nf-call-iptables" = 1;
"net.ipv4.conf.all.forwarding" = 1;
"net.ipv6.conf.all.forwarding" = 1;
"net.ipv4.conf.all.proxy_arp" = 1;
"net.ipv4.conf.ens2.proxy_arp" = 1;
};
networking.firewall.trustedInterfaces = ["br0"];
# Bridge networking - host-specific NIC may be overridden per-host
networking.interfaces.enp6s0.useDHCP = false;
networking.interfaces.br0.useDHCP = true;
networking.bridges.br0.interfaces = ["enp6s0"];
services.caddy = {
enable = true;
environmentFile = config.sops.templates."caddy.env".path;
virtualHosts."centraldogma.site:".extraConfig = ''
root * /srv/root/
file_server
encode zstd gzip
redir /jellyfin /jellyfin/
reverse_proxy /jellyfin/* 127.0.0.1:8096
redir /sonarr /sonarr/
reverse_proxy /sonarr/* 127.0.0.1:8989
redir /radarr /radarr/
reverse_proxy /radarr/* 127.0.0.1:7878
'';
virtualHosts."jellyfin.centraldogma.site:".extraConfig = ''
reverse_proxy /* 127.0.0.1:8096
'';
virtualHosts."jellyfin2.centraldogma.site:".extraConfig = ''
redir /jellyfin /jellyfin/
reverse_proxy /jellyfin/* 127.0.0.1:8096
'';
virtualHosts."git.centraldogma.site:".extraConfig = ''
reverse_proxy /* 127.0.0.1:3000
'';
virtualHosts."spy.centraldogma.site:".extraConfig = ''
reverse_proxy /* 192.168.1.78:4444
'';
};
services.flaresolverr.enable = true;
services.mongodb = {
enable = true;
package = pkgs.mongodb-ce;
initialRootPasswordFile = config.sops.secrets."mongodb/initial_password".path;
};
services.jackett.enable = true;
services.factorio = {
enable = true;
public = true;
requireUserVerification = true;
username = "TheMaskedMan95";
admins = ["TheMaskedMan95"];
game-name = "Realm of the Masked Men";
description = "No Dogs allowed";
extraSettingsFile = config.sops.templates."factorio.json".path;
saveName = "SPACExxxx";
openFirewall = true;
};
services.radarr.enable = true;
services.ddclient = {
enable = true;
protocol = "namecheap";
server = "dynamicdns.park-your-domain.com";
ssl = true;
username = "centraldogma.site";
domains = [
"@"
"www"
];
usev4 = "webv4, webv4=ipify-ipv4";
passwordFile = config.sops.secrets."namecheap/ddyn_password".path;
interval = "5mins";
};
services.sonarr.enable = true;
services.transmission = {
enable = true;
openRPCPort = true;
settings = {
rpc-bind-address = "0.0.0.0";
rpc-whitelist = "127.0.0.1,192.168.1.86";
download-dir = "/mnt/media/Downloads";
};
};
services.adguardhome = {
enable = true;
host = "0.0.0.0";
port = 3003;
settings = {
allowDHCP = true;
dns = {
upstream_dns = [
"9.9.9.9#dns.quad9.net"
"149.112.112.112#dns.quad9.net"
];
};
filtering = {
protection_enabled = true;
filtering_enabled = true;
parental_enabled = true;
safe_search.enabled = false;
};
filters = map (url: {
enabled = true;
url = url;
}) [
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt"
"https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt"
];
};
};
}