server_config/services/qbittorrent.nix
2026-03-20 13:59:08 +01:00

61 lines
1.7 KiB
Nix

{ config, pkgs, ... }:
let
webUIport = 55555;
forwardPort = 8888;
torrentPort = 49114;
namespace = "wg-mullvad-namespace";
interface = "wg-mullvad";
in
{
users.users.qbittorrent.extraGroups = [ "media" ];
services.qbittorrent = {
enable = true;
webuiPort = webUIport;
serverConfig = {
LegalNotice.Accepted = true;
Preferences = {
WebUI = {
StatusbarExternalIPDisplayed = true;
HostHeaderValidation = false;
Username = "admin";
Password_PBKDF2 = "@ByteArray(WHjV8k2o78gWuL4xAUu0Ww==:eSOIQzJvNmW2JNbvC5DsS3h4JxAvkqJ0g0o1STTLplWLq9cDPjBME3/+dJ/c+p2crLIP2JEoO7KzD0JvLlU9TA==)";
};
General.Locale = "en";
};
BitTorrent = {
Session = {
Port = torrentPort;
GlobalMaxRatio = 5;
ShareLimitAction = "RemoveWithContent";
QueueingSystemEnabled = false;
DefaultSavePath = "/var/lib/torrents";
Interface = interface;
InterfaceName = interface;
MaxConnections = -1;
MaxConnectionsPerTorrent = -1;
MaxUploads = -1;
MaxUploadsPerTorrent = -1;
};
};
};
};
systemd.services.qbittorrent.serviceConfig = {
NetworkNamespacePath = "/var/run/netns/${namespace}";
BindReadOnlyPaths = [
"/etc/netns/${namespace}/resolv.conf:/etc/resolv.conf"
];
};
systemd.services.qbittorrent.after = [ "wireguard-${interface}.target" ];
systemd.services.forward-namespace = {
description = "Proxy LAN to VPN namespace";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
script = "${pkgs.socat}/bin/socat TCP-LISTEN:${toString forwardPort},fork,reuseaddr TCP:10.200.200.2:${toString webUIport}";
};
systemd.tmpfiles.rules = [
"d /var/lib/torrents 0750 qbittorent qbittorrent -"
];
}