Want to turn your Ubuntu, Debian, or Raspberry Pi OS machine into a ‘download server’ and control remotely? Here’s a step by step guide shows how to do the job via system default Transmission BitTorrent Client (Both GUI and CLI).
Transmission may run either as a graphical app (system default) or silently in background as system service. It supports remote access, so user may control the downloads anywhere via another PC or mobile devices. It’s lightweight and a good alternative to uTorrent for those want to remotely download torrents.
Option 1: Enable Remote Control via Transmission Graphical App:
The graphical app has options to enable and configure remote access function. Simply go to ‘Edit -> Preferences‘ in app menu and navigate to ‘Remote‘ tab.
There, tick ‘Allow remote access‘ to toggle on/off the function. And, use authentication if you want remote user to access by providing username and password. By adding IP addresses (separate via comma), you may specify which machines allows to connect. To allow anyone to access, just un-check ‘Only allow these IP addresses’.
After that, user may connect via a web browser by going to ip-address:9091/transmission/web/. Or, using an app (e.g., Transmission Remote and Fragments) via RPC protocol.
Option 2: Setup Transmission Daemon for Remote Control:
For Ubuntu and Debian Server edition, or those want to run the BitTorrent client silently in background as system service on startup. Transmission-daemon is for you.
1. Install Transmission Daemon
The daemon package is not pre-installed out-of-the-box. User need to open “terminal” or connect to console and run command to install it first:
sudo apt install transmission-daemon
It will start automatically as background service after installation. To check out, use command systemctl status transmission-daemon
. If somehow it’s not running, use command systemctl enable transmission-daemon
and systemctl start transmission-daemon
to start it. Note add sudo in the beginning of the commands if you get permission issue.
2. Configure Transmission Daemon
The daemon replies on “/etc/transmission-daemon/settings.json” configuration file.
Before editing the file, firstly stop the service by running command:
sudo systemctl stop transmission-daemon
Next, run command to open the file via gedit text editor:
sudo gedit /etc/transmission-daemon/settings.json
Gedit is the default text editor for GNOME desktop. Replace with you favorite text editor or use the universal nano command line editor.
When the file opens, you may change any rule as you prefer. While others are OK to use default values, here are some important ones:
- Change value of “rpc-username” and “rpc-password” for the user and password authentication.
- Add IP addresses of remote machines allowed to access via “rpc-whilelist”, separate with comma.
- Or set “rpc-whitelist-enabled” to false if you want to allow anyone to access.
- And, do change “umask” value from 18 to 2 for permission issue.
After editing the file, save it (For nano, press Ctrl+X, type ‘y’ and hit Enter to save) and start the service:
sudo systemctl start transmission-daemon
And, you may check its status via systemctl status transmission-daemon
3. Configure Firewall:
Firewall is not enabled in the Ubuntu/Debian desktop edition by default. But if you’re setting this in server edition or you’ve enabled the ufw firewall, run command below to enable the ports:
sudo ufw allow 9091,51413/tcp
NOTE: this command enables the default 9091 and 51413 ports. Change them if you set other ports in the previous step.
4. Fix Permission denied issue:
Transmission daemon by default stores downloads in “/var/lib/transmission/downloads” system folder. User may change the location remotely using the web UI. However, it will prompt permission issue once you set the download folder into user directory.
1. First, add current user to the debian-transmission
group by running command in terminal:
sudo gpasswd --add $USER debian-transmission
2. Next, create a folder for storing the torrent downloads. [Skip this step if you have one]
In the case, I created "MyTorrents" folder under home directory. It's not recommended to use user's default "Downloads" folder.
mkdir ~/MyTorrents
3. Change the ownership of the folder [replace ‘~/MyTorrents’ to yours or just drag & drop folder to terminal]:
sudo chown :debian-transmission ~/MyTorrents
4. After step 3, the folder is owned by the current user and ‘debian-transmission’ group. Next, change its permission via the command below. The second ‘7‘ will add full access for the group owner.
sudo chmod 770 ~/MyTorrents
5. Finally, set ‘umask’ to 2 in Transmission-daemon configuration file. I’ve mentioned this in the previous step “Configure Transmission Daemon“. Or, the downloaded files will have ‘red lock’ emblems indicates that user has no permission to access them.
A system restart is required in my case to apply the group changes.
5. Connect Transmission Remotely:
Finally, user may connect to this remote BitTorrent client in a web browser by going to link “http://ip-address:port/transmission/web”
or use any app that support RPC protocol by going to “http://ip-address:port/transmission/rpc”.
Once connected with correct username and password, configure the download folder and other settings and enjoy downloading torrents remotely!
That’s all. Enjoy!