nixos-configuration/hosts/iron/services/sturzbach.nix
2025-09-02 00:31:38 +02:00

73 lines
2 KiB
Nix

{ config, ... }:
let
inherit (config.networking) ports;
interfaces = import ../interfaces.nix;
domain = "sturzbach.jalr.de";
cfg = config.services.qbittorrent;
in
{
sops.secrets.sturzbach-htpasswd = {
owner = "nginx";
};
networking.firewall = {
allowedTCPPorts = [ ports.qbittorrent-torrent.tcp ];
};
systemd.services.qbittorrent.serviceConfig = {
# Increase number of open file descriptors (default: 1024)
LimitNOFILE = 65536;
};
services = {
qbittorrent = {
enable = true;
torrentingPort = ports.qbittorrent-torrent.tcp;
webuiPort = ports.qbittorrent-webui.tcp;
serverConfig = {
Network.PortForwardingEnabled = false;
Preferences.WebUI = {
Address = "127.0.0.1";
LocalHostAuth = false;
SecureCookie = true;
ServerDomains = domain;
SessionTimeout = 24 * 60 * 60;
UseUPnP = false;
};
BitTorrent.Session = {
DHTEnabled = false;
LSDEnabled = false;
PeXEnabled = false;
MaxActiveDownloads = 5;
MaxActiveTorrents = 10000;
MaxActiveUploads = 10000;
TempPath = "${cfg.profileDir}/downloads/incomplete";
TorrentContentLayout = "Subfolder";
AddTorrentStopped = false;
AnnounceToAllTiers = false;
DefaultSavePath = "${cfg.profileDir}/downloads";
DisableAutoTMMByDefault = false;
Interface = interfaces.wan;
InterfaceAddress = "0.0.0.0";
InterfaceName = interfaces.wan;
QueueingSystemEnabled = true;
ReannounceWhenAddressChanged = false;
};
};
};
nginx.virtualHosts."${domain}" = {
enableACME = true;
forceSSL = true;
basicAuthFile = config.sops.secrets.sturzbach-htpasswd.path;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:${toString config.services.qbittorrent.webuiPort}";
proxyWebsockets = true;
};
};
};
};
}