[{"data":1,"prerenderedAt":2112},["ShallowReactive",2],{"navigation_docs_en":3,"-en-recycled-alternatives-qbittorrent-for-plex-":377,"-en-recycled-alternatives-qbittorrent-for-plex--surround":2107},[4,16,94,262,271,332],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":15},"About","i-noto-star","\u002Fen\u002Fabout","en\u002F1.about",[10],{"title":11,"path":12,"stem":13,"icon":14},"Welcome","\u002Fen\u002Fabout\u002Fwelcome","en\u002F1.about\u002F1.welcome","i-lucide-home",false,{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":15},"General","i-noto-open-book","\u002Fen\u002Fgeneral","en\u002F2.general",[22,26,44,58,76],{"title":17,"path":23,"stem":24,"icon":25},"\u002Fen\u002Fgeneral\u002Fsummary","en\u002F2.general\u002F1.summary","i-lucide-bookmark",{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":15},"Networking","i-lucide-network","\u002Fen\u002Fgeneral\u002Fnetworking","en\u002F2.general\u002F2.networking",[32,36,40],{"title":33,"path":34,"stem":35},"NAT & DHCP","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fnat","en\u002F2.general\u002F2.networking\u002F1.nat",{"title":37,"path":38,"stem":39},"DNS Zone","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fdns","en\u002F2.general\u002F2.networking\u002F2.dns",{"title":41,"path":42,"stem":43},"Samba","\u002Fen\u002Fgeneral\u002Fnetworking\u002Fsamba","en\u002F2.general\u002F2.networking\u002F3.samba",{"title":45,"icon":46,"path":47,"stem":48,"children":49,"page":15},"Storage","i-lucide-hard-drive","\u002Fen\u002Fgeneral\u002Fstorage","en\u002F2.general\u002F3.storage",[50,54],{"title":51,"path":52,"stem":53},"RAID","\u002Fen\u002Fgeneral\u002Fstorage\u002Fraid","en\u002F2.general\u002F3.storage\u002F1.raid",{"title":55,"path":56,"stem":57},"ZFS","\u002Fen\u002Fgeneral\u002Fstorage\u002Fzfs","en\u002F2.general\u002F3.storage\u002F2.zfs",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":15},"Hardware","i-lucide-server","\u002Fen\u002Fgeneral\u002Fhardware","en\u002F2.general\u002F4.hardware",[64,68,72],{"title":65,"path":66,"stem":67},"The Basics","\u002Fen\u002Fgeneral\u002Fhardware\u002Fbasics","en\u002F2.general\u002F4.hardware\u002F1.basics",{"title":69,"path":70,"stem":71},"Network","\u002Fen\u002Fgeneral\u002Fhardware\u002Fnetwork","en\u002F2.general\u002F4.hardware\u002F2.network",{"title":73,"path":74,"stem":75},"The ProloNAS","\u002Fen\u002Fgeneral\u002Fhardware\u002Fprolonas","en\u002F2.general\u002F4.hardware\u002F3.prolonas",{"title":77,"icon":78,"path":79,"stem":80,"children":81,"page":15},"Linux tips for dummies","i-lucide-terminal","\u002Fen\u002Fgeneral\u002Flinux","en\u002F2.general\u002F5.linux",[82,86,90],{"title":83,"path":84,"stem":85},"Command line basics","\u002Fen\u002Fgeneral\u002Flinux\u002Fcli-basics","en\u002F2.general\u002F5.linux\u002F1.cli-basics",{"title":87,"path":88,"stem":89},"Folders and partitions","\u002Fen\u002Fgeneral\u002Flinux\u002Ffilesystem","en\u002F2.general\u002F5.linux\u002F2.filesystem",{"title":91,"path":92,"stem":93},"Handy CLI tools","\u002Fen\u002Fgeneral\u002Flinux\u002Fhandy-tools","en\u002F2.general\u002F5.linux\u002F3.handy-tools",{"title":95,"icon":96,"path":97,"stem":98,"children":99,"page":15},"Serveex","i-noto-microscope","\u002Fen\u002Fserveex","en\u002F3.serveex",[100,104,126,144,170,188,202,216,234,248],{"title":101,"path":102,"stem":103,"icon":25},"Introduction","\u002Fen\u002Fserveex\u002Fintroduction","en\u002F3.serveex\u002F1.introduction",{"title":105,"icon":106,"path":107,"stem":108,"children":109,"page":15},"Server core","i-lucide-server-cog","\u002Fen\u002Fserveex\u002Fcore","en\u002F3.serveex\u002F2.core",[110,114,118,122],{"title":111,"path":112,"stem":113},"Debian 13","\u002Fen\u002Fserveex\u002Fcore\u002Finstallation","en\u002F3.serveex\u002F2.core\u002F1.installation",{"title":115,"path":116,"stem":117},"Docker","\u002Fen\u002Fserveex\u002Fcore\u002Fdocker","en\u002F3.serveex\u002F2.core\u002F2.docker",{"title":119,"path":120,"stem":121},"Wireguard","\u002Fen\u002Fserveex\u002Fcore\u002Fwireguard","en\u002F3.serveex\u002F2.core\u002F3.wireguard",{"title":123,"path":124,"stem":125},"SWAG","\u002Fen\u002Fserveex\u002Fcore\u002Fswag","en\u002F3.serveex\u002F2.core\u002F4.swag",{"title":127,"icon":128,"path":129,"stem":130,"children":131,"page":15},"Security","i-lucide-shield","\u002Fen\u002Fserveex\u002Fsecurity","en\u002F3.serveex\u002F3.security",[132,136,140],{"title":133,"path":134,"stem":135},"Cloudflare Zero Trust","\u002Fen\u002Fserveex\u002Fsecurity\u002Fcloudflare","en\u002F3.serveex\u002F3.security\u002F2.cloudflare",{"title":137,"path":138,"stem":139},"TinyAuth","\u002Fen\u002Fserveex\u002Fsecurity\u002Ftinyauth","en\u002F3.serveex\u002F3.security\u002F3.tinyauth",{"title":141,"path":142,"stem":143},"Pocket ID","\u002Fen\u002Fserveex\u002Fsecurity\u002Fpocket-id","en\u002F3.serveex\u002F3.security\u002F4.pocket-id",{"title":145,"icon":146,"path":147,"stem":148,"children":149,"page":15},"Monitoring","i-lucide-chart-no-axes-column","\u002Fen\u002Fserveex\u002Fmonitoring","en\u002F3.serveex\u002F4.monitoring",[150,154,158,162,166],{"title":151,"path":152,"stem":153},"Uptime-Kuma","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fuptime-kuma","en\u002F3.serveex\u002F4.monitoring\u002F1.uptime-kuma",{"title":155,"path":156,"stem":157},"Dozzle","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fdozzle","en\u002F3.serveex\u002F4.monitoring\u002F2.dozzle",{"title":159,"path":160,"stem":161},"Speedtest Tracker","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fspeedtest-tracker","en\u002F3.serveex\u002F4.monitoring\u002F3.speedtest-tracker",{"title":163,"path":164,"stem":165},"Beszel","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fbeszel","en\u002F3.serveex\u002F4.monitoring\u002F4.beszel",{"title":167,"path":168,"stem":169},"UpSnap","\u002Fen\u002Fserveex\u002Fmonitoring\u002Fupsnap","en\u002F3.serveex\u002F4.monitoring\u002F5.upsnap",{"title":171,"icon":172,"path":173,"stem":174,"children":175,"page":15},"Media & Seedbox","i-lucide-list-video","\u002Fen\u002Fserveex\u002Fmedia","en\u002F3.serveex\u002F5.media",[176,180,184],{"title":177,"path":178,"stem":179},"Jellyfin","\u002Fen\u002Fserveex\u002Fmedia\u002Fjellyfin","en\u002F3.serveex\u002F5.media\u002F1.jellyfin",{"title":181,"path":182,"stem":183},"Qbittorrent","\u002Fen\u002Fserveex\u002Fmedia\u002Fqbittorrent","en\u002F3.serveex\u002F5.media\u002F2.qbittorrent",{"title":185,"path":186,"stem":187},"Automation","\u002Fen\u002Fserveex\u002Fmedia\u002Fservarr","en\u002F3.serveex\u002F5.media\u002F3.servarr",{"title":189,"icon":190,"path":191,"stem":192,"children":193,"page":15},"Cloud Drive & Photos","i-lucide-cloud-upload","\u002Fen\u002Fserveex\u002Fcloud","en\u002F3.serveex\u002F6.cloud",[194,198],{"title":195,"path":196,"stem":197},"Immich","\u002Fen\u002Fserveex\u002Fcloud\u002Fimmich","en\u002F3.serveex\u002F6.cloud\u002F1.immich",{"title":199,"path":200,"stem":201},"Nextcloud","\u002Fen\u002Fserveex\u002Fcloud\u002Fnextcloud","en\u002F3.serveex\u002F6.cloud\u002F2.nextcloud",{"title":203,"icon":204,"path":205,"stem":206,"children":207,"page":15},"File & share","i-lucide-folder-tree","\u002Fen\u002Fserveex\u002Ffiles","en\u002F3.serveex\u002F7.files",[208,212],{"title":209,"path":210,"stem":211},"File Browser Quantum","\u002Fen\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum","en\u002F3.serveex\u002F7.files\u002F1.file-browser-quantum",{"title":213,"path":214,"stem":215},"Pingvin","\u002Fen\u002Fserveex\u002Ffiles\u002Fpingvin","en\u002F3.serveex\u002F7.files\u002F2.pingvin",{"title":217,"icon":218,"path":219,"stem":220,"children":221,"page":15},"Developpement","i-lucide-code-xml","\u002Fen\u002Fserveex\u002Fdevelopment","en\u002F3.serveex\u002F8.development",[222,226,230],{"title":223,"path":224,"stem":225},"Code-Server","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fcode-server","en\u002F3.serveex\u002F8.development\u002F1.code-server",{"title":227,"path":228,"stem":229},"Forgejo","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fforgejo","en\u002F3.serveex\u002F8.development\u002F2.forgejo",{"title":231,"path":232,"stem":233},"IT Tools","\u002Fen\u002Fserveex\u002Fdevelopment\u002Fit-tools","en\u002F3.serveex\u002F8.development\u002F3.it-tools",{"title":235,"icon":236,"path":237,"stem":238,"children":239,"page":15},"Useful Apps","i-lucide-award","\u002Fen\u002Fserveex\u002Fapps","en\u002F3.serveex\u002F9.apps",[240,244],{"title":241,"path":242,"stem":243},"Adguard Home","\u002Fen\u002Fserveex\u002Fapps\u002Fadguard","en\u002F3.serveex\u002F9.apps\u002F1.adguard",{"title":245,"path":246,"stem":247},"Vaultwarden","\u002Fen\u002Fserveex\u002Fapps\u002Fvaultwarden","en\u002F3.serveex\u002F9.apps\u002F2.vaultwarden",{"title":249,"icon":250,"path":251,"stem":252,"children":253,"page":15},"Advanced","i-lucide-flask-conical","\u002Fen\u002Fserveex\u002Fadvanced","en\u002F3.serveex\u002F91.advanced",[254,258],{"title":255,"path":256,"stem":257},"Authentik","\u002Fen\u002Fserveex\u002Fadvanced\u002Fauthentik","en\u002F3.serveex\u002F91.advanced\u002F1.authentik",{"title":259,"path":260,"stem":261},"Arcane","\u002Fen\u002Fserveex\u002Fadvanced\u002Farcane","en\u002F3.serveex\u002F91.advanced\u002F2.arcane",{"title":263,"icon":264,"path":265,"stem":266,"children":267,"page":15},"Stockeex","i-noto-computer-disk","\u002Fen\u002Fstockeex","en\u002F4.stockeex",[268],{"title":101,"path":269,"stem":270,"icon":25},"\u002Fen\u002Fstockeex\u002Fintroduction","en\u002F4.stockeex\u002F1.introduction",{"title":272,"icon":273,"path":274,"stem":275,"children":276,"page":15},"My nonsense","i-noto-test-tube","\u002Fen\u002Fnonsense","en\u002F5.nonsense",[277,280,302],{"title":272,"path":278,"stem":279,"icon":25},"\u002Fen\u002Fnonsense\u002Fsummary","en\u002F5.nonsense\u002F1.summary",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":15},"Python","i-lucide-file-code-2","\u002Fen\u002Fnonsense\u002Fpython","en\u002F5.nonsense\u002F2.python",[286,290,294,298],{"title":287,"path":288,"stem":289},"Nvidia Stock Bot","\u002Fen\u002Fnonsense\u002Fpython\u002Fnvidia-stock-bot","en\u002F5.nonsense\u002F2.python\u002F1.nvidia-stock-bot",{"title":291,"path":292,"stem":293},"Adguard CIDRE","\u002Fen\u002Fnonsense\u002Fpython\u002Fadguard-cidre","en\u002F5.nonsense\u002F2.python\u002F2.adguard-cidre",{"title":295,"path":296,"stem":297},"Lumeex","\u002Fen\u002Fnonsense\u002Fpython\u002Flumeex","en\u002F5.nonsense\u002F2.python\u002F3.lumeex",{"title":299,"path":300,"stem":301},"Instameex","\u002Fen\u002Fnonsense\u002Fpython\u002Finstameex","en\u002F5.nonsense\u002F2.python\u002F4.instameex",{"title":303,"icon":304,"path":305,"stem":306,"children":307,"page":15},"Bash","i-lucide-file-terminal","\u002Fen\u002Fnonsense\u002Fbash","en\u002F5.nonsense\u002F3.bash",[308,312,316,320,324,328],{"title":309,"path":310,"stem":311},"Servarr corrector","\u002Fen\u002Fnonsense\u002Fbash\u002Fservarr-duplicates","en\u002F5.nonsense\u002F3.bash\u002F1.servarr-duplicates",{"title":313,"path":314,"stem":315},"LUKS Backup","\u002Fen\u002Fnonsense\u002Fbash\u002Fluks-backup","en\u002F5.nonsense\u002F3.bash\u002F2.luks-backup",{"title":317,"path":318,"stem":319},"Socat Proxy","\u002Fen\u002Fnonsense\u002Fbash\u002Fsocat-proxy","en\u002F5.nonsense\u002F3.bash\u002F3.socat-proxy",{"title":321,"path":322,"stem":323},"HotDisk","\u002Fen\u002Fnonsense\u002Fbash\u002Fhotdisk","en\u002F5.nonsense\u002F3.bash\u002F4.hotdisk",{"title":325,"path":326,"stem":327},"Backrest Docker Stop","\u002Fen\u002Fnonsense\u002Fbash\u002Fbackrest-docker-stop","en\u002F5.nonsense\u002F3.bash\u002F5.backrest-docker-stop",{"title":329,"path":330,"stem":331},"rm Confirmation Guard","\u002Fen\u002Fnonsense\u002Fbash\u002Frm-confirmation","en\u002F5.nonsense\u002F3.bash\u002F6.rm-confirmation",{"title":333,"icon":334,"path":335,"stem":336,"children":337,"page":15},"Recycled","i-noto-recycling-symbol","\u002Fen\u002Frecycled","en\u002F6.recycled",[338,341,355],{"title":333,"path":339,"stem":340,"icon":25},"\u002Fen\u002Frecycled\u002Fsummary","en\u002F6.recycled\u002F1.summary",{"title":342,"icon":343,"path":344,"stem":345,"children":346,"page":15},"Deprecated","i-lucide-trash-2","\u002Fen\u002Frecycled\u002Fdeprecated","en\u002F6.recycled\u002F2.deprecated",[347,351],{"title":348,"path":349,"stem":350},"Wireguard 14","\u002Fen\u002Frecycled\u002Fdeprecated\u002Fwireguard-14","en\u002F6.recycled\u002F2.deprecated\u002F1.wireguard-14",{"title":352,"path":353,"stem":354},"File Browser","\u002Fen\u002Frecycled\u002Fdeprecated\u002Ffile-browser","en\u002F6.recycled\u002F2.deprecated\u002F2.file-browser",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":15},"Alternatives","i-lucide-arrow-left-right","\u002Fen\u002Frecycled\u002Falternatives","en\u002F6.recycled\u002F3.alternatives",[361,365,369,373],{"title":362,"path":363,"stem":364},"Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fplex","en\u002F6.recycled\u002F3.alternatives\u002F1.plex",{"title":366,"path":367,"stem":368},"Qbittorrent for Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fqbittorrent-for-plex","en\u002F6.recycled\u002F3.alternatives\u002F2.qbittorrent for plex",{"title":370,"path":371,"stem":372},"Servarr for Plex","\u002Fen\u002Frecycled\u002Falternatives\u002Fservarr-for-plex","en\u002F6.recycled\u002F3.alternatives\u002F3.servarr for plex",{"title":374,"path":375,"stem":376},"Gitea","\u002Fen\u002Frecycled\u002Falternatives\u002Fgitea","en\u002F6.recycled\u002F3.alternatives\u002F4.gitea",{"id":378,"title":366,"body":379,"contributors":2099,"description":2101,"extension":2102,"hideCopyPage":15,"hideHeader":15,"hideToc":15,"links":2103,"meta":2104,"navigation":740,"path":367,"seo":2105,"stem":368,"__hash__":2106},"docs_en\u002Fen\u002F6.recycled\u002F3.alternatives\u002F2.qbittorrent for plex.md",{"type":380,"value":381,"toc":2080},"minimark",[382,390,399,407,410,455,458,463,468,472,1412,1416,1459,1466,1477,1481,1492,1495,1524,2061,2068,2071,2076],[383,384],"ellipsis",{"blur":385,"left":386,"top":387,"width":388,"z-index":389},"140px","0px","10rem","40rem","60",[391,392,394,395,398],"note",{"to":393},"\u002Fserveex\u002Fmedia\u002Fqbittorrent","This is the seedbox setup paired with Plex rather than Jellyfin, kept here for reference. See ",[396,397,181],"strong",{}," for the same setup paired with Jellyfin, the recommended alternative since Plex isn't fully self-hosted (its own relay, a required account) and gates features behind a Plex Pass paywall.",[400,401,402],"p",{},[403,404],"img",{"alt":405,"src":406},"Picture","\u002Fimg\u002Fserveex\u002Fqbit-vue.jpeg",[400,408,409],{},"To safely download your favorite media, we'll build a system using:",[411,412,413,423,431,438,446],"ul",{},[414,415,416,422],"li",{},[417,418,181],"a",{"href":419,"rel":420},"https:\u002F\u002Fgithub.com\u002Flinuxserver\u002Fdocker-qbittorrent",[421],"nofollow"," as the BitTorrent client",[414,424,425,430],{},[417,426,429],{"href":427,"rel":428},"https:\u002F\u002Fprotonvpn.com\u002Ftorrenting",[421],"Proton VPN Plus",", a VPN to secure your traffic. You need a subscription (promos available) to access the BitTorrent protocol. You can also use another VPN as long as it supports BitTorrent.",[414,432,433],{},[417,434,437],{"href":435,"rel":436},"https:\u002F\u002Fgithub.com\u002Fqdm12\u002Fgluetun",[421],"Gluetun",[414,439,440,445],{},[417,441,444],{"href":442,"rel":443},"https:\u002F\u002Fcodeberg.org\u002FTechnoSam\u002Fqbittorrent-gluetun-port-update",[421],"Qbittorrent port update"," to automatically update the VPN port (which changes regularly).",[414,447,448,449,454],{},"The ",[417,450,453],{"href":451,"rel":452},"https:\u002F\u002Fgithub.com\u002Fgabe565\u002Flinuxserver-mod-vuetorrent",[421],"VueTorrent"," mod for a modern and intuitive UI.",[400,456,457],{},"Here’s the system we’ll set up:",[400,459,460],{},[403,461],{"alt":405,"src":462},"\u002Fimg\u002Fserveex\u002Fqbit.svg",[464,465,467],"h2",{"id":466},"configuration","Configuration",[469,470],"file-tree",{":tree":471},"{\"\u002F\":[{\"srv\":[{\"docker\":[{\"seedbox\":[{\"qbittorrent\":[\"config\u002F\"]},\"gluetun\u002F\",\"compose.yaml\",\".env\"]}]}]},{\"media # linked to Plex and Qbittorrent\":[\"downloads\u002F # generic downloads, selected in settings\",\"movies\u002F # used for downloading movies\",\"tvseries\u002F # used for downloading TV shows\"]}]}",[473,474,476,481,493,520,524,535,935,1008,1012,1019,1026,1029,1032,1057,1064,1079,1086,1101,1104,1193,1209,1213,1218,1279,1282,1408],"steps",{"level":475},"3",[477,478,480],"h3",{"id":479},"create-the-downloads-folder","Create the downloads folder",[400,482,483,484,488,489,492],{},"If not already done, create the ",[485,486,487],"code",{},"downloads"," folder under ",[485,490,491],{},"\u002Fmedia",":",[494,495,501],"pre",{"className":496,"code":497,"filename":498,"language":499,"meta":500,"style":500},"language-bash shiki shiki-themes github-dark material-theme github-dark","mkdir -P \u002Fmedia\u002Fdownloads\n","Terminal","bash","",[485,502,503],{"__ignoreMap":500},[504,505,508,512,516],"span",{"class":506,"line":507},"line",1,[504,509,511],{"class":510},"sEgDM","mkdir",[504,513,515],{"class":514},"sJWha"," -P",[504,517,519],{"class":518},"s11XM"," \u002Fmedia\u002Fdownloads\n",[477,521,523],{"id":522},"deploy-the-stack","Deploy the stack",[400,525,526,527,530,531,534],{},"Open Dockge, click on ",[485,528,529],{},"compose",", and name the stack ",[485,532,533],{},"seedbox",". Paste the following config:",[494,536,541],{"className":537,"code":538,"filename":539,"language":540,"meta":500,"style":500},"language-yaml shiki shiki-themes github-dark material-theme github-dark","---\nservices:\n  qbit:\n    image: ghcr.io\u002Flinuxserver\u002Fqbittorrent:libtorrentv1\n    container_name: qbittorrent\n    restart: unless-stopped\n    network_mode: service:gluetun\n    mem_limit: 4g\n    environment:\n      - DOCKER_MODS=ghcr.io\u002Fgabe565\u002Flinuxserver-mod-vuetorrent|ghcr.io\u002Ft-anc\u002Fgsp-qbittorent-gluetun-sync-port-mod:main\n      - TZ=Europe\u002FParis\n      - PUID=${PUID}\n      - PGID=${GUID}\n      - WEBUI_PORT=${UI_PORT}\n      - GSP_GTN_API_KEY=${GSP_KEY}\n      - GSP_QBT_USERNAME=${ID}\n      - GSP_QBT_PASSWORD=${PW}\n    volumes:\n      - \u002Fsrv\u002Fdocker\u002Fseedbox\u002Fqbittorrent\u002Fconfig:\u002Fconfig\n      - \u002Fmedia:\u002Fmedia\n    depends_on:\n      - gluetun\n\n  gluetun:\n    image: qmcgaw\u002Fgluetun:v3.41.3\n    container_name: gluetun\n    restart: unless-stopped\n    mem_limit: 4g\n    volumes:\n      - \u002Fsrv\u002Fdocker\u002Fgluetun\u002Fconfig.toml:\u002Fgluetun\u002Fauth\u002Fconfig.toml:ro\n    devices:\n      - \u002Fdev\u002Fnet\u002Ftun:\u002Fdev\u002Fnet\u002Ftun\n    ports:\n      - ${UI_PORT}:5695 # Port de la web-ui\n      - 8000:8000 # Port de controle de Gluetun\n    cap_add:\n      - NET_ADMIN\n    environment:\n      - TZ=Europe\u002FParis\n      - VPN_SERVICE_PROVIDER=protonvpn\n      - VPN_PORT_FORWARDING=on\n      - VPN_PORT_FORWARDING_PROVIDER=protonvpn\n      - VPN_TYPE=wireguard\n      - WIREGUARD_PRIVATE_KEY=${PR_KEY}\n      - SERVER_COUNTRIES=France\n      - PORT_FORWARD_ONLY=on\n","compose.yaml","yaml",[485,542,543,548,559,567,578,589,600,611,622,630,639,647,655,663,671,679,687,695,703,711,719,727,735,742,750,760,769,778,787,794,802,810,818,826,838,849,857,865,872,879,887,895,903,911,919,927],{"__ignoreMap":500},[504,544,545],{"class":506,"line":507},[504,546,547],{"class":510},"---\n",[504,549,551,555],{"class":506,"line":550},2,[504,552,554],{"class":553},"sRuoG","services",[504,556,558],{"class":557},"s8jd1",":\n",[504,560,562,565],{"class":506,"line":561},3,[504,563,564],{"class":553},"  qbit",[504,566,558],{"class":557},[504,568,570,573,575],{"class":506,"line":569},4,[504,571,572],{"class":553},"    image",[504,574,492],{"class":557},[504,576,577],{"class":518}," ghcr.io\u002Flinuxserver\u002Fqbittorrent:libtorrentv1\n",[504,579,581,584,586],{"class":506,"line":580},5,[504,582,583],{"class":553},"    container_name",[504,585,492],{"class":557},[504,587,588],{"class":518}," qbittorrent\n",[504,590,592,595,597],{"class":506,"line":591},6,[504,593,594],{"class":553},"    restart",[504,596,492],{"class":557},[504,598,599],{"class":518}," unless-stopped\n",[504,601,603,606,608],{"class":506,"line":602},7,[504,604,605],{"class":553},"    network_mode",[504,607,492],{"class":557},[504,609,610],{"class":518}," service:gluetun\n",[504,612,614,617,619],{"class":506,"line":613},8,[504,615,616],{"class":553},"    mem_limit",[504,618,492],{"class":557},[504,620,621],{"class":518}," 4g\n",[504,623,625,628],{"class":506,"line":624},9,[504,626,627],{"class":553},"    environment",[504,629,558],{"class":557},[504,631,633,636],{"class":506,"line":632},10,[504,634,635],{"class":557},"      -",[504,637,638],{"class":518}," DOCKER_MODS=ghcr.io\u002Fgabe565\u002Flinuxserver-mod-vuetorrent|ghcr.io\u002Ft-anc\u002Fgsp-qbittorent-gluetun-sync-port-mod:main\n",[504,640,642,644],{"class":506,"line":641},11,[504,643,635],{"class":557},[504,645,646],{"class":518}," TZ=Europe\u002FParis\n",[504,648,650,652],{"class":506,"line":649},12,[504,651,635],{"class":557},[504,653,654],{"class":518}," PUID=${PUID}\n",[504,656,658,660],{"class":506,"line":657},13,[504,659,635],{"class":557},[504,661,662],{"class":518}," PGID=${GUID}\n",[504,664,666,668],{"class":506,"line":665},14,[504,667,635],{"class":557},[504,669,670],{"class":518}," WEBUI_PORT=${UI_PORT}\n",[504,672,674,676],{"class":506,"line":673},15,[504,675,635],{"class":557},[504,677,678],{"class":518}," GSP_GTN_API_KEY=${GSP_KEY}\n",[504,680,682,684],{"class":506,"line":681},16,[504,683,635],{"class":557},[504,685,686],{"class":518}," GSP_QBT_USERNAME=${ID}\n",[504,688,690,692],{"class":506,"line":689},17,[504,691,635],{"class":557},[504,693,694],{"class":518}," GSP_QBT_PASSWORD=${PW}\n",[504,696,698,701],{"class":506,"line":697},18,[504,699,700],{"class":553},"    volumes",[504,702,558],{"class":557},[504,704,706,708],{"class":506,"line":705},19,[504,707,635],{"class":557},[504,709,710],{"class":518}," \u002Fsrv\u002Fdocker\u002Fseedbox\u002Fqbittorrent\u002Fconfig:\u002Fconfig\n",[504,712,714,716],{"class":506,"line":713},20,[504,715,635],{"class":557},[504,717,718],{"class":518}," \u002Fmedia:\u002Fmedia\n",[504,720,722,725],{"class":506,"line":721},21,[504,723,724],{"class":553},"    depends_on",[504,726,558],{"class":557},[504,728,730,732],{"class":506,"line":729},22,[504,731,635],{"class":557},[504,733,734],{"class":518}," gluetun\n",[504,736,738],{"class":506,"line":737},23,[504,739,741],{"emptyLinePlaceholder":740},true,"\n",[504,743,745,748],{"class":506,"line":744},24,[504,746,747],{"class":553},"  gluetun",[504,749,558],{"class":557},[504,751,753,755,757],{"class":506,"line":752},25,[504,754,572],{"class":553},[504,756,492],{"class":557},[504,758,759],{"class":518}," qmcgaw\u002Fgluetun:v3.41.3\n",[504,761,763,765,767],{"class":506,"line":762},26,[504,764,583],{"class":553},[504,766,492],{"class":557},[504,768,734],{"class":518},[504,770,772,774,776],{"class":506,"line":771},27,[504,773,594],{"class":553},[504,775,492],{"class":557},[504,777,599],{"class":518},[504,779,781,783,785],{"class":506,"line":780},28,[504,782,616],{"class":553},[504,784,492],{"class":557},[504,786,621],{"class":518},[504,788,790,792],{"class":506,"line":789},29,[504,791,700],{"class":553},[504,793,558],{"class":557},[504,795,797,799],{"class":506,"line":796},30,[504,798,635],{"class":557},[504,800,801],{"class":518}," \u002Fsrv\u002Fdocker\u002Fgluetun\u002Fconfig.toml:\u002Fgluetun\u002Fauth\u002Fconfig.toml:ro\n",[504,803,805,808],{"class":506,"line":804},31,[504,806,807],{"class":553},"    devices",[504,809,558],{"class":557},[504,811,813,815],{"class":506,"line":812},32,[504,814,635],{"class":557},[504,816,817],{"class":518}," \u002Fdev\u002Fnet\u002Ftun:\u002Fdev\u002Fnet\u002Ftun\n",[504,819,821,824],{"class":506,"line":820},33,[504,822,823],{"class":553},"    ports",[504,825,558],{"class":557},[504,827,829,831,834],{"class":506,"line":828},34,[504,830,635],{"class":557},[504,832,833],{"class":518}," ${UI_PORT}:5695",[504,835,837],{"class":836},"sDvJj"," # Port de la web-ui\n",[504,839,841,843,846],{"class":506,"line":840},35,[504,842,635],{"class":557},[504,844,845],{"class":518}," 8000:8000",[504,847,848],{"class":836}," # Port de controle de Gluetun\n",[504,850,852,855],{"class":506,"line":851},36,[504,853,854],{"class":553},"    cap_add",[504,856,558],{"class":557},[504,858,860,862],{"class":506,"line":859},37,[504,861,635],{"class":557},[504,863,864],{"class":518}," NET_ADMIN\n",[504,866,868,870],{"class":506,"line":867},38,[504,869,627],{"class":553},[504,871,558],{"class":557},[504,873,875,877],{"class":506,"line":874},39,[504,876,635],{"class":557},[504,878,646],{"class":518},[504,880,882,884],{"class":506,"line":881},40,[504,883,635],{"class":557},[504,885,886],{"class":518}," VPN_SERVICE_PROVIDER=protonvpn\n",[504,888,890,892],{"class":506,"line":889},41,[504,891,635],{"class":557},[504,893,894],{"class":518}," VPN_PORT_FORWARDING=on\n",[504,896,898,900],{"class":506,"line":897},42,[504,899,635],{"class":557},[504,901,902],{"class":518}," VPN_PORT_FORWARDING_PROVIDER=protonvpn\n",[504,904,906,908],{"class":506,"line":905},43,[504,907,635],{"class":557},[504,909,910],{"class":518}," VPN_TYPE=wireguard\n",[504,912,914,916],{"class":506,"line":913},44,[504,915,635],{"class":557},[504,917,918],{"class":518}," WIREGUARD_PRIVATE_KEY=${PR_KEY}\n",[504,920,922,924],{"class":506,"line":921},45,[504,923,635],{"class":557},[504,925,926],{"class":518}," SERVER_COUNTRIES=France\n",[504,928,930,932],{"class":506,"line":929},46,[504,931,635],{"class":557},[504,933,934],{"class":518}," PORT_FORWARD_ONLY=on\n",[936,937,938,945],"tip",{"icon":500},[400,939,940,941,944],{},"✨ ",[396,942,943],{},"Tip:"," Add the Watchtower label in each container to automate updates",[494,946,948],{"className":537,"code":947,"filename":539,"language":540,"meta":500,"style":500},"---\nservices:\n  qbittorrent:\n    #...\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n  gluetun:\n    #...\n    labels:\n      - com.centurylinklabs.watchtower.enable=true\n",[485,949,950,954,960,967,972,979,986,992,996,1002],{"__ignoreMap":500},[504,951,952],{"class":506,"line":507},[504,953,547],{"class":510},[504,955,956,958],{"class":506,"line":550},[504,957,554],{"class":553},[504,959,558],{"class":557},[504,961,962,965],{"class":506,"line":561},[504,963,964],{"class":553},"  qbittorrent",[504,966,558],{"class":557},[504,968,969],{"class":506,"line":569},[504,970,971],{"class":836},"    #...\n",[504,973,974,977],{"class":506,"line":580},[504,975,976],{"class":553},"    labels",[504,978,558],{"class":557},[504,980,981,983],{"class":506,"line":591},[504,982,635],{"class":557},[504,984,985],{"class":518}," com.centurylinklabs.watchtower.enable=true\n",[504,987,988,990],{"class":506,"line":602},[504,989,747],{"class":553},[504,991,558],{"class":557},[504,993,994],{"class":506,"line":613},[504,995,971],{"class":836},[504,997,998,1000],{"class":506,"line":624},[504,999,976],{"class":553},[504,1001,558],{"class":557},[504,1003,1004,1006],{"class":506,"line":632},[504,1005,635],{"class":557},[504,1007,985],{"class":518},[477,1009,1011],{"id":1010},"configure-the-port-forwarding-sync","Configure the port-forwarding sync",[400,1013,1014,1015,1018],{},"Before editing the ",[485,1016,1017],{},".env"," in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to Qbittorrent.",[400,1020,1021,1022,1025],{},"We’ve added the mod ",[485,1023,1024],{},"ghcr.io\u002Ft-anc\u002Fgsp-qbittorent-gluetun-sync-port-mod"," to the container.",[400,1027,1028],{},"We now need to allow the mod to fetch info from Gluetun, which only allows encrypted communication via its API.",[400,1030,1031],{},"Open a terminal to generate the authentication key:",[494,1033,1035],{"className":496,"code":1034,"filename":498,"language":499,"meta":500,"style":500},"sudo docker run --rm qmcgaw\u002Fgluetun genkey\n",[485,1036,1037],{"__ignoreMap":500},[504,1038,1039,1042,1045,1048,1051,1054],{"class":506,"line":507},[504,1040,1041],{"class":510},"sudo",[504,1043,1044],{"class":518}," docker",[504,1046,1047],{"class":518}," run",[504,1049,1050],{"class":514}," --rm",[504,1052,1053],{"class":518}," qmcgaw\u002Fgluetun",[504,1055,1056],{"class":518}," genkey\n",[400,1058,1059,1060,1063],{},"Note the key, then create the ",[485,1061,1062],{},"\u002Fsrv\u002Fdocker\u002Fgluetun"," folder:",[494,1065,1067],{"className":496,"code":1066,"filename":498,"language":499,"meta":500,"style":500},"sudo mkdir \u002Fsrv\u002Fdocker\u002Fgluetun\n",[485,1068,1069],{"__ignoreMap":500},[504,1070,1071,1073,1076],{"class":506,"line":507},[504,1072,1041],{"class":510},[504,1074,1075],{"class":518}," mkdir",[504,1077,1078],{"class":518}," \u002Fsrv\u002Fdocker\u002Fgluetun\n",[400,1080,1081,1082,1085],{},"Create the ",[485,1083,1084],{},"config.toml"," file:",[494,1087,1089],{"className":496,"code":1088,"filename":498,"language":499,"meta":500,"style":500},"sudo nano \u002Fsrv\u002Fdocker\u002Fgluetun\u002Fconfig.toml\n",[485,1090,1091],{"__ignoreMap":500},[504,1092,1093,1095,1098],{"class":506,"line":507},[504,1094,1041],{"class":510},[504,1096,1097],{"class":518}," nano",[504,1099,1100],{"class":518}," \u002Fsrv\u002Fdocker\u002Fgluetun\u002Fconfig.toml\n",[400,1102,1103],{},"Enter:",[494,1105,1109],{"className":1106,"code":1107,"filename":1084,"language":1108,"meta":500,"style":500},"language-toml shiki shiki-themes github-dark material-theme github-dark","[[roles]]\nname = \"t-anc\u002FGSP-Qbittorent-Gluetun-sync-port-mod\"\nroutes = [\"GET \u002Fv1\u002Fportforward\"]\nauth = \"apikey\"\napikey = \"your_key_here\" # key you just generated\n","toml",[485,1110,1111,1122,1141,1162,1176],{"__ignoreMap":500},[504,1112,1113,1116,1119],{"class":506,"line":507},[504,1114,1115],{"class":557},"[[",[504,1117,1118],{"class":510},"roles",[504,1120,1121],{"class":557},"]]\n",[504,1123,1124,1128,1131,1135,1138],{"class":506,"line":550},[504,1125,1127],{"class":1126},"slcoZ","name ",[504,1129,1130],{"class":557},"=",[504,1132,1134],{"class":1133},"s8K8j"," \"",[504,1136,1137],{"class":518},"t-anc\u002FGSP-Qbittorent-Gluetun-sync-port-mod",[504,1139,1140],{"class":1133},"\"\n",[504,1142,1143,1146,1148,1151,1154,1157,1159],{"class":506,"line":561},[504,1144,1145],{"class":1126},"routes ",[504,1147,1130],{"class":557},[504,1149,1150],{"class":557}," [",[504,1152,1153],{"class":1133},"\"",[504,1155,1156],{"class":518},"GET \u002Fv1\u002Fportforward",[504,1158,1153],{"class":1133},[504,1160,1161],{"class":557},"]\n",[504,1163,1164,1167,1169,1171,1174],{"class":506,"line":569},[504,1165,1166],{"class":1126},"auth ",[504,1168,1130],{"class":557},[504,1170,1134],{"class":1133},[504,1172,1173],{"class":518},"apikey",[504,1175,1140],{"class":1133},[504,1177,1178,1181,1183,1185,1188,1190],{"class":506,"line":580},[504,1179,1180],{"class":1126},"apikey ",[504,1182,1130],{"class":557},[504,1184,1134],{"class":1133},[504,1186,1187],{"class":518},"your_key_here",[504,1189,1153],{"class":1133},[504,1191,1192],{"class":836}," # key you just generated\n",[400,1194,1195,1196,1200,1201,1204,1205,1208],{},"Press ",[1197,1198],"kbd",{"value":1199},"Ctrl+O",", then ",[1197,1202],{"value":1203},"Enter"," to save, and ",[1197,1206],{"value":1207},"Ctrl+X"," to exit.",[477,1210,1212],{"id":1211},"set-your-environment-variables","Set your environment variables",[400,1214,1215,1216,492],{},"In Dockge, fill in the variables in ",[485,1217,1017],{},[494,1219,1223],{"className":1220,"code":1221,"filename":1017,"language":1222,"meta":500,"style":500},"language-properties shiki shiki-themes github-dark material-theme github-dark","PUID=\nGUID=\nUI_PORT=\nPR_KEY=\nGSP_KEY= # the key you generated and entered in config.toml\nID=\nPW=\n","properties",[485,1224,1225,1234,1241,1248,1255,1265,1272],{"__ignoreMap":500},[504,1226,1227,1231],{"class":506,"line":507},[504,1228,1230],{"class":1229},"szyEh","PUID",[504,1232,1233],{"class":557},"=\n",[504,1235,1236,1239],{"class":506,"line":550},[504,1237,1238],{"class":1229},"GUID",[504,1240,1233],{"class":557},[504,1242,1243,1246],{"class":506,"line":561},[504,1244,1245],{"class":1229},"UI_PORT",[504,1247,1233],{"class":557},[504,1249,1250,1253],{"class":506,"line":569},[504,1251,1252],{"class":1229},"PR_KEY",[504,1254,1233],{"class":557},[504,1256,1257,1260,1262],{"class":506,"line":580},[504,1258,1259],{"class":1229},"GSP_KEY",[504,1261,1130],{"class":557},[504,1263,1264],{"class":836}," # the key you generated and entered in config.toml\n",[504,1266,1267,1270],{"class":506,"line":591},[504,1268,1269],{"class":1229},"ID",[504,1271,1233],{"class":557},[504,1273,1274,1277],{"class":506,"line":602},[504,1275,1276],{"class":1229},"PW",[504,1278,1233],{"class":557},[400,1280,1281],{},"Detailed info:",[1283,1284,1285,1301],"table",{},[1286,1287,1288],"thead",{},[1289,1290,1291,1295,1298],"tr",{},[1292,1293,1294],"th",{},"Variable",[1292,1296,1297],{},"Description",[1292,1299,1300],{},"Example",[1302,1303,1304,1323,1338,1352,1366,1380,1394],"tbody",{},[1289,1305,1306,1311,1318],{},[1307,1308,1309],"td",{},[485,1310,1230],{},[1307,1312,1313,1314,1317],{},"User ID (",[485,1315,1316],{},"id yourusername",")",[1307,1319,1320],{},[485,1321,1322],{},"1000",[1289,1324,1325,1329,1334],{},[1307,1326,1327],{},[485,1328,1238],{},[1307,1330,1331,1332,1317],{},"Group ID (",[485,1333,1316],{},[1307,1335,1336],{},[485,1337,1322],{},[1289,1339,1340,1344,1347],{},[1307,1341,1342],{},[485,1343,1245],{},[1307,1345,1346],{},"Port for accessing the web UI",[1307,1348,1349],{},[485,1350,1351],{},"5695",[1289,1353,1354,1358,1361],{},[1307,1355,1356],{},[485,1357,1252],{},[1307,1359,1360],{},"Private key from Proton",[1307,1362,1363],{},[485,1364,1365],{},"buKsjNHLyzKMM1qYnzOy4s7SHfly",[1289,1367,1368,1372,1375],{},[1307,1369,1370],{},[485,1371,1259],{},[1307,1373,1374],{},"Key you generated for port update",[1307,1376,1377],{},[485,1378,1379],{},"MnBa47MeVmk7xiv",[1289,1381,1382,1386,1389],{},[1307,1383,1384],{},[485,1385,1269],{},[1307,1387,1388],{},"Qbittorrent UI login username",[1307,1390,1391],{},[485,1392,1393],{},"user",[1289,1395,1396,1400,1403],{},[1307,1397,1398],{},[485,1399,1276],{},[1307,1401,1402],{},"Qbittorrent UI password",[1307,1404,1405],{},[485,1406,1407],{},"password",[477,1409,1411],{"id":1410},"done","Done !",[464,1413,1415],{"id":1414},"deployment","Deployment",[473,1417,1418,1422,1425,1435,1439,1446,1453,1456],{"level":475},[477,1419,1421],{"id":1420},"deploy-the-container","Deploy the container",[400,1423,1424],{},"Once done, deploy the container.",[1426,1427,1428],"warning",{},[396,1429,1430,1431,1434],{},"Startup logs will show a temporary password for ",[485,1432,1433],{},"admin"," user",[477,1436,1438],{"id":1437},"log-in-and-secure-your-account","Log in and secure your account",[400,1440,1441,1442,1445],{},"Login at ",[485,1443,1444],{},"http:\u002F\u002Fserver-ip:5695"," (or the port you set).",[1447,1448,1449,1452],"caution",{},[396,1450,1451],{},"If login fails:"," check your firewall rules.",[400,1454,1455],{},"Change your username and password in the \"webui\" settings.",[477,1457,1411],{"id":1458},"done-1",[400,1460,1461,1462,1465],{},"You're done! In Qbittorrent settings, under \"Downloads\", set ",[485,1463,1464],{},"\u002Fmedia\u002Fdownloads"," as the default folder.",[400,1467,1468,1469,1472,1473,1476],{},"When adding a download, remember to select the proper directory so Plex can sync correctly (",[485,1470,1471],{},"\u002Fmedia\u002Fmovies"," or ",[485,1474,1475],{},"\u002Fmedia\u002Ftvseries","). You can also automate this with categories and folders.",[464,1478,1480],{"id":1479},"exposing-the-web-ui","Exposing the Web UI",[1426,1482,1483,1484,1487,1488,1491],{},"Qbittorrent does not support multi-factor authentication. Exposing it to the internet may put your system at risk. Only do this if you use MFA via ",[417,1485,255],{"href":1486},"\u002Fserveex\u002Fadvanced\u002Fauthentik\u002F",". Otherwise, don’t expose it with SWAG. Use a VPN like ",[417,1489,119],{"href":1490},"\u002Fserveex\u002Fcore\u002Fwireguard"," instead.",[400,1493,1494],{},"To start downloads from outside your home, without a VPN, you can expose the Qbittorrent web UI.",[391,1496,1497,1498,1501,1502,1505,1506,1509,1510,1514,1515,1518,1519,1523],{},"We assume you have the subdomain ",[485,1499,1500],{},"seedbox.mydomain.com"," with a ",[485,1503,1504],{},"CNAME"," pointing to ",[485,1507,1508],{},"mydomain.com"," in ",[417,1511,1513],{"href":1512},"\u002Fgeneral\u002Fnetworking\u002Fdns","DNS zone",". And that port ",[485,1516,1517],{},"443"," on your router is forwarded to your server in ",[417,1520,1522],{"href":1521},"\u002Fgeneral\u002Fnetworking\u002Fnat","NAT rules",", unless you’re using Cloudflare Zero Trust.",[473,1525,1526,1530,1533,1632,1635,1647,1651,1657,1667,1681,1684,2035,2050,2058],{"level":475},[477,1527,1529],{"id":1528},"add-the-seedbox-network-to-swag","Add the seedbox network to SWAG",[400,1531,1532],{},"In Dockge, edit the SWAG compose file and add Gluetun’s network:",[494,1534,1536],{"className":537,"code":1535,"filename":539,"language":540,"meta":500,"style":500},"---\nservices:\n  swag:\n    container_name: # ...\n    # ...\n    networks:\n      # ...\n      - seedbox\n\nnetworks:\n  # ...\n  seedbox:\n    name: seedbox_default\n    external: true\n",[485,1537,1538,1542,1548,1555,1564,1569,1576,1581,1588,1592,1599,1604,1611,1621],{"__ignoreMap":500},[504,1539,1540],{"class":506,"line":507},[504,1541,547],{"class":510},[504,1543,1544,1546],{"class":506,"line":550},[504,1545,554],{"class":553},[504,1547,558],{"class":557},[504,1549,1550,1553],{"class":506,"line":561},[504,1551,1552],{"class":553},"  swag",[504,1554,558],{"class":557},[504,1556,1557,1559,1561],{"class":506,"line":569},[504,1558,583],{"class":553},[504,1560,492],{"class":557},[504,1562,1563],{"class":836}," # ...\n",[504,1565,1566],{"class":506,"line":580},[504,1567,1568],{"class":836},"    # ...\n",[504,1570,1571,1574],{"class":506,"line":591},[504,1572,1573],{"class":553},"    networks",[504,1575,558],{"class":557},[504,1577,1578],{"class":506,"line":602},[504,1579,1580],{"class":836},"      # ...\n",[504,1582,1583,1585],{"class":506,"line":613},[504,1584,635],{"class":557},[504,1586,1587],{"class":518}," seedbox\n",[504,1589,1590],{"class":506,"line":624},[504,1591,741],{"emptyLinePlaceholder":740},[504,1593,1594,1597],{"class":506,"line":632},[504,1595,1596],{"class":553},"networks",[504,1598,558],{"class":557},[504,1600,1601],{"class":506,"line":641},[504,1602,1603],{"class":836},"  # ...\n",[504,1605,1606,1609],{"class":506,"line":649},[504,1607,1608],{"class":553},"  seedbox",[504,1610,558],{"class":557},[504,1612,1613,1616,1618],{"class":506,"line":657},[504,1614,1615],{"class":553},"    name",[504,1617,492],{"class":557},[504,1619,1620],{"class":518}," seedbox_default\n",[504,1622,1623,1626,1628],{"class":506,"line":665},[504,1624,1625],{"class":553},"    external",[504,1627,492],{"class":557},[504,1629,1631],{"class":1630},"s08Ry"," true\n",[400,1633,1634],{},"Click \"Deploy\" and wait for SWAG to fully initialize.",[391,1636,1637,1638,1641,1642,1646],{},"We assume the network name is ",[485,1639,1640],{},"seedbox_default",". You can confirm by checking the SWAG dashboard at ",[417,1643,1644],{"href":1644,"rel":1645},"http:\u002F\u002Fserver-ip:81",[421],".",[477,1648,1650],{"id":1649},"create-the-subdomainconf-file","Create the subdomain.conf file",[400,1652,1653,1654,1646],{},"Now create\u002Fedit ",[485,1655,1656],{},"seedbox.subdomain.conf",[936,1658,940,1660,1663,1664,1666],{"icon":500,"to":1659},"\u002Fserveex\u002Ffiles\u002Ffile-browser-quantum",[396,1661,1662],{},"Terminal-free tip:"," use ",[396,1665,352],{}," to edit files instead of using the terminal.",[494,1668,1670],{"className":496,"code":1669,"filename":498,"language":499,"meta":500,"style":500},"sudo nano \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Fseedbox.subdomain.conf\n",[485,1671,1672],{"__ignoreMap":500},[504,1673,1674,1676,1678],{"class":506,"line":507},[504,1675,1041],{"class":510},[504,1677,1097],{"class":518},[504,1679,1680],{"class":518}," \u002Fsrv\u002Fdocker\u002Fswag\u002Fconfig\u002Fnginx\u002Fproxy-confs\u002Fseedbox.subdomain.conf\n",[400,1682,1683],{},"Paste the following config (check the port):",[494,1685,1689],{"className":1686,"code":1687,"filename":1656,"language":1688,"meta":500,"style":500},"language-nginx shiki shiki-themes github-dark material-theme github-dark","## Version 2023\u002F12\u002F19\n\nserver {\n    listen 443 ssl;\n    listen [::]:443 ssl;\n\n    server_name seedbox.*;\n\n    include \u002Fconfig\u002Fnginx\u002Fssl.conf;\n\n    client_max_body_size 0;\n\n    #if ($lan-ip = yes) { set $geo-whitelist yes; }\n    #if ($geo-whitelist = no) { return 404; }\n    if ($geo-blacklist = no) { return 404; }\n\n    # enable for ldap auth (requires ldap-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n\n    # enable for Authelia (requires authelia-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n\n    # enable for Authentik (requires authentik-location.conf in the location block)\n    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n\n    location \u002F {\n        # enable the next two lines for http auth\n        #auth_basic \"Restricted\";\n        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n\n        # enable for ldap auth (requires ldap-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n\n        # enable for Authelia (requires authelia-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n\n        # enable for Authentik (requires authentik-server.conf in the server block)\n        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n\n        include \u002Fconfig\u002Fnginx\u002Fproxy.conf;\n        include \u002Fconfig\u002Fnginx\u002Fresolver.conf;\n        set $upstream_app gluetun;\n        set $upstream_port 5555;\n        set $upstream_proto http;\n        proxy_pass $upstream_proto:\u002F\u002F$upstream_app:$upstream_port;\n\n    }\n}\n","nginx",[485,1690,1691,1696,1700,1709,1724,1733,1737,1747,1751,1761,1765,1775,1779,1784,1789,1823,1827,1832,1837,1841,1846,1851,1855,1860,1865,1869,1880,1885,1890,1895,1899,1904,1909,1913,1918,1923,1927,1932,1937,1941,1951,1960,1972,1986,1997,2019,2023,2029],{"__ignoreMap":500},[504,1692,1693],{"class":506,"line":507},[504,1694,1695],{"class":836},"## Version 2023\u002F12\u002F19\n",[504,1697,1698],{"class":506,"line":550},[504,1699,741],{"emptyLinePlaceholder":740},[504,1701,1702,1706],{"class":506,"line":561},[504,1703,1705],{"class":1704},"sAoO4","server",[504,1707,1708],{"class":1126}," {\n",[504,1710,1711,1715,1718,1721],{"class":506,"line":569},[504,1712,1714],{"class":1713},"sJPTy","    listen ",[504,1716,1517],{"class":1717},"swwWl",[504,1719,1720],{"class":1126}," ssl",[504,1722,1723],{"class":557},";\n",[504,1725,1726,1728,1731],{"class":506,"line":580},[504,1727,1714],{"class":1713},[504,1729,1730],{"class":1126},"[::]:443 ssl",[504,1732,1723],{"class":557},[504,1734,1735],{"class":506,"line":591},[504,1736,741],{"emptyLinePlaceholder":740},[504,1738,1739,1742,1745],{"class":506,"line":602},[504,1740,1741],{"class":1713},"    server_name ",[504,1743,1744],{"class":1126},"seedbox.*",[504,1746,1723],{"class":557},[504,1748,1749],{"class":506,"line":613},[504,1750,741],{"emptyLinePlaceholder":740},[504,1752,1753,1756,1759],{"class":506,"line":624},[504,1754,1755],{"class":1713},"    include ",[504,1757,1758],{"class":1126},"\u002Fconfig\u002Fnginx\u002Fssl.conf",[504,1760,1723],{"class":557},[504,1762,1763],{"class":506,"line":632},[504,1764,741],{"emptyLinePlaceholder":740},[504,1766,1767,1770,1773],{"class":506,"line":641},[504,1768,1769],{"class":1713},"    client_max_body_size ",[504,1771,1772],{"class":1717},"0",[504,1774,1723],{"class":557},[504,1776,1777],{"class":506,"line":649},[504,1778,741],{"emptyLinePlaceholder":740},[504,1780,1781],{"class":506,"line":657},[504,1782,1783],{"class":836},"    #if ($lan-ip = yes) { set $geo-whitelist yes; }\n",[504,1785,1786],{"class":506,"line":665},[504,1787,1788],{"class":836},"    #if ($geo-whitelist = no) { return 404; }\n",[504,1790,1791,1795,1798,1801,1804,1807,1810,1814,1817,1820],{"class":506,"line":673},[504,1792,1794],{"class":1793},"sJLGa","    if",[504,1796,1797],{"class":1126}," (",[504,1799,1800],{"class":557},"$",[504,1802,1803],{"class":1126},"geo-blacklist ",[504,1805,1806],{"class":1713},"= ",[504,1808,1809],{"class":1126},"no) ",[504,1811,1813],{"class":1812},"sSoIa","{ ",[504,1815,1816],{"class":1793},"return",[504,1818,1819],{"class":1717}," 404",[504,1821,1822],{"class":1812},"; }\n",[504,1824,1825],{"class":506,"line":681},[504,1826,741],{"emptyLinePlaceholder":740},[504,1828,1829],{"class":506,"line":689},[504,1830,1831],{"class":836},"    # enable for ldap auth (requires ldap-location.conf in the location block)\n",[504,1833,1834],{"class":506,"line":697},[504,1835,1836],{"class":836},"    #include \u002Fconfig\u002Fnginx\u002Fldap-server.conf;\n",[504,1838,1839],{"class":506,"line":705},[504,1840,741],{"emptyLinePlaceholder":740},[504,1842,1843],{"class":506,"line":713},[504,1844,1845],{"class":836},"    # enable for Authelia (requires authelia-location.conf in the location block)\n",[504,1847,1848],{"class":506,"line":721},[504,1849,1850],{"class":836},"    #include \u002Fconfig\u002Fnginx\u002Fauthelia-server.conf;\n",[504,1852,1853],{"class":506,"line":729},[504,1854,741],{"emptyLinePlaceholder":740},[504,1856,1857],{"class":506,"line":737},[504,1858,1859],{"class":836},"    # enable for Authentik (requires authentik-location.conf in the location block)\n",[504,1861,1862],{"class":506,"line":744},[504,1863,1864],{"class":836},"    #include \u002Fconfig\u002Fnginx\u002Fauthentik-server.conf;\n",[504,1866,1867],{"class":506,"line":752},[504,1868,741],{"emptyLinePlaceholder":740},[504,1870,1871,1874,1877],{"class":506,"line":762},[504,1872,1873],{"class":1704},"    location",[504,1875,1876],{"class":510}," \u002F ",[504,1878,1879],{"class":1126},"{\n",[504,1881,1882],{"class":506,"line":771},[504,1883,1884],{"class":836},"        # enable the next two lines for http auth\n",[504,1886,1887],{"class":506,"line":780},[504,1888,1889],{"class":836},"        #auth_basic \"Restricted\";\n",[504,1891,1892],{"class":506,"line":789},[504,1893,1894],{"class":836},"        #auth_basic_user_file \u002Fconfig\u002Fnginx\u002F.htpasswd;\n",[504,1896,1897],{"class":506,"line":796},[504,1898,741],{"emptyLinePlaceholder":740},[504,1900,1901],{"class":506,"line":804},[504,1902,1903],{"class":836},"        # enable for ldap auth (requires ldap-server.conf in the server block)\n",[504,1905,1906],{"class":506,"line":812},[504,1907,1908],{"class":836},"        #include \u002Fconfig\u002Fnginx\u002Fldap-location.conf;\n",[504,1910,1911],{"class":506,"line":820},[504,1912,741],{"emptyLinePlaceholder":740},[504,1914,1915],{"class":506,"line":828},[504,1916,1917],{"class":836},"        # enable for Authelia (requires authelia-server.conf in the server block)\n",[504,1919,1920],{"class":506,"line":840},[504,1921,1922],{"class":836},"        #include \u002Fconfig\u002Fnginx\u002Fauthelia-location.conf;\n",[504,1924,1925],{"class":506,"line":851},[504,1926,741],{"emptyLinePlaceholder":740},[504,1928,1929],{"class":506,"line":859},[504,1930,1931],{"class":836},"        # enable for Authentik (requires authentik-server.conf in the server block)\n",[504,1933,1934],{"class":506,"line":867},[504,1935,1936],{"class":836},"        #include \u002Fconfig\u002Fnginx\u002Fauthentik-location.conf;\n",[504,1938,1939],{"class":506,"line":874},[504,1940,741],{"emptyLinePlaceholder":740},[504,1942,1943,1946,1949],{"class":506,"line":881},[504,1944,1945],{"class":1713},"        include ",[504,1947,1948],{"class":1126},"\u002Fconfig\u002Fnginx\u002Fproxy.conf",[504,1950,1723],{"class":557},[504,1952,1953,1955,1958],{"class":506,"line":889},[504,1954,1945],{"class":1713},[504,1956,1957],{"class":1126},"\u002Fconfig\u002Fnginx\u002Fresolver.conf",[504,1959,1723],{"class":557},[504,1961,1962,1965,1967,1970],{"class":506,"line":897},[504,1963,1964],{"class":1713},"        set ",[504,1966,1800],{"class":557},[504,1968,1969],{"class":1126},"upstream_app gluetun",[504,1971,1723],{"class":557},[504,1973,1974,1976,1978,1981,1984],{"class":506,"line":905},[504,1975,1964],{"class":1713},[504,1977,1800],{"class":557},[504,1979,1980],{"class":1126},"upstream_port ",[504,1982,1983],{"class":1717},"5555",[504,1985,1723],{"class":557},[504,1987,1988,1990,1992,1995],{"class":506,"line":913},[504,1989,1964],{"class":1713},[504,1991,1800],{"class":557},[504,1993,1994],{"class":1126},"upstream_proto http",[504,1996,1723],{"class":557},[504,1998,1999,2002,2004,2007,2009,2012,2014,2017],{"class":506,"line":921},[504,2000,2001],{"class":1713},"        proxy_pass ",[504,2003,1800],{"class":557},[504,2005,2006],{"class":1126},"upstream_proto:\u002F\u002F",[504,2008,1800],{"class":557},[504,2010,2011],{"class":1126},"upstream_app:",[504,2013,1800],{"class":557},[504,2015,2016],{"class":1126},"upstream_port",[504,2018,1723],{"class":557},[504,2020,2021],{"class":506,"line":929},[504,2022,741],{"emptyLinePlaceholder":740},[504,2024,2026],{"class":506,"line":2025},47,[504,2027,2028],{"class":1126},"    }\n",[504,2030,2032],{"class":506,"line":2031},48,[504,2033,2034],{"class":1126},"}\n",[936,2036,2038,2039,2042,2043,2046,2047,1646],{"icon":500,"to":2037},"\u002Fserveex\u002Fadvanced\u002Fauthentik#protecting-an-app-via-reverse-proxy","✨ You can secure this app with Authentik by uncommenting the ",[485,2040,2041],{},"authentik-server.conf"," and ",[485,2044,2045],{},"authentik-location.conf"," lines. Don’t forget to ",[396,2048,2049],{},"create an app and provider in Authentik",[400,2051,1195,2052,1200,2054,1204,2056,1208],{},[1197,2053],{"value":1199},[1197,2055],{"value":1203},[1197,2057],{"value":1207},[477,2059,1411],{"id":2060},"done-2",[400,2062,2063,2064,2067],{},"Wait a few minutes, then go to ",[485,2065,2066],{},"https:\u002F\u002Fseedbox.mydomain.com",". You should land on the Qbittorrent interface.",[400,2069,2070],{},"And that’s it! You now have a ready-to-use media center.",[400,2072,2073],{},[403,2074],{"alt":405,"src":2075},"\u002Fimg\u002Fserveex\u002Fseed.svg",[2077,2078,2079],"style",{},"html pre.shiki code .sEgDM, html code.shiki .sEgDM{--shiki-light:#B392F0;--shiki-default:#FFCB6B;--shiki-dark:#B392F0}html pre.shiki code .sJWha, html code.shiki .sJWha{--shiki-light:#79B8FF;--shiki-default:#C3E88D;--shiki-dark:#79B8FF}html pre.shiki code .s11XM, html code.shiki .s11XM{--shiki-light:#9ECBFF;--shiki-default:#C3E88D;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sRuoG, html code.shiki .sRuoG{--shiki-light:#85E89D;--shiki-default:#F07178;--shiki-dark:#85E89D}html pre.shiki code .s8jd1, html code.shiki .s8jd1{--shiki-light:#E1E4E8;--shiki-default:#89DDFF;--shiki-dark:#E1E4E8}html pre.shiki code .sDvJj, html code.shiki .sDvJj{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .slcoZ, html code.shiki .slcoZ{--shiki-light:#E1E4E8;--shiki-default:#EEFFFF;--shiki-dark:#E1E4E8}html pre.shiki code .s8K8j, html code.shiki .s8K8j{--shiki-light:#9ECBFF;--shiki-default:#89DDFF;--shiki-dark:#9ECBFF}html pre.shiki code .szyEh, html code.shiki .szyEh{--shiki-light:#F97583;--shiki-default:#F07178;--shiki-dark:#F97583}html pre.shiki code .s08Ry, html code.shiki .s08Ry{--shiki-light:#79B8FF;--shiki-default:#FF9CAC;--shiki-dark:#79B8FF}html pre.shiki code .sAoO4, html code.shiki .sAoO4{--shiki-light:#F97583;--shiki-default:#C792EA;--shiki-dark:#F97583}html pre.shiki code .sJPTy, html code.shiki .sJPTy{--shiki-light:#F97583;--shiki-default:#89DDFF;--shiki-dark:#F97583}html pre.shiki code .swwWl, html code.shiki .swwWl{--shiki-light:#79B8FF;--shiki-default:#F78C6C;--shiki-dark:#79B8FF}html pre.shiki code .sJLGa, html code.shiki .sJLGa{--shiki-light:#F97583;--shiki-light-font-style:inherit;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sSoIa, html code.shiki .sSoIa{--shiki-light:#E1E4E8;--shiki-default:#F07178;--shiki-dark:#E1E4E8}",{"title":500,"searchDepth":550,"depth":550,"links":2081},[2082,2089,2094],{"id":466,"depth":550,"text":467,"children":2083},[2084,2085,2086,2087,2088],{"id":479,"depth":561,"text":480},{"id":522,"depth":561,"text":523},{"id":1010,"depth":561,"text":1011},{"id":1211,"depth":561,"text":1212},{"id":1410,"depth":561,"text":1411},{"id":1414,"depth":550,"text":1415,"children":2090},[2091,2092,2093],{"id":1420,"depth":561,"text":1421},{"id":1437,"depth":561,"text":1438},{"id":1458,"depth":561,"text":1411},{"id":1479,"depth":550,"text":1480,"children":2095},[2096,2097,2098],{"id":1528,"depth":561,"text":1529},{"id":1649,"depth":561,"text":1650},{"id":2060,"depth":561,"text":1411},[2100],"Djeex","Install qBittorrent with Gluetun and ProtonVPN to download torrents securely behind a VPN on your self-hosted server.","md",null,{},{"title":366,"description":2101},"S6HenXLT9JDQXisN0f9b3r_P20U5BGf6kvWyJC27_fU",[2108,2110],{"title":362,"path":363,"stem":364,"description":2109,"children":-1},"Install Plex Media Server with Tautulli on your homelab to stream movies and TV shows from anywhere on all your devices.",{"title":370,"path":371,"stem":372,"description":2111,"children":-1},"Automate media downloads with the Servarr stack, Radarr, Sonarr, Bazarr, Prowlarr, and Overseerr for movies and TV shows.",1788645858295]