Tutorial: Pyload


Hi there,
I just added pyload to my router, so I want to share how I did it... (using mostly Luci)
It is not perfect, and its maybe not the best way to do it, but it works ^^

What you need?

  • A router ^^
  • Minimum of around 37mb memory for packages...
  • And a LOT of more memory for your downloads (meaning external hard drive by usb or other...)

First of all, my router and setup :

  • Linksys WRT1900AC v1
  • which has 128mb Flash, and 256 Ram (and dual FW hence my low memory I think...)
  • and a USB3 external hard drive.

To start I did a fresh install of Openwrt 18.06.2 and configured my network.

Then we can start the pyload installation, for this we will set up the needed packages (only the min recommended ones for Pyload to run).
We start with the most heavy ones, since memory is limited... and memory is also used to download the packages...

Under luci, go to System / Software, and hit the update button.
Now you can search and install packages.

We start with: python_curl
this will also install Python... and a bunch of other packages...
(note, I don't think we need full python and all the other packages but haven't taken the time to figure out how to optimize the installation to just needed packages.)

Now, we reboot
(not really needed, but recommended to keep storage space clean)

Next step is to install the package: NODE
(this is to install the javaengine that will work with pyload)

Again reboot
(actually reboot after every package installation... that's what I did to handle memory space cleanup after a successful installation... I'll avoid from now on writing down reboot ^^)

Install python-crypto
Install pillow
Install python-pyopenssl

Note, Openssl is recommended, but not needed... so also install it and check online for tutorials to create your certificates and keys... security first :wink:

Now set up your external hard drive...(not part of my " tutorial ")

Finally install bsdtar
(used to extract downloaded files)
Pyload installation:
Connect to your router by SSH

(windows, u can use putty... Mac/Linux, terminal but I guess I don't need to explain this if)

ssh user@your_router_IP_address

where User = your set up user for your router (if u changed nothing I am guessing root).
And you will need to know ur password ^^

Tip : if SSH is not working, google it... but have u check your firewall and the port forwarding?

Once the SSH done, do move to a personal storage place (in the router), in my case its syscfg
Download the latest stable version from pyload git
and extract it

(tip : look at the clone/download green link)

cd /tmp/syscfg/
wget linktoPyload.zip
bsdtar -xf linktoPyload.zip

You can now go to your pyload folder and configure it.
First launch will ask you to configure python. I recommend that YOU change the root configuration location for pyload to be in /tmp/syscfg partition, just to keep memory happy.

python pyLoadCore.py

I will not help with pyload setup, u can google this. But external hard drive is used for your download folder, and SSL for a more secure connection.

And now you are all SET!!!
pyLoad should be up and running with the minimal requirements needed for it to work.

Test it by going to pyload webpage, usually your_router_IP_address:8000
Tip : do check your firewall and port forwarding settings for pyload ^^

Finally... if you want to have pyLoad running every time, do set a command at the startup setting of your router with pyLoadCore.py --daemon


By the way,
in my case... Pyload is working.
But my router Luci reaction time is a bit slow... I am not sure its cus of Pyload or python.... but more caused because of my SSL setup (i've read a bit around the net regarding some bugs with it...)

Also, I am now short, but like way short in memory to install packages (just 1mb left)... I am still to figure out how to use the full 128mb potential of my router (half is spent in the 2nd fw layer, that I still don't find the use for it thankfully...)

and thirdly, I think I have many packages installed (automatically installed as dependencies of other packages) that I don't think I need... but no idea how to remove them or detect them...

If anybody can help with this 3 points, I would appreciate it :slight_smile: