diff --git a/config/docker/qbittorrent/config/qBittorrent/GeoDB/dbip-country-lite.mmdb b/config/docker/qbittorrent/config/qBittorrent/GeoDB/dbip-country-lite.mmdb new file mode 100644 index 0000000..657f315 Binary files /dev/null and b/config/docker/qbittorrent/config/qBittorrent/GeoDB/dbip-country-lite.mmdb differ diff --git a/config/docker/qbittorrent/config/qBittorrent/categories.json b/config/docker/qbittorrent/config/qBittorrent/categories.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/categories.json @@ -0,0 +1,2 @@ +{ +} diff --git a/config/docker/qbittorrent/config/qBittorrent/lockfile b/config/docker/qbittorrent/config/qBittorrent/lockfile new file mode 100644 index 0000000..e69de29 diff --git a/config/docker/qbittorrent/config/qBittorrent/logs/qbittorrent.log b/config/docker/qbittorrent/config/qBittorrent/logs/qbittorrent.log new file mode 100644 index 0000000..13e876e --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/logs/qbittorrent.log @@ -0,0 +1,79 @@ +(N) 2025-09-10T12:25:50 - qBittorrent v5.1.2 started. Process ID: 153 +(N) 2025-09-10T12:25:50 - Using config directory: /config/qBittorrent +(N) 2025-09-10T12:25:50 - Trying to listen on the following list of IP addresses: "0.0.0.0:6881,[::]:6881" +(I) 2025-09-10T12:25:50 - Peer ID: "-qB5120-" +(I) 2025-09-10T12:25:50 - HTTP User-Agent: "qBittorrent/5.1.2" +(I) 2025-09-10T12:25:50 - Distributed Hash Table (DHT) support: ON +(I) 2025-09-10T12:25:50 - Local Peer Discovery support: ON +(I) 2025-09-10T12:25:50 - Peer Exchange (PeX) support: ON +(I) 2025-09-10T12:25:50 - Anonymous mode: OFF +(I) 2025-09-10T12:25:50 - Encryption support: ON +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "127.0.0.1". Port: "TCP/6881" +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "127.0.0.1". Port: "UTP/6881" +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "172.19.0.2". Port: "TCP/6881" +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "172.19.0.2". Port: "UTP/6881" +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "::1". Port: "TCP/6881" +(I) 2025-09-10T12:25:50 - Successfully listening on IP. IP: "::1". Port: "UTP/6881" +(W) 2025-09-10T12:25:50 - Couldn't load IP geolocation database. Reason: No such file or directory +(N) 2025-09-10T12:25:50 - Using built-in WebUI. +(W) 2025-09-10T12:25:50 - Couldn't load WebUI translation for selected locale (C). +(N) 2025-09-10T12:25:50 - WebUI: Now listening on IP: *, port: 8080 +(I) 2025-09-10T12:25:50 - Detected external IP. IP: "31.46.51.110" +(I) 2025-09-10T12:25:50 - IP geolocation database loaded. Type: DBIP-Country-Lite. Build time: Mon Sep 1 03:19:30 2025. +(I) 2025-09-10T12:25:50 - Successfully updated IP geolocation database. +(W) 2025-09-10T12:27:31 - WebAPI login failure. Reason: invalid credentials, attempt count: 1, IP: ::ffff:172.19.0.1, username: admin +(W) 2025-09-10T12:27:37 - WebAPI login failure. Reason: invalid credentials, attempt count: 2, IP: ::ffff:172.19.0.1, username: admin +(W) 2025-09-10T12:28:34 - WebAPI login failure. Reason: invalid credentials, attempt count: 3, IP: ::ffff:172.19.0.1, username: admin +(N) 2025-09-10T12:29:02 - WebAPI login success. IP: ::ffff:172.19.0.1 +(N) 2025-09-10T12:30:39 - WebUI translation for selected locale (en) has been successfully loaded. +(N) 2025-09-10T12:31:08 - WebAPI login success. IP: ::ffff:172.19.0.1 +(N) 2025-09-10T23:41:28 - qBittorrent termination initiated +(N) 2025-09-10T23:41:28 - Saving resume data completed. +(N) 2025-09-10T23:41:28 - BitTorrent session successfully finished. +(N) 2025-09-10T23:41:28 - qBittorrent is now ready to exit +(N) 2025-09-10T23:43:04 - qBittorrent v5.1.2 started. Process ID: 148 +(N) 2025-09-10T23:43:04 - Using config directory: /config/qBittorrent +(N) 2025-09-10T23:43:04 - Trying to listen on the following list of IP addresses: "0.0.0.0:6881,[::]:6881" +(I) 2025-09-10T23:43:04 - Peer ID: "-qB5120-" +(I) 2025-09-10T23:43:04 - HTTP User-Agent: "qBittorrent/5.1.2" +(I) 2025-09-10T23:43:04 - Distributed Hash Table (DHT) support: ON +(I) 2025-09-10T23:43:04 - Local Peer Discovery support: ON +(I) 2025-09-10T23:43:04 - Peer Exchange (PeX) support: ON +(I) 2025-09-10T23:43:04 - Anonymous mode: OFF +(I) 2025-09-10T23:43:04 - Encryption support: ON +(I) 2025-09-10T23:43:04 - IP geolocation database loaded. Type: DBIP-Country-Lite. Build time: Mon Sep 1 03:19:30 2025. +(N) 2025-09-10T23:43:04 - Using built-in WebUI. +(N) 2025-09-10T23:43:04 - WebUI translation for selected locale (en) has been successfully loaded. +(N) 2025-09-10T23:43:04 - WebUI: Now listening on IP: *, port: 8080 +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "127.0.0.1". Port: "TCP/6881" +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "127.0.0.1". Port: "UTP/6881" +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "172.19.0.2". Port: "TCP/6881" +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "172.19.0.2". Port: "UTP/6881" +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "::1". Port: "TCP/6881" +(I) 2025-09-10T23:43:04 - Successfully listening on IP. IP: "::1". Port: "UTP/6881" +(I) 2025-09-10T23:43:07 - Detected external IP. IP: "31.46.51.110" +(N) 2025-09-12T09:27:37 - qBittorrent termination initiated +(N) 2025-09-12T09:27:37 - Saving resume data completed. +(N) 2025-09-12T09:27:37 - BitTorrent session successfully finished. +(N) 2025-09-12T09:27:37 - qBittorrent is now ready to exit +(N) 2025-09-12T09:29:21 - qBittorrent v5.1.2 started. Process ID: 146 +(N) 2025-09-12T09:29:21 - Using config directory: /config/qBittorrent +(N) 2025-09-12T09:29:21 - Trying to listen on the following list of IP addresses: "0.0.0.0:6881,[::]:6881" +(I) 2025-09-12T09:29:21 - Peer ID: "-qB5120-" +(I) 2025-09-12T09:29:21 - HTTP User-Agent: "qBittorrent/5.1.2" +(I) 2025-09-12T09:29:21 - Distributed Hash Table (DHT) support: ON +(I) 2025-09-12T09:29:21 - Local Peer Discovery support: ON +(I) 2025-09-12T09:29:21 - Peer Exchange (PeX) support: ON +(I) 2025-09-12T09:29:21 - Anonymous mode: OFF +(I) 2025-09-12T09:29:21 - Encryption support: ON +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "127.0.0.1". Port: "TCP/6881" +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "127.0.0.1". Port: "UTP/6881" +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "172.19.0.2". Port: "TCP/6881" +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "172.19.0.2". Port: "UTP/6881" +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "::1". Port: "TCP/6881" +(I) 2025-09-12T09:29:21 - Successfully listening on IP. IP: "::1". Port: "UTP/6881" +(I) 2025-09-12T09:29:21 - IP geolocation database loaded. Type: DBIP-Country-Lite. Build time: Mon Sep 1 03:19:30 2025. +(N) 2025-09-12T09:29:21 - Using built-in WebUI. +(N) 2025-09-12T09:29:21 - WebUI translation for selected locale (en) has been successfully loaded. +(N) 2025-09-12T09:29:21 - WebUI: Now listening on IP: *, port: 8080 +(I) 2025-09-12T09:29:23 - Detected external IP. IP: "31.46.51.110" diff --git a/config/docker/qbittorrent/config/qBittorrent/qBittorrent-data.conf b/config/docker/qbittorrent/config/qBittorrent/qBittorrent-data.conf new file mode 100644 index 0000000..201ddab --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/qBittorrent-data.conf @@ -0,0 +1,2 @@ +[Stats] +AllStats=@Variant(\0\0\0\x1c\0\0\0\x2\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0U\0L\0\0\0\x4\0\0\0\0\0\x12+H\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0\x44\0L\0\0\0\x4\0\0\0\0\0\xf#() diff --git a/config/docker/qbittorrent/config/qBittorrent/qBittorrent.conf b/config/docker/qbittorrent/config/qBittorrent/qBittorrent.conf new file mode 100644 index 0000000..6d4e401 --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/qBittorrent.conf @@ -0,0 +1,55 @@ +[Application] +FileLogger\Age=1 +FileLogger\AgeType=1 +FileLogger\Backup=true +FileLogger\DeleteOld=true +FileLogger\Enabled=true +FileLogger\MaxSizeBytes=66560 +FileLogger\Path=/config/qBittorrent/logs + +[AutoRun] +enabled=false +program= + +[BitTorrent] +Session\AddTorrentStopped=false +Session\DefaultSavePath=/downloads/ +Session\ExcludedFileNames= +Session\Port=6881 +Session\QueueingSystemEnabled=true +Session\SSL\Port=6913 +Session\ShareLimitAction=Stop +Session\TempPath=/downloads/incomplete/ + +[Core] +AutoDeleteAddedTorrentFile=Never + +[LegalNotice] +Accepted=true + +[Meta] +MigrationVersion=8 + +[Network] +Cookies=@Invalid() +PortForwardingEnabled=false +Proxy\HostnameLookupEnabled=false +Proxy\Profiles\BitTorrent=true +Proxy\Profiles\Misc=true +Proxy\Profiles\RSS=true + +[Preferences] +Connection\PortRangeMin=6881 +Connection\UPnP=false +Downloads\SavePath=/downloads/ +Downloads\TempPath=/downloads/incomplete/ +General\Locale=en +MailNotification\req_auth=true +WebUI\Address=* +WebUI\Password_PBKDF2="@ByteArray(ZKvbJkSupyOioYkDDVrMYA==:d65EaPafxao/dcmEXRsFaMgRcGBoCSxTcGZiY/LCa48TUErDQC03rNemvsCClKqDbi4ec7idnMkHd6Ila+4vxg==)" +WebUI\ServerDomains=* +WebUI\Username=hoborg + +[RSS] +AutoDownloader\DownloadRepacks=true +AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/config/docker/qbittorrent/config/qBittorrent/rss/articles/storage.lock b/config/docker/qbittorrent/config/qBittorrent/rss/articles/storage.lock new file mode 100644 index 0000000..e69de29 diff --git a/config/docker/qbittorrent/config/qBittorrent/rss/feeds.json b/config/docker/qbittorrent/config/qBittorrent/rss/feeds.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/rss/feeds.json @@ -0,0 +1,2 @@ +{ +} diff --git a/config/docker/qbittorrent/config/qBittorrent/rss/storage.lock b/config/docker/qbittorrent/config/qBittorrent/rss/storage.lock new file mode 100644 index 0000000..e69de29 diff --git a/config/docker/qbittorrent/config/qBittorrent/watched_folders.json b/config/docker/qbittorrent/config/qBittorrent/watched_folders.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/config/docker/qbittorrent/config/qBittorrent/watched_folders.json @@ -0,0 +1,2 @@ +{ +} diff --git a/config/docker/qbittorrent/docker-compose.yml b/config/docker/qbittorrent/docker-compose.yml new file mode 100644 index 0000000..a55f230 --- /dev/null +++ b/config/docker/qbittorrent/docker-compose.yml @@ -0,0 +1,38 @@ +# DEPLOYMENT LOCATION: /opt/docker/qbittorrent/docker-compose.yml +# Deploy with: sudo mkdir -p /opt/docker/qbittorrent && sudo cp config/docker/qbittorrent/docker-compose.yml /opt/docker/qbittorrent/ +# Start with: cd /opt/docker/qbittorrent && sudo docker-compose up -d + +services: + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + restart: unless-stopped + + # User and group IDs to match host user (hoborg) + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Prague + - WEBUI_PORT=8080 + + # Network - bind to localhost only for reverse proxy + ports: + - "127.0.0.1:8080:8080" # Web UI + - "6881:6881" # BitTorrent TCP + - "6881:6881/udp" # BitTorrent UDP + + # Volume mounts + volumes: + # qBittorrent configuration + - /opt/docker/qbittorrent/config:/config + + # Torrent storage on NAS + - /mnt/nas/torrent:/downloads + + # Memory limits for container stability + deploy: + resources: + limits: + memory: 1G + reservations: + memory: 256M \ No newline at end of file diff --git a/scripts/deploy-netdata-config.sh b/scripts/deploy-netdata-config.sh deleted file mode 100755 index f6a8611..0000000 --- a/scripts/deploy-netdata-config.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -# Deploy Netdata configuration and nginx config for privacy-focused local monitoring -# Run with: sudo -A ./scripts/deploy-netdata-config.sh - -set -e - -echo "=== Deploying Netdata privacy configuration ===" -cp /home/hoborg/homelab/config/netdata/netdata.conf /etc/netdata/netdata.conf -echo "✅ Netdata configured for local-only operation (no cloud/telemetry)" - -echo "=== Backing up nginx config ===" -BACKUP_FILE="/etc/nginx/sites-available/homelab.backup.$(date +%Y%m%d-%H%M%S)" -cp /etc/nginx/sites-available/homelab "$BACKUP_FILE" -echo "Backup created: $BACKUP_FILE" - -echo "=== Deploying nginx configuration with Netdata support ===" -cp /home/hoborg/homelab/config/nginx/homelab.conf /etc/nginx/sites-available/homelab - -echo "=== Testing nginx configuration ===" -nginx -t - -if [ $? -eq 0 ]; then - echo "=== Restarting Netdata with new config ===" - systemctl restart netdata - - echo "=== Reloading nginx ===" - systemctl reload nginx - - echo "✅ Configuration deployed successfully!" -else - echo "❌ ERROR: Nginx configuration test failed!" - echo "Restoring backup..." - cp "$BACKUP_FILE" /etc/nginx/sites-available/homelab - exit 1 -fi - -echo "" -echo "=== Testing Netdata access ===" -echo "Direct access: http://127.0.0.1:19999/" -curl -s -o /dev/null -w "Direct Netdata: HTTP %{http_code}\\n" http://127.0.0.1:19999/ || echo "Direct test failed" - -echo "Reverse proxy access: https://ak-homelab.duckdns.org/netdata/" -curl -k -s -o /dev/null -w "Proxied Netdata: HTTP %{http_code}\\n" https://ak-homelab.duckdns.org/netdata/ || echo "Proxy test failed" - -echo "" -echo "=== Netdata Privacy Configuration Complete! ===" -echo "✅ Cloud features disabled" -echo "✅ Telemetry disabled" -echo "✅ Local-only monitoring" -echo "✅ Accessible via: https://ak-homelab.duckdns.org/netdata/" -echo "✅ Basic auth: admin / AdminPass2024!" \ No newline at end of file