Set up Transmission Daemon to turn Ubuntu 22.04 as Remote Download Server

Got a Ubuntu PC or Server and want to use it as remote download server? This is the step by step guide shows you how to do the job using Transmission Daemon.

Ubuntu’s default Transmission torrent client has a daemon package, that can run silently as a background service, allowing you to manage downloads anywhere around the world with internet connection and a web browser.

To use the service, you just need to install the package, enable the service, do some changes on the config file, and grant user permission. And here’s how to do it step by step.

Step 1: Install Transmission Daemon & Enable the service

Firstly, press Ctrl+Alt+T on your Ubuntu PC to open terminal. Or connect to your remote Ubuntu server via SSH.

1. To install the Daemon package, run command:

Advertisements
sudo apt install transmission-daemon

In Ubuntu Desktop, you might have dependency issue if you’ve tried 3rd-party Transmission package. In the case, try sudo apt remove transmission* to remove the torrent packages first, then re-run the command above.

2. Run the daemon service. The daemon should run automatically after installation. Just in case, you may run it manually by running the 2 commands below one by one:

systemctl enable transmission-daemon
systemctl start transmission-daemon

For Ubuntu server, you may need to add sudo in the beginning for each command.

Step 2: Set up Downloads folder & Grant Permission

You can skip this step, if you’d like to use default location to save downloads. It’s “/var/lib/transmission-daemon/downloads/“, which however is NOT a good choice.

1. To create a folder for saving download files, for example ‘transmission‘ sub-folder under Downloads,run command:

mkdir -p ~/Downloads/transmission

For Ubuntu Desktop, you can just open ‘Files’ (Nautilus file browser) to create a folder anywhere that you want!

For Ubuntu Server, you may even don’t have “Downloads” folder, so change the command accordingly! If you want, just run mkdir -p ~/transmission to create the folder under your user home directory.

2. Add read and write permission to that folder, for anyone in your user group.

chmod g+rw ~/Downloads/transmission

In the command, replace ~/Downloads/transmission if you selected another location for saving downloads.
In Ubuntu 22.04 Desktop edition, you can skip this command since group by default have read & write to user created folders.

3. Finally, add ‘debian-transmission’ to your user group. So, Transmission daemon has read & write permission to the folder you just created.

sudo gpasswd --add debian-transmission $USER

NOTE: This change seems needing system restart to take effect in Ubuntu Desktop, but not sure if required in Server.

Step 3: Edit the Daemon config file

The daemon by default has only one config file. It’s /etc/transmission-daemon/settings.json.

1. To edit the file, run command:

sudo gedit /etc/transmission-daemon/settings.json

Here you may replace gedit with gnome-text-editor for Ubuntu 23.04 and higher, or use nano for Ubuntu Server and other Desktop Environment that you don’t know which text editor to use.

2. When file opens, edit it with following changes:

The file includes many configure lines, that I only write some important ones here. You can leave all others default, or edit it according to you need.

  • First, change the value of "download-dir" and "incomplete-dir" to the folder you created in Step 2.

    In my case, it’s /home/ji/Downloads/transmission. (replace ‘ji’ to your username!) Also, set “incomplete-dir-enabled” to true, or unfinished download files are not visible.

  • Then, change the values of “rpc-username” and “rpc-password” to your desired username & password for remote authentication. Set “rpc-whitelist-enabled” to false, so anyone with the username & password can access. Or, set it to true, and add you client IP address to “rpc-whitelist”.
  • Finally, change value of “umask” to 18.
    Value 022 means 0 (read, write, execute for ‘debian-transmission’, the owner), 2 (read for group & others). It’s OK but .json file does not allow octal notation. So, use 18 instead (octal 22 = decimal 18).

3. Finally, save file. For nano text editor, press Ctrl+X, type y and hit Enter to save changes.

Step 4: Reload daemon to apply changes

After editing the config file, you need to reload the daemon to apply the changes.

To reload the daemon, run command:

systemctl reload transmission-daemon.service

It must be reload! Because restart or start the service somehow will reset the password to default.

You may also run command to check the service status by running command:

systemctl status transmission-daemon.service

Step 5: Set up Firewall

Ubuntu Desktop does not active firewall by default, but Servers are mostly have firewall activated.

To check firewall status, run command:

sudo ufw status

If firewall is activated, run command to allow port 9091:

sudo ufw allow 9091,51413/tcp

Step 6: Access Transmission Remotely

Finally, you can access the transmission service on remote Ubuntu Desktop or Server, in anywhere with a web browser. By visiting ip-address:9091/transmission/web/.

Or, use any client app with Transmission RPC support!