Git Product home page Git Product logo

iqbit's Introduction

iQbit logo

iQbit

iQbit is an iOS styled WebUI theme for qBitTorrent clients.

True story. While I was developing this, my wife asked me if qBitTorrent was like Limewire. The reason was clear, torrent clients haven't evolved in their last 20 years of popularity. iQbit is an attempt to bring torrenting to more modern design approaches. With that being said, this is not a data-heavy approach to torrenting (or at least not yet). The main focus of this projects are the following points:

  • Ease of Use
  • Mobile Friendly/First
  • Adhering to Human Interface Guidelines (as much as possible)

This is a PWA! This means you can install this app on your device through your OS default browser. Being a PWA allows us to have native features in the WebUI. Including:

  • Native PushAPI Notifications (hopefully) - Coming whenever apple releases it for iOS 16, expected 2023. Users that enable it could get notifications when a torrent finishes downloading
  • Camera support (maybe) - My idea is to use iOS live text feature to add a torrent by just pointing your phone into its hash id

Screenshot Screenshot

Releases And Installing

All releases will be published right in this repo. All you actually need is the release folder but I do accept any other ideas of how to release updates.

My suggestion is to do a git clone of this repo locally and then point your qbittorrent to the release folder and it should all just work. Then all you need to do to get updates would be pulling the repo. If you don't actually install all the dependencies for development it shouldn't be too much. You might need to install git.

Install Method Suggested

On your terminal

$ cd [path of directory you want to download project to]

$ git clone https://github.com/ntoporcov/iQbit.git

Then in qBitTorrent you'll want to point the WebUI theme folder selection to the newly created [...]/iqbit/release folder and you should be done.

Standalone Server

This project ships with a standalone server for the WebUI. It means you can run this WebUI all by itself and have it communicate with your qbittorrent through a proxy. Cool right?

This is useful if you want to have this WebUI running in a port being used for mobile devices, and keep the default WebUI in its different port for desktop clients.

Documentation

RoadMap

I intend to keep supporting this project for the foreseeable future at least until I run out of things that I would like to see in it. My current feature roadmap organized by priority is the following:

  1. Add support for Sonarr and Radarr

Settings

I added what I think is a decent amount of all the settings onto the WebUI. Qbittorrent has a ton of settings, so if you really want to use the webui and the only thing stopping you is one of the missing settings screen, let me know and I'll do my best to add it in a timely manner.

License

iQbit is licensed under the terms of the GNU GPLv3 and is available for free.

Bugs & Feature Suggestions

Please use the issues tab for any bugs found and feature suggestions.

iqbit's People

Contributors

adamsey avatar antonbiluta avatar atrate avatar mcfloyd avatar norahqueen avatar ntoporcov avatar rfsmart-ntoporcov avatar rizese avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iqbit's Issues

"Add torrent" button is not visible

On Firefox and Chrome for Android, when I click the plus sign to add a torrent, I don't see the "Add torrent" button, which is drawn below the visible area. I can't scroll either. Adding a torrent is impossible.

iQbit doesn't work through NGINX reverse proxy

After switching from default qBittorrent WebUI to iQbit, webpage become inaccessible through NGINX reverse proxy. The webpage has caption "iQbit" and the content of the page is completely white. However, the service works through localhost:30000 correctly. Restarting NGINX doesn't help.

Please provide instructions of how to setup iQbit through NGINX reverse proxy, or implement the support of NGINX reverse proxy. Currently this bug blocks usage of iQbit.

For reference, this is my configuration:

upstream php-handler {
    server unix:/var/run/php/php7.4-fpm.sock;
}

map $arg_v $asset_immutable {
    "" "";
    default "immutable";
}

server {
    listen 80;
    listen [::]:80;
    server_name SERVER.COM;

    server_tokens off;

    return 301 https://SERVER.COM$request_uri;
}

server {
    listen 443      ssl http2;
    listen [::]:443 ssl http2;
    server_name SERVER.COM;

    root /var/www;

    ssl_certificate           /home/SERVER.COM/fullchain.cer;
    ssl_trusted_certificate   /home/SERVER.COM/SERVER.COM.cer;
    ssl_certificate_key       /home/SERVER.COM/SERVER.COM.key;

    ssl on;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_ecdh_curve prime256v1:secp384r1:secp521r1;
    ssl_session_cache shared:TLS:50m;
    ssl_session_timeout 1d; # default is 5 min 
    ssl_session_tickets off;

    ssl_stapling on; 
    ssl_stapling_verify on;

    access_log            /var/log/nginx/SERVER.COM.access.log;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    server_tokens off;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location /qbt/ {
        proxy_pass         http://127.0.0.1:30000/;
        proxy_http_version 1.1;
        http2_push_preload on; # Enable http2 push

        proxy_set_header   Host               127.0.0.1:30000;
        proxy_set_header   X-Forwarded-Proto  $scheme;
        proxy_set_header   X-Forwarded-Host   $server_name:$server_port;
        proxy_set_header   X-Forwarded-For    $remote_addr;
        proxy_set_header   X-Real-IP          $remote_addr;
        proxy_hide_header       Referer;
        proxy_hide_header       Origin;
        proxy_set_header        Referer                 '';
        proxy_set_header        Origin                  '';
        add_header              X-Frame-Options         "SAMEORIGIN";

        proxy_cookie_path / "/; Secure";
    }
}

express module not found when trying to run standalone server

When trying to run the container after building it with the Dockerfile provided, I get the following error related to the express module:

> [email protected] server-docker-start /usr/src/node-app
> cd server && npm run serve:docker


> [email protected] serve:docker /usr/src/node-app/server
> node server.js

internal/modules/cjs/loader.js:905
  throw err;
  ^

Error: Cannot find module 'express'
Require stack:
- /usr/src/node-app/server/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at Object.<anonymous> (/usr/src/node-app/server/server.js:1:17)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/usr/src/node-app/server/server.js' ]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] serve:docker: `node server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] serve:docker script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-08-26T20_49_40_425Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] server-docker-start: `cd server && npm run serve:docker`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] server-docker-start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-08-26T20_49_40_441Z-debug.log

Issue with adding torrents via magnet link

When I try to add a torrent to the queue with a magnet link, it takes a couple tries for it to work.

I tap the plus icon, paste the magnet link into the text field, tap Add Torrent, then I get the alert Could Not Add Torrent. Once the alert is dismissed, the link is still in the text field and I can tap Add Torrent again, but this produces the same result. However, when I swipe down to close the add via URL/magnet pane, then re-perform these steps, I'll get a Torrent Was Added confirmation.

I'm on iPhone XR, using latest Safari and latest public iOS. qBitTorrent version is 4.1.5.

Adding file upload

Great IOS / Mobile friendly design, but I would like to see the option to upload the torrent file to the client, I always has to switch to normal GUI for uploading .Torrent files to the client.

Is this a feature that can be added?

Kind regards

Unable to close pop up on android

On Android (samsung s9) if you tap add torrent you literally can't swipe down to close it. It just pops right back up. There needs to be a alternative to swiping down as you physically can't swipe far enough on the phone to close the pop up

Change Category not working

Change category leaves category blank no matter which category is selected

qBittorrent ver 4.5.0
running native on
Windows 10

"Unacceptable file type, only regular file is allowed" for multiple alternative web UIs

Hello

qBittorrent & operating system versions

Docker

What is the problem?

When I try to install this interface, I have the following message:
"Unacceptable file type, only regular file is allowed."

And this is what I can find in the logs:
"(N) 2023-03-06T16:17:01 - Using custom Web UI. Location: "iQbit/release".
(W) 2023-03-06T16:17:01 - Couldn't load Web UI translation for selected locale (en)."

I tried on an ubuntu VM and everything works.

Does not work if your qbitorrent is a docker container

Doesn’t seem to work via qBitorrent running as a docker container on my Synology nas

After cloning the repo to a directory mounted within the container, after I make the webui location change, and refresh I get the following error on the webpage

...”Unacceptable file type, only regular file is allowed.”..

Add locales file

Hi,
I want to localize IQbit to my language.
Can you add a locales file with all the text from IQbit.

And thanks for that nice project.

Sequential download / Download first and last parts

Hi there

When adding torrents from the search function, or when right clicking to an already added torrent, there isn't an option to select "Sequential download" or "Download first / last parts first". Also can't change the download / upload limits per torrent.

Low-res icons

The icons in the ReadME are of high quality but the actual apple-touch-icon file is low-res.

iQbit ignores base URL to access qb's API.

I have a setup where every web app is assosiated with base url instead of port.

it works fine with standard webui, but it doesn't in iQbit. Looking at the network request, turns out your script ignores base url, causing wrong url path.

Sort torrents by ...

It'd be useful to have an option to sort torrents by most recent and other sorts.

Add Category Management

Categories are an important part of qbittorrent and allow the user to manage file location without having to go into the system.

We need:

  • Category Management Tab
    Stacked cards for each category with name and path

  • Change category option in action sheet followed by second action sheet to pick category, or modal with dropdown?

Alternate Webinterface

if i configure the path "/home/pi/TorrentQ/iQbit/release" in alternate web interface:
this message shows in my Browser:
File type is not accepted - only valid file types are allowed.
Dateityp wird nicht akzeptiert - es sind nur gültige Dateitypen erlaubt.
Whats the issue?

grafik
grafik

Cannot login

Every time i login with my QBitorrent credentials it gives me this

"Request failed with status code 401"

Impossible to log in

Trying to auth but always got "Request failed with status code 401"

iQBIT runs on docker
qBittorrent olso runs on docker

default webUI works correctly

qBittorrent v4.4.5 Web UI (64-bit)

Cydia repo

Could you please add a version for jailbroken devices? And allowed for it to be installed from Cydia?

[Feature Request] Auto create docker on new release?

Ey @ntoporcov,

Was wondering if you would be open to using github actions to auto-create docker image and release on dockerhub or github packages?

If you want, I can create the yml file for the action if you want. I'm currently forking your repo and building the docker image that way, but would be easier if you release the docker image automatically :D.

[ Features ] Add torrent file and Search plugins

Hi!
This application looks to good to be true on IOS.
Also, the dark-mode looks really nice.
Can you please add a browse button for local torrents and make the search use the plugins.
Imagine how simple everything will be!
Thank you again for this awesome project.

Docker Compose

Hi,

Sorry, I am a an inexperienced self-hoster and was wondering whether we could have a docker-compose version?

Thanks!

[Feature Request] being able to disable the additional tabs?

I was looking for a good way to control qbit from my phone and this client is great!
I have no interest in the discover content and search trackers features and would love to have an option in the settings to disable those features.
Not a high priority issue at all, just something that will be nice to have eventually.

Ability to add custom indexers

For the search provider, it would be great if users can add indexers on their own by giving a url and api key, like the way radarr does. Or the ability to add the Jackett api.

Blank Screen after login

Just started happening all of a sudden.

Consols shows these errors

[Error] TypeError: undefined is not an object (evaluating 'L[g].short')
z — TorrentBox.js:175

Yo — react-dom.production.min.js:153:148
vs — react-dom.production.min.js:261:499
lu — react-dom.production.min.js:246:268
su — react-dom.production.min.js:246:197
Js — react-dom.production.min.js:239:172
Js
(anonymous function) — react-dom.production.min.js:123:115
(anonymous function) — scheduler.production.min.js:19:467
Ur — react-dom.production.min.js:123
Wr — react-dom.production.min.js:122:496
Ys — react-dom.production.min.js:230:156
ma — react-dom.production.min.js:163:515
ma

(anonymous function) — Torrents.js:45

promiseReactionJob

	es (4.ddc4a47e.chunk.js:2:351349)
	(anonymous function) (4.ddc4a47e.chunk.js:2:358145)
	fo (4.ddc4a47e.chunk.js:2:317306)
	os (4.ddc4a47e.chunk.js:2:352698)
	hu (4.ddc4a47e.chunk.js:2:370262)
	hu
	(anonymous function) (4.ddc4a47e.chunk.js:2:389627)
	du (4.ddc4a47e.chunk.js:2:366731)
	Js (4.ddc4a47e.chunk.js:2:362862)
	Js
	(anonymous function) (4.ddc4a47e.chunk.js:2:314047)
	(anonymous function) (4.ddc4a47e.chunk.js:2:389627)
	Ur (4.ddc4a47e.chunk.js:2:313993)
	Wr (4.ddc4a47e.chunk.js:2:313928)
	Ys (4.ddc4a47e.chunk.js:2:359445)
	ma (4.ddc4a47e.chunk.js:2:331163)
	ma
	(anonymous function) (main.aaeb97ad.chunk.js:1:16977)
	promiseReactionJob



[Error] Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'L[g].short')
	Ur (4.ddc4a47e.chunk.js:2:314136)
	Wr (4.ddc4a47e.chunk.js:2:313928)
	Ys (4.ddc4a47e.chunk.js:2:359445)
	ma (4.ddc4a47e.chunk.js:2:331163)
	ma
	(anonymous function) (main.aaeb97ad.chunk.js:1:16977)
	promiseReactionJob

404 error when reverse proxying it under path like /qbit

Hi,
I'm accessing qbittorrent using an nginx-reverse proxy using official wiki.

The problem here is, all paths in this theme are being served under /static/ instead of static/. The latter fixes the path issue, but since I'm unable to find out all the places where paths are being used, I can't resolve this gracefully with a MR.

Please consider my solution. Thanks for this lovely project :)

Unable to log in to iQbit standalone server

Trying to auth but always got "Request failed with status code 504"

iQbit running on docker

qBittorrent is running on docker

default webUI works correctly

qBittorrent v4.4.5 Web UI (64-bit)

Transmission & others

I need this in transmission so bad. are you planning on porting it to other clients? great design

host header validation

I had trouble using iQbit to log in qbittorrent. The issue turned out to be Host header validation and CSRF protection. These settings can be found under qbittorrent -> options -> webui -> security. It would be nice to mention in the iqbit docs to turn off these settings.

Bug + Random Requests

Rate limit speeds appear to display incorrectly (5000 -> 5000000).

Can you make the "Use Custom WebUI" toggle on incomplete pages also reload the window.
Can you add a custom font selector in the font page.
Also a quick toggle for alternate rates would be lovely <3.

New Search Providers

This issue will be a running list of search providers requested or that I found

After logging in, assets flash then completely blank screen

I was able to clone git and point qB to the /release folder. I visited the webui and it loaded the iQbit webui homepage. After inputting credentials and clicking sign in, the screen is blank. If I disable "Use alternative Web UI" in qB and refresh my browser, I'm able to see the default UI as if I'm logged in.

Ubuntu 18.04.4 LTS VM
qBittorrent 4.2.5 -- currently have 55 torrents active

Visiting webui from within Firefox on said VM, as well as from Chrome browser from Windows 10 host, and Chrome on iOS, results in same behavior.

Screenshot is of the assets that load for a second or two before going completely blank. Favicon and "iQbit" header stay.:

iqbitissue

Would love to use this!

Download / Upload speed labled wrong.

In details about a torrent, download and upload is both labeled as download speed :)

Suggestions for functions to be added.

  1. total down/upload speed numbers visible at all times.
  2. upload of torrent files from local (not just magnetslinks)
  3. search plugin support
  4. down/upload speed on torrent visible side by side with percentage of download
  5. Fullscreen support (draggable middel line or collapsible search menu)
  6. RSS integration on webIU
  7. more default search options.
  8. options for makeing own search providers (private trackers etc)
  9. html5 drag and drop torrent files for upload (mac / pc)

please provide feedback on my Suggestions :)

and thanks for the first really mobilefriendly WebUI!

Cheers

Pirate bay search issues

When using the search on pirate bay and adding a torrent it often times will add a torrent with random sting of characters that never completes.

Screenshot_20220905-223140-473.png

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.