Hi all, i’m having issues configuring prowlarr to use the qbit torrent downloader. I have everything setup in a docker container as such:
version: "3.2"
services:
qbittorrent:
container_name: qbittorrent
image: linuxserver/qbittorrent
logging:
driver: json-file
ports:
- 4666:4666
- 8082:6881
- 8082:6881/udp
environment:
- WEBUI_PORT=4666
volumes:
- /docker/appdata/qbittorrent:/config
- ./data:/data
radarr:
container_name: radarr
image: cr.hotio.dev/hotio/radarr:latest
restart: unless-stopped
logging:
driver: json-file
ports:
- 7878:7878
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker/appdata/radarr:/config
- ./data:/data
sonarr:
container_name: sonarr
image: cr.hotio.dev/hotio/sonarr:latest
restart: unless-stopped
logging:
driver: json-file
ports:
- 8989:8989
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker/appdata/sonarr:/config
- /data:/data
bazarr:
container_name: bazarr
image: cr.hotio.dev/hotio/bazarr:latest
restart: unless-stopped
logging:
driver: json-file
ports:
- 6767:6767
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker/appdata/bazarr:/config
- ./data/media:/data/media
prowlarr:
image: cr.hotio.dev/hotio/prowlarr
container_name: prowlarr
ports:
- 9696:9696
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
volumes:
- /docker/appdata/prowlarr:/config
restart: unless-stopped
sabnzbd:
container_name: sabnzbd
image: cr.hotio.dev/hotio/sabnzbd:latest
restart: unless-stopped
logging:
driver: json-file
ports:
- 8080:8080
- 9090:9090
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker/appdata/sabnzbd:/config
- ./data/usenet:/data/usenet:rw
jellyfin:
container_name: jellyfin
image: linuxserver/jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
volumes:
- /docker/appdata/jellyfin:/config
- /etc/localtime:/etc/localtime:ro
- ./data/media:/data/media
ports:
- 8096:8096
- 8920:8290
restart: unless-stopped
I can open localhost:4666 in firefox and see the qbit web interface. When i go to the prowlarr interface and try to connect to it the field for the adress goes red and says: unable eto connect tot qBittorrent. The logs say:
prowlarr | [v1.7.4.3769] System.Net.Http.HttpRequestException: Connection refused (localhost:4666)
prowlarr | ---> System.Net.Sockets.SocketException (111): Connection refused
prowlarr | at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
prowlarr | at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
prowlarr | at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
prowlarr | at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.attemptConnection(AddressFamily addressFamily, SocketsHttpConnectionContext context, CancellationToken cancellationToken) in ./Prowlarr.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 331
prowlarr | at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.onConnect(SocketsHttpConnectionContext context, CancellationToken cancellationToken) in ./Prowlarr.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 307
prowlarr | at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
prowlarr | --- End of inner exception stack trace ---
prowlarr | at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
prowlarr | at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
prowlarr | at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
prowlarr | at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.GetResponseAsync(HttpRequest request, CookieContainer cookies) in ./Prowlarr.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 110
prowlarr | at NzbDrone.Common.Http.HttpClient.ExecuteRequestAsync(HttpRequest request, CookieContainer cookieContainer) in ./Prowlarr.Common/Http/HttpClient.cs:line 171
prowlarr | at NzbDrone.Common.Http.HttpClient.ExecuteAsync(HttpRequest request) in ./Prowlarr.Common/Http/HttpClient.cs:line 70
prowlarr | at NzbDrone.Common.Http.HttpClient.Execute(HttpRequest request) in ./Prowlarr.Common/Http/HttpClient.cs:line 137
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxyV2.IsApiSupported(QBittorrentSettings settings) in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs:line 35
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxySelector.FetchProxy(QBittorrentSettings settings) in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrentProxySelector.cs:line 83
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxySelector.<>c__DisplayClass7_0.b__0() in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrentProxySelector.cs:line 78
prowlarr |
prowlarr | at NzbDrone.Common.Cache.Cached`1.Get(String key, Func`1 function, Nullable`1 lifeTime) in ./Prowlarr.Common/Cache/Cached.cs:line 99
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxySelector.GetProxyCache(QBittorrentSettings settings, Boolean force) in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrentProxySelector.cs:line 78
prowlarr |
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxySelector.GetProxy(QBittorrentSettings settings, Boolean force) in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrentProxySelector.cs:line 61
prowlarr | at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrent.TestConnection() in ./Prowlarr.Core/Download/Clients/QBittorrent/QBittorrent.cs:line 209
prowlarr |
prowlarr |
prowlarr |
prowlarr | [Warn] ProwlarrErrorPipeline: Invalid request Validation failed:
prowlarr | -- Host: Unable to connect to qBittorrent
I’ve tried looking for help online but i haven’t found much so some help would be appreciated.
Thank you!
Try with the local network IP of the host PC/VM instead (192.168.x.x), you have to use that for most applications. Remember that localhost/127.0.0.1 means something different inside a Docker container than it does outside it…
Bingo! This worked. I don’t fully understand why because i expose the ports on the docker containers, i guess i must have something miss-configured. Thanks!!
If I understand correctly (and I’m not 100% sure I do), localhost in a Docker container lives in it’s own little network which is not the host’s network.
The container is its own localhost, which has its own ports (which is why you have to map an internal localhost port to a host PC localhost port for every container you wish to access). This means that Prowlarr in your case, has no idea what localhost:4666 should be since in Prowlarr’s localhost universe there exists nothing on that port. To access what the host knows of ports (instead of the container), you have to write the host’s address from inside the Prowlarr container.
I hope that wasn’t impossible to follow 😅
Now that I think about it (haven’t tried myself though) you could possibly add the mapping of port 4666:4666 to the Prowlarr Docker compose setup and then use localhost:4666 to access qBittorrent from inside Prowlarr.
I think you are right! Now that you’ve explained it, it makes sense in my head, as someone else recommended i added hostnames and now i can work with those which makes it nicer, i don´t want to be opening a maze of ports xd
Lol I hear ya 😅 But great that you got it to work for your setup. Best of luck with your projects!
Version information:
qBit: v4.5.4 prowlarr: 1.7.4.3769
I recommend adding
hostname: app-name
lines for each container then you can just use the hostname and the native port (even if you don’t pass it through with aport:
line).It’s super useful if you want to expose any apps with a reverse proxy like Caddy. That way the ONLY way to access an apps web interface is via the reverse proxy. Then look at filter rules to deny access unless the client has a LAN IP.
Poof, you’ve got SSL and custom subdomains for all your apps, but still only on your LAN or personal VPN (like Wireguard or Tailscale).
Thats good!! i’m now looking at how to set up caddy to do exactly just just that, then i’ll look at the vpns for outside connections. Thanks gor the advice!
When you figure out how to set up Caddy, please send me a PM… I’ve tried and given up, but probably managed to misconfigure or misunderstand something.
For outside access I use Ngrok so I don’t have to bother with router settings. Probably isn’t recommended, but it was easy to set up and has worked flawlessly for me for years.
If you want to PM me your
docker-compose.yml
andCaddyfile
I’m more than happy to take a look at them for you. I’ve been using Caddy as my rev-proxy for 10+ app stacks for a few years now.I got it to run, its fairly simple but i am having issues integrating it into the docker compose as it just… stops working… i’ll be looking into it today and tomorrow and if i succeed i’ll report back to you with findings.
I’ve previously had issues with timezones, and yours are all over the shop.
yeah, that and other stuff its very hacky. I’ve now done a .env file to keep everything parametrized.
Try using the ip_address:4666
i tried with 127.0.0.1:4666 but i got the same issue
What IP is the machine?
I use 192.168.x.x:port_number to access it
What’s the use case to adding qbittorrent to prowlarr?
Usecase is adding indexers to prowlarr and then prowlarr can grab a torrent/usenet and add it to qbittorrent. But real benefit is having sonarr/radarr look for new shows/movies the way you told them and grab torrents -> rename -> place in library -> enjoy amazing jellyfin/plex. Holly automation of home media, amazing experience. Just look at OPs compose file, its all you need. I would just consider one more container, gluetun to hide everything behind VPN (if you are paying for one)
I was just starting to fiddle with the Starr programs so i didn’t realize that the proper way to use it is to sync the torrent clients directly to sonarr and radarr. The issue happened on those programs all the same though. (fixed it already though)
I think I ended up putting localhost in the *rr web page to connect to qbittorrent.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters IP Internet Protocol SSL Secure Sockets Layer, for transparent encryption VPN Virtual Private Network
3 acronyms in this thread; the most compressed thread commented on today has 13 acronyms.
[Thread #64 for this sub, first seen 18th Aug 2023, 23:15] [FAQ] [Full list] [Contact] [Source code]