diff --git a/content/en/3.serveex/5.media/2.qbittorrent.md b/content/en/3.serveex/5.media/2.qbittorrent.md index 794d353..acb70bb 100644 --- a/content/en/3.serveex/5.media/2.qbittorrent.md +++ b/content/en/3.serveex/5.media/2.qbittorrent.md @@ -5,14 +5,6 @@ description: Install qBittorrent with Gluetun and ProtonVPN to download torrents :ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60} -# Qbittorrent - -::note -🎯 __Goals:__ - -- Install and configure Qbittorrent -- Securely connect to the BitTorrent network using Gluetun and Proton VPN -:: ![Picture](/img/serveex/qbit-vue.jpeg) @@ -48,12 +40,17 @@ tree: --- :: +::steps{level="3"} +### Create the media folders + If not already done, create the `downloads` folder under `/media`: ```bash [Terminal] mkdir -P /media/downloads ``` +### Deploy the stack + Open Dockge, click on `compose`, and name the stack `seedbox`. Paste the following config: ```yaml [compose.yaml] @@ -122,6 +119,8 @@ services: ``` :: +### Configure the download port update + Before editing the `.env` in Dockge, let's configure the download port update. Proton and most VPNs rotate the forwarding port, which must be communicated to Qbittorrent. We’ve added the mod `ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod` to the container. @@ -158,6 +157,8 @@ apikey = "your_key_here" # key you just generated Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ctrl+X"} to exit. +### Set your environment variables + In Dockge, fill in the variables in `.env`: ```properties [.env] @@ -182,14 +183,27 @@ Detailed info: | `ID` | Qbittorrent UI login username | `user` | | `PW` | Qbittorrent UI password | `password` | +### Done ! +:: + ## Deployment + +::steps{level="3"} +### Deploy the container + Once done, deploy the container. -::warning +::note -**Startup logs will show a temporary password for `admin` user** +**Startup logs will show a temporary password for `admin` user.** +See logs in [Dockge](/serveex/core/docker/#dockge) to retrieve it, or type this command in a terminal: +```bash [Terminal] +docker logs qbittorrent 2>&1 | grep -i "temporary password" +``` :: +### Log in and secure your account + Login at `http://server-ip:5695` (or the port you set). ::caution @@ -199,6 +213,9 @@ __If login fails:__ check your firewall rules. Change your username and password in the "webui" settings. +### Done ! +:: + You're done! In Qbittorrent settings, under "Downloads", set `/media/downloads` as the default folder. When adding a download, remember to select the proper directory so Jellyfin can sync correctly (`/media/movies` or `/media/tvseries`). You can also automate this with categories and folders. @@ -217,6 +234,9 @@ To start downloads from outside your home, without a VPN, you can expose the Qbi We assume you have the subdomain `seedbox.mydomain.com` with a `CNAME` pointing to `mydomain.com` in [DNS zone](/general/networking/dns). And that port `443` on your router is forwarded to your server in [NAT rules](/general/networking/nat), unless you’re using Cloudflare Zero Trust. :: +::steps{level="3"} +### Add Gluetun's network to SWAG + In Dockge, edit the SWAG compose file and add Gluetun’s network: ```yaml [compose.yaml] @@ -243,6 +263,8 @@ Click "Deploy" and wait for SWAG to fully initialize. We assume the network name is `seedbox_default`. You can confirm by checking the SWAG dashboard at http://server-ip:81. :: +### Create the subdomain.conf file + Now create/edit `seedbox.subdomain.conf`. ::tip{icon=""} @@ -306,6 +328,13 @@ server { } ``` +Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ctrl+X"} to exit. + +### Done ! +:: + +Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the Qbittorrent interface. + ## Protecting Qbittorrent with TinyAuth Add [TinyAuth](/serveex/security/tinyauth)'s forward-auth check directly to `seedbox.subdomain.conf`, the same way as [the TinyAuth guide](/serveex/security/tinyauth#protecting-an-app-via-reverse-proxy): @@ -382,14 +411,10 @@ server { The `location /tinyauth` block runs inside SWAG's own container, so SWAG needs to be on TinyAuth's Docker network to reach it by name (`tinyauth` here). This should already be set up from [exposing TinyAuth itself](/serveex/security/tinyauth#exposing-tinyauth-with-swag). If you run into an error, double-check SWAG's compose file still has that network attached. :: -::tip -✨ You can secure this app with Authentik instead of TinyAuth by uncommenting the `authentik-server.conf` and `authentik-location.conf` lines. Don’t forget to [create an app and provider in Authentik](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy). +::tip{icon=""} +✨ You can secure this app with [Authentik](/serveex/advanced/authentik) instead of TinyAuth by uncommenting the `authentik-server.conf` and `authentik-location.conf` lines. Don’t forget to [create an app and provider in Authentik](/serveex/advanced/authentik#protecting-an-app-via-reverse-proxy). :: -Press :kbd{value="Ctrl+O"}, then :kbd{value="Enter"} to save, and :kbd{value="Ctrl+X"} to exit. - -Wait a few minutes, then go to `https://seedbox.mydomain.com`. You should land on the Qbittorrent interface. - And that’s it! You now have a ready-to-use media center. ![Picture](/img/serveex/seed.svg)