Ricky Ford

Tech & BBQ Enthusiast

Your Cart Contents

Your cart is empty.



Twitter: @rickylford

@jk_rowling Do not apologize to anyone; their hurt feelings do not make what you said in the past any less true. Th… twitter.com/i/web/status/1…
February 15th, 2023

@dallascowboys Every year. Same result.
January 23rd, 2023

@DetectiveAF @BigTimeGeks December 31, 1995
August 4th, 2022

The Transmission bittorrent client is one of the most widely used bittorrent clients for the Linux operating system, especially on Ubuntu servers. I have used it in all of the server incarnations I've had installed and have loved it more and more with each little update the software gets. In this guide, I'll show you the super simple steps at getting a fully functional Transmission client installed on your Ubuntu Server and how you can configure it for your specific needs.

First off, we will need to add the apt-repository for Transmission to our repository list, but before we do that, we'll need to install a small little application that allows us to add apt repositories directly from the terminal. Type the following:

sudo apt-get install python-software-properties

Now, issue this command:

sudo add-apt-repository ppa:transmissionbt/ppa

That will give you the Transmission apt repository and allow you to automatically keep your Transmission software up-to-date instead of having to build the application by source. Now, update your apt-list:

sudo apt-get update

After your list is up to date, issue this command to install Transmission:

sudo apt-get install transmission-cli transmission-common transmission-daemon

Now, what we need to do is create some folders in our home folder for Transmission to use. Issue the following commands:

mkdir ~/Downloads
mkdir ~/Downloads/Completed
mkdir ~/Downloads/Incomplete
mkdir ~/Downloads/Torrents

The Completed folder will hold all of our torrents that have finished downloading, the Incomplete folder will hold all of our torrents that are still downloading, and the Torrents folder will allow us to drag-and-drop torrent files from our Windows machine to the folder and have Transmission automatically pick up the torrent and begin downloading it. You can add torrents for Transmission to download through the web interface, but doing it this way is sometimes quicker for some folks who may not have browser access.

Now, when Transmission downloads torrents, it automatically sets the rights of the files that it downloads to the Transmission user group. We need to make sure that our username is a part of that group, and we need to set the correct permissions on the Downloads folders. Issue the following commands:

sudo usermod -a -G debian-transmission username
sudo chgrp -R debian-transmission /home/username/Downloads
sudo chmod -R 775 /home/username/Downloads

Replace the bold "username" sections with the username of your Ubuntu user that will be accessing the files and folders.

Update 1/28/2013:

Bradd commented and stated they apparently, the newest version of Transmission will silently overwrite your configuration file when you reload the Transmission Daemon. The best thing for you to do before editing your configuration is to actually stop the daemon all-together, then make your edits, and then start the daemon back up once you have finished editing the settings. So first, go ahead and stop the daemon:

sudo /etc/init.d/transmission-daemon stop

Now we want to edit our configuration file:

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

That's going to bring up the big configuration file. I'm only going to give you the settings I tweaked, however you can have a look throughout the entire configuration and tweak whatever you'd like.

"download-dir": "/home/username/Downloads/Complete",
"incomplete-dir": "/home/username/Downloads/Incomplete",
"incomplete-dir-enabled": true,
"rpc-authentication-required": false,
"rpc-whitelist-enabled": false,

Once you've tweaked those settings, add this to the very end of the configuration file (before the ending "}" bracket, but also keep in mind that you will need to change the "utp-enabled" line to have a comma "," at the end of it):

"watch-dir": "/home/username/Downloads/Torrents",
"watch-dir-enabled": true

Once you have finished editing your configurations, start the daemon back up:

sudo /etc/init.d/transmission-daemon start

That should do it! Now all you need to do is save that file by issuing a CTRL+X to Nano and then saving when it prompts you. After you've saved the file, reload (DO NOT restart) your Transmission server:

sudo /etc/init.d/transmission-daemon reload

Once it has reloaded and if it starts back up, go ahead and go to your browser and navigate to: (where is the IP address of your Ubuntu server). You should be greeted with the Transmission WebUI. Now if you'd like, you can apply over 370,000 IP filters to the blocklist from one of my other posts.

Posted on July 9th, 2012 by Ricky Ford in Technology.

Updated on October 10th, 2018 at 12:00 AM.


Post Comment

Comments (52)

[2016-09-22 00:29:11.206] JSON parse failed in /var/lib/transmission-daemon/info/settings.json at pos 23 25: SPECIAL_EXPECTED -- remaining text ""watch-dir":"

what to do ?

Posted by Sohanur Rahman on September 21st, 2016

Can you post your full settings.json file here so that I can check it out for you? There might be more around that watch-dir parameter that is causing that issue.

Posted by Ricky on October 29th, 2016

Thanks a lot.
When I read the guide for first time I thought I was not going to be capable of doing it right but it wasn't that hard actually.
I just finished it and tried to download a small torrent and all gone well.

The only problem I'm having is not related with the torrent client but with the WebUI... my router doesn't have the option DHCP Reserve so when the router changes the internal IP I get a connection failed message.

Posted by Robert on August 6th, 2014

You're very welcome. :) I'm glad I was able to help!

Posted by Ricky on September 3rd, 2014

I have two network interfaces: eth0, wlan0.

wlan0 for internet, eth0 for xbmc no internet

sabnzbd is confuzzled with multiple interfaces. since ubuntu [11.10] will not allow me to specify metric for interfaces I have tried creating routes for astraweb server addr to interfaces

sudo route add -host ssl.astraweb.com gw

download speed continues to be abysmal :(

At this time disabling an interface is not an option.


Posted by keith on June 8th, 2014

I tried this but am getting the error: permission denied.

I tried using this to add a user

but then when I tried (yes I replaced username with an actual username)
sudo chgrp -R debian-transmission /home/username/Downloads

I get
chgrp: cannot access `/home/username/Downloads': No such file or directory

I tried it with just /root/downloads and it does work.

Guidance apprecaited

Posted by Kevin on March 25th, 2014

I was able to work around this by manually moving the downloads folder in filezilla.

Posted by Kevin on March 26th, 2014

Some reason the command doesn't work for me
sudo /etc/init.d/transmission-daemon stop

This works though
sudo stop transmission-daemon

Posted by james on March 15th, 2014

Thanks, excelent tutorial, worked on crystalbuntu/atv1!

Posted by robinio on March 13th, 2014

Hi Ricky,

I set it up like as your configuration. But i am getting problem that when i want to upload any file from it shows me nothing. No upload bar, no files on transmission nothing. Will you please help me about this?

Best regards,
Md. Farhad Khan.

Posted by Md. Farhad Khan on March 11th, 2014

Tried to stop using 'sudo /etc/init.d/transmission-daemon stop' butit was respawned. I stoppd it using sudo service transmission-daemon stop' which is a better way to stop and start services...

Posted by SebasMannem on January 4th, 2014

Thank you. This is going to be awesome!

Posted by timmyson on December 7th, 2013

It never worked for me.. Always the same error, "Folder permission denied".... Waste of time....Uninstalled...

Posted by Damian Raspachini on November 24th, 2013

Where are you getting this error? When adding a torrent and before it starts? You need to make sure that whatever directory you're downloading IN to, the Transmission user has permissions to read/write. So basically, if you setup your incomplete download directory to "/home/user/Downloads/Incomplete" and then the completed directory to "/home/user/Downloads/Complete" you can get around the permission issue by applying chmod to both of those with "chmod 777 -R Downloads" while in your "~/" directory. That will basically chmod Downloads and all of the directories in Downloads to 777.

Posted by Ricky on November 24th, 2013

For those having the problem with the ""watch-dir":" error. The quotes copy wrong, you will need to redo them for both lines.

Posted by Dr. Dre on September 10th, 2013

Thanks for the tutorial. My question is why does my incomplete folder still have the downloaded files there after its been moved to the complete folder?

Posted by Jonny Luis on August 25th, 2013

Thanks for the guide.

The open " and close " quotation marks used in this article are not valid in JSON, replace them with the regular " one if you get the following error:

JSON parser failed in /var/lib/transmission-daemon/info/settings.json at line 70, column 5: ""watch-dir":"

Posted by orion on July 18th, 2013

Worked like a charm, thanks

Posted by JT on June 30th, 2013

it seems like ages that i heve been searching for a wordpresssite like this one? i am glad i found it,some great information here, i am new and just starting out, anyway thanks for some great tips..

Posted by qrawft on May 22nd, 2013

Thank you Ricky! this worked like a charm. Easy to follow and understand.


Posted by clihakr on May 5th, 2013

For every time the transmission-daemon was initiated I received this error:
[14:46:03.895] Couldn't read "/home/[username]/.config/user-dirs.dirs": Permission denied

Solved it by chmod'ing the file to 775. (770 wasn't enough)

sudo chmod -R 775 ~/.config/user-dirs.dirs

Posted by Sean on April 29th, 2013

To: Steve and Mike

For this issue, [JSON parse failded in /var/lib/transmission-daemon/info/setting.json as pos 2342: STRAY_TOKEN -remaining text " "watch-dir": "/h"]

Think that your setting.json end with wrong comma.
please note that the comma.

"utp-enabled": true,
"watch-dir": "/XXXXX",
"watch-dir-enabled": true

Posted by Jonathan on April 22nd, 2013

Hi everytime i try resarting after i made the changes i keep getting this error

JSON parse failded in /var/lib/transmission-daemon/info/setting.json as pos 2342: STRAY_TOKEN --remaining text " "watch-dir": "/h"

need hlp plesae

Posted by Mike on March 22nd, 2013

Maybe you forget to put "," after the line before "watch-dir":

"utp-enabled": true,

Hope this helps.



Posted by Thibault on April 11th, 2013

Why add python-software-properties when you apt-add-repository works out of the box?

Why add a PPA when its in the repos already?

Sorry - just doesn't make sense to me.

Posted by Hmmmm on March 16th, 2013

i am a student in one college. there is one linux server through which we use the internet. that server is 24 hr running. we are given usernames and passwords. using this we can login from clients and our files are stored in that server. My main question is, can we load torrent files from client to server and let there download for 24 hrs. One of the student has done this but he refuse to tell me the process. Is there anyone who can help me. Help me out.

Posted by Ashok Thapa on March 15th, 2013

Hi mate,

Thanks for this great tutorial, but ... this config it's absolutely insecure for a seedbox, because we are leaving an unsecure port open, everybody can chechk the 9091 port and access it without any security question.

How can we make a more secure access? Thanks a lot.

Posted by Mmgarcia30 on March 13th, 2013

Enable the whitelist add your home network or external ip address to the list:

Here is an example:
"rpc-whitelist": ",192.168.*.*",
"rpc-whitelist-enabled": true,

Feel free to change the port of the webGUI.
Just make sure to unblock the that new port in your servers firewall like you had to with the 9091 port. (Your server should have a firewall)

Here is where you change the port:
"rpc-port": 9091

Posted by Sean on April 29th, 2013

Adding the watch-dir lines to /etc/init.d/transmission-damon/settings.json causes errors for me.

"JSON parse failed in /var/lib/transmission-daemon/info/settings.json at 2344: STRAY_TOKEN -- remaining test ""watch-dir": "/h"
"JSON parse failed in /var/lib/transmission-daemon/info/settings.json at 2344: SPECIAL_EXPECTED -- remaining test ""watch-dir":"

The first error was caused by me simply typing the lines above into the init.d, the second was when I copy/pasted because I couldn't find any typos.

Any ideas?

Posted by Steve on March 12th, 2013

Please update the original last line ends with a comma.

Posted by James on April 21st, 2013

Permission denied message when I'm running a downloading.

Posted by Roy on March 12th, 2013

Anyone try installing Transmission on an AppleTV1 running Ubuntu? Does the above install work?

Posted by Pete on January 30th, 2013

If the AppleTV is actually running full-on Ubuntu, then I wouldn't see why the install above wouldn't work.

Posted by Ricky on February 1st, 2013

Ricky, THANKS A LOT !!!
Worked like a charm :)

Posted by Myaso on January 16th, 2013

I'm glad the post helped! :)

Posted by Ricky on January 28th, 2013

Not sure if this is a recent change but the settings.json file will get overwritten silently unless the daemon is stopped. So instead of reloading just stop the daemon and then make your edits to the settings.json file. Once you save your edits then start the daemon.

sudo /etc/init.d/transmission-daemon stop
sudo nano /etc/transmission-daemon/settings.json
sudo /etc/init.d/transmission-daemon start

Posted by Bradd on January 16th, 2013

Thank you! I'll update the post to include the changes. Reloading the Transmission deamon used to be the safe thing to do. They need to get their daemon in check with the settings file and stop making these ridiculous changes.

Posted by Ricky on January 28th, 2013

solved thanks

Posted by marcelo on December 16th, 2012

Glad to know you were able to pinpoint the problem. :)

Posted by Ricky on December 18th, 2012

How Were you Able to Solve It?
I Still Have The Problem...

Posted by Benny C on January 26th, 2013

i follow the steps but

Unauthorized IP Address.

Either disable the IP address whitelist or add your address to it.

If you're editing settings.json, see the 'rpc-whitelist' and 'rpc-whitelist-enabled' entries.

If you're still using ACLs, use a whitelist instead. See the transmission-daemon manpage for details.

Posted by marcelo on December 16th, 2012

Go to rpc-whitelist-enabled and change it from true to false.

Posted by fancysnail on May 25th, 2014

Hello. I have followed your guide, but when I change the download directory, then I get a "Permission denied" when i try to download a torrent.

There is no problems if its downloadning to the default download directory.

Posted by Jonas on November 11th, 2012

Are you sure that you added your username to the transmission group properly? Sometimes that can happen when Transmission tries to load under your username, but you do not belong to the "debian-transmission" user group.

Posted by Ricky on December 21st, 2012

I am using Debian, What is the command to update it?

Posted by Toufiq on November 2nd, 2012

nevermind good sirs. haha I figured it out. kind of laughable now. thanks for this page though, it was very helpful.

Posted by Todd on October 1st, 2012

I am a fairly new user in a linux setting. I have been able to do everything up until using the Nano editor. Could you please explain how to write in the changes to settings.json?

Posted by Todd on October 1st, 2012


Thanks for the tutorial!

Posted by Fredy on September 18th, 2012

One more thing. before editing the settings.json, the user may have to turn off transmission ( sudo /etc/init.d/transmission-daemon reload ) before editing the file. Then after it is edited reload.

Posted by kevin on July 17th, 2012

Thanks a bunch Kevin! I appreciate you dropping in and giving those quick tidbits of info to everyone. :)

Posted by Ricky on July 25th, 2012

Thanks, very usefull tip

Posted by Joao Amado on April 17th, 2014

After step 1 some may have to do:

sudo dpkg-reconfigure python-software-properties

Posted by kevin on July 17th, 2012


© 2011-2023 www.rickylford.com | All Rights Reserved.