Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App Submission: qBittorrent #468

Merged
merged 20 commits into from May 30, 2023
Merged

App Submission: qBittorrent #468

merged 20 commits into from May 30, 2023

Conversation

ASOwnerYT
Copy link
Contributor

@ASOwnerYT ASOwnerYT commented Mar 26, 2023

App Submission

App name

qBittorrent

256x256 SVG icon

https://upload.wikimedia.org/wikipedia/commons/6/66/New_qBittorrent_Logo.svg

Gallery images

I don't have screenshot of the default web UI yet, for now here's a good screenshot of VueTorrent which I plan to include:
image

I have tested my app on:

@nmfretz
Copy link
Contributor

nmfretz commented Mar 27, 2023

Thanks for submitting qBittorrent @ASOwnerYT! Ping me whenever you are ready for me to take a look at it.

@ASOwnerYT
Copy link
Contributor Author

It's almost ready for review, I'd just like to add more screenshots and include the VueTorrent webUI

Let's try Hotio's container again

Remove HostHeaderValidation fix

Change port to 8081

Revert "Change port to 8081"

This reverts commit f29309c.
@ASOwnerYT ASOwnerYT marked this pull request as ready for review April 5, 2023 08:37
@ASOwnerYT
Copy link
Contributor Author

@nmfretz It's ready for review now. On my server it works well, only issue I have is I haven't found a way for the password to be automatically generated and shown in Umbrel, the default password is adminadmin which isn't ideal.

@nmfretz
Copy link
Contributor

nmfretz commented Apr 26, 2023

Thanks @ASOwnerYT. Sorry for the delay. Will review soon.

@ASOwnerYT
Copy link
Contributor Author

Just wondering, is there any update on this? Thanks

@nmfretz
Copy link
Contributor

nmfretz commented May 8, 2023

@ASOwnerYT, sorry again for my delay in reviewing this. I am hoping to get to this early this week.

Copy link
Contributor

@nmfretz nmfretz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks again for this @ASOwnerYT, really great work! I have left a review below. Once we get through relevant changes I can start testing.

On my server it works well, only issue I have is I haven't found a way for the password to be automatically generated and shown in Umbrel, the default password is adminadmin which isn't ideal.

This should be fine. A user can change the default user/password to custom ones through the app UI after they install the app. I checked and there is no way to set the default password from an environment variable.

I see that you started trying to use the hotio image that comes bundled with the alternative VueTorrent UI. What made you switch to the linuxserver image? Do you need any help troubleshooting?

- ${APP_DATA_DIR}/data/config:/config
- ${UMBREL_ROOT}/data/storage/downloads:/downloads
ports:
- 8094:8094
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be removed. The app proxy and Docker's internal dns resolver will handle this.

dependencies: []
repo: https://github.com/qBittorrent/qBittorrent
support: https://github.com/qBittorrent/qBittorrent/issues
port: 8080
Copy link
Contributor

@nmfretz nmfretz May 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be any free port that no other app is using on Umbrel. It does not have to be the same as the one the frontend web-ui is served from. Umbrel makes your app accessible at http://umbrel.local:<port>. The port that you assign to APP_PORT in the docker-compose.yml tells our App Proxy what container-port your app's frontend is found at. In this instance, qBittorrent's web-ui uses container-port 8094, so that is what you assign to APP_PORT.

We can't use port 8080 because that is used by the Lightning Node app, so there would be a clash.

You can; however, actually use port: 8094 if you want. I think the reason you were getting a port binding error when you tried this is because you bind 8094:8094 in the server container here so there is a clash.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that you started trying to use the hotio image that comes bundled with the alternative VueTorrent UI. What made you switch to the linuxserver image? Do you need any help troubleshooting?

Yes, the linuxserver image works as expected but the hotio image gets stuck on this error

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this link. I just tried and got it working. See here

Comment on lines 1 to 29
[AutoRun]
enabled=false
program=

[BitTorrent]
Session\DefaultSavePath=/downloads/complete
Session\Port=6881
Session\QueueingSystemEnabled=true
Session\TempPath=/downloads/incomplete/

[LegalNotice]
Accepted=true

[Meta]
MigrationVersion=4

[Network]
Cookies=@Invalid()
PortForwardingEnabled=false

[Preferences]
Connection\PortRangeMin=6881
Connection\UPnP=false
Downloads\SavePath=/downloads/complete
Downloads\TempPath=/downloads/incomplete/
WebUI\Address=*
WebUI\Port=8094
WebUI\ServerDomains=*
WebUI\HostHeaderValidation=false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is just the default qBittorent.conf then I think we can remove this as it will be generated when the app is installed. I see you have created this bind: - ${APP_DATA_DIR}/data/config:/config so it will be persisted across app restarts and updates.

If we can delete this file, then you can also delete the qBittorrent directory that the config file is saved in and, instead, place an empty .gitkeep file in data/config so that this empty directory is included in the repo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This config is needed as a workaround for an error that was preventing me from using the WebUI, and also to set the default download path to the "downloads/complete" folder instead of the "downloads" folder.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pinging @lukechilds for his thoughts here as well.

I see, thanks. Do you recall what the specific error was? I just tested removing this file and installing the app, and I can access the WebUI.

A default qBittorrent.conf is generated automatically that looks like this, with the save path set to /downloads/ instead of /downloads/complete/ as you note.

[AutoRun]
enabled=false
program=

[BitTorrent]
Session\DefaultSavePath=/downloads/
Session\Port=6881
Session\QueueingSystemEnabled=true
Session\TempPath=/downloads/incomplete/

[LegalNotice]
Accepted=true

[Meta]
MigrationVersion=4

[Network]
PortForwardingEnabled=false

[Preferences]
Connection\PortRangeMin=6881
Connection\UPnP=false
Downloads\SavePath=/downloads/
Downloads\TempPath=/downloads/incomplete/
WebUI\Address=*
WebUI\Port=8094
WebUI\ServerDomains=*

Is the reason you want to set the downloads path to /downloads/complete/ so that qBittorrent mimics Transmission's default behaviour? The other torrent app SimpleTorrent does not mimic this and instead saves files to /downloads and I'm assuming future torrent apps will have their own default behaviours.

I do actually like the idea of torrents being saved in /downloads/complete/, but I'm hesitant to include a qBittorent.conf in the repo because it will introduce complexity down the road if an app update requires us to change this file. Existing users who update their app won't get changes we make to this default file unless we add some finicky logic and we would need to be careful not to overwrite any custom changes users have made. Plus it is nice for the qBittorrent application itself to generate a config for us without any mistakes and then users can change the config from the UI (save to `/downloads/complete/' etc..).

PROXY_AUTH_ADD: "false"

server:
image: linuxserver/qbittorrent:4.5.2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to include the multi-arch digest for this Docker image to make sure that everyone installing this app gets the exact same version of the image. To get the digest you can run:
docker pull linuxserver/qbittorrent:4.5.2
and the digest will be printed in the output.

Comment on lines 8 to 14
The qBittorrent project aims to provide an open-source software alternative to µTorrent.

Additionally, qBittorrent runs and provides the same features on all major platforms (FreeBSD, Linux, macOS, OS/2, Windows).

Bittorrent is based on the Qt toolkit and libtorrent-rasterbar library.

⚠️ qBittorrent downloads torrents over the Clearnet, not Tor.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the description section, a single blank newline between paragraphs places text on their own lines, like this:
image

but two blank newlines are needed between paragraphs to separate the lines with whitespace.

  The qBittorrent project aims to provide an open-source software alternative to µTorrent.
  <newline here>
  <newline here>
  Additionally, qBittorrent runs and provides the same features on all major platforms (FreeBSD, Linux, macOS, OS/2, Windows).

website: https://qbittorrent.org/
dependencies: []
repo: https://github.com/qBittorrent/qBittorrent
support: https://github.com/qBittorrent/qBittorrent/issues
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also see this forum we could use here: https://forum.qbittorrent.org/. Have you come across other support networks for qBittorent?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my opinion I think it might be best to stick with the Github issues page for this. Transmission has it set to their Github issues page too.

defaultPassword: "adminadmin"
torOnly: false
permissions:
- STORAGE_DOWNLOADS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You get to add yourself as submitter here! And also add a submission field with the url of this PR as the value.
See Thunderhub app for example:

submitter: Anthony Potdevin
submission: https://github.com/getumbrel/umbrel/pull/343

category: Networking
name: qBittorrent
version: "4.5.2"
tagline: A fast, easy and free BitTorrent client
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the tagline for Transmission>

We could use the tagline from https://www.qbittorrent.org/:
Free and reliable P2P Bittorrent client

@ASOwnerYT
Copy link
Contributor Author

@nmfretz I've made all the changes you suggested, it should be ready for testing now

@nmfretz
Copy link
Contributor

nmfretz commented May 11, 2023

Thanks @ASOwnerYT, it is working great! Very nice work. I have responded here with some thoughts on the default qBittorrent.conf file.

@nmfretz
Copy link
Contributor

nmfretz commented May 11, 2023

Yes, the linuxserver image works as expected but the hotio image gets stuck on hotio/qbittorrent#14 (comment)

If you're still interested in using the hotio image so that users have the ability to switch to the VueTorrent UI, here is the set-up that worked for me just now https://github.com/nmfretz/umbrel-apps-fork/tree/qbittorrent-hotio/qbittorrent.

image

@nmfretz
Copy link
Contributor

nmfretz commented May 22, 2023

@ASOwnerYT are you okay if we use the hotio image and get this out the door? It's working quite well.

@ASOwnerYT
Copy link
Contributor Author

Of course! The hotio image will probably be better.

@nmfretz
Copy link
Contributor

nmfretz commented May 23, 2023

Excellent. I'll get the icon and gallery images made up.

@nmfretz
Copy link
Contributor

nmfretz commented May 30, 2023

Thanks again for bringing qBittorent to Umbrel @ASOwnerYT! Going live to the app store now 🚀

@nmfretz nmfretz closed this May 30, 2023
@nmfretz nmfretz reopened this May 30, 2023
@nmfretz nmfretz merged commit 4949d76 into getumbrel:master May 30, 2023
@ASOwnerYT ASOwnerYT deleted the qbittorrent branch May 30, 2023 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants