Why do I need a seedbox?
- Your ISP is blocking or throttling BitTorrent traffic.
- The IT department at your work is blocking or throttling BitTorrent traffic.
- You have a laptop and it is not practical to keep it running all the time.
- You travel a lot and rarely stay online for a significant period of time to download a full torrent.
- You are a member of a private torrent site and would like to maintain a good standing aka ratio.
- You are tired of overpaying for seedbox hosting at other places.
- And last, but not least, you’d like to maintain privacy!
What will I accomplish at the end of this howto?
- A Linux box running Transmission BitTorrent client with web based access. Web based access is also optimized for iPhone.
- A cross-platform desktop Transmission Remote GUI front end.
- FTP access to download completed downloads.
What do I need to begin this guide?
- Average computer skills.
- Minimal Linux knowledge (basic shell commands).
- A dedicated or VPS (Virtual Private Server) running CentOS 5.5 and above. Other similar distros might also work, but haven’t been tested yet. Your Linux distro needs to have a yum package manager.
- SSH client (e.g. PuTTY on a Windows machine; Terminal on a Mac machine)
- Ten minutes of your time. I was actually able to set this one up in under 4 minutes during one of the tests.
If you don’t have a server yet, don’t worry. Unless you are a very heavy-duty user, you probably won’t need a dedicated server. If you are unsure, go with a VPS. I don’t have any service provider recommendations at the moment, but I assure you there are plenty. Just do some research on torrent-friendly ones.
Installation
I assume that you have obtained your server credentials (username and password) by now. Login to your server using the SSH client.
Installing prerequisites
First we are going to install a bunch of prerequisite software packages that we will need during the course of this tutorial. Issue the following command:
yum -y install wget bzip2 which gcc gcc-c++ make openssl-devel pkgconfig curl-devel perl-XML-Parser perl-libwww-perl gettext
yum -y upgrade
This installation might take a minute or two, depending on your server specs and connection speed.
Installing intltool
CentOS intltool package is out of date and a recent version is not available through the package manager. We must compile it from source. Don’t quit now. This isn’t as scary as it sounds.
cd /usr/local/src
wget -q http://ftp.gnome.org/pub/gnome/sources/intltool/0.40/intltool-0.40.6.tar.gz
tar zxf intltool-*.tar.gz
cd intltool-*
./configure --prefix=/usr && make -s && make -s install
Installing libevent
CentOS libevent package is out of date, just like intltool, so we resort to installing the latest version by hand.
cd /usr/local/src
wget -q --no-check-certificate https://github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
tar zxf libevent-*-stable.tar.gz
cd libevent-*-stable
./configure --prefix=/usr && make -s && make -s install && ldconfig
Installing Transmission
Transmission is the actual torrent application that you will be using. Again, just copy paste the commands into the SSH client window.
cd /usr/local/src
wget -q http://download.transmissionbt.com/files/transmission-2.50.tar.bz2
tar xjf transmission-*.tar.bz2
cd transmission-*
./configure --prefix=/usr LIBEVENT_CFLAGS=-I/usr/include LIBEVENT_LIBS="-L/usr/lib -levent"
make -s && make -s install
Add a user account for running the Transmission daemon application. You will be prompted to create a password. You will use that password to login and obtain the files that have been downloaded. Try to remember the password or write it down.
useradd -m transmission && passwd transmission
Create init script for starting the daemon. Adapted from Jason Friedland’s implementation.
wget --no-check-certificate -q -O /etc/init.d/transmissiond https://gist.github.com/moltar/5187393/raw/
chmod 755 /etc/init.d/transmissiond
Set the Transmission daemon to start automatically when the server is restarted:
chkconfig --add transmissiond
chkconfig --level 345 transmissiond on
Start and stop the Transmission daemon. You must do this before proceeding to the next step. This ensures that everything up to now has been installed properly. Most important, this creates a default configuration file that we will be editing later on. You should see two green [OK] outputs after the completion.
service transmissiond start && service transmissiond stop
Now we need to modify the Transmission configuration file. Replace the bold/underlined portion of the last two commands with your own username and password combination. You’ll use this to login to Transmission application.
cd /home/transmission/.config/transmission/
sed -i 's/^.*rpc-whitelist-enabled.*/"rpc-whitelist-enabled": false,/' settings.json
sed -i 's/^.*rpc-authentication-required.*/"rpc-authentication-required": true,/' settings.json
sed -i 's/^.*rpc-username.*/"rpc-username": "username",/' settings.json
sed -i 's/^.*rpc-password.*/"rpc-password": "password",/' settings.json
Create a directory for storing downloads:
mkdir -p /home/transmission/Downloads/
chown -R transmission.transmission /home/transmission/Downloads/
chmod g+w /home/transmission/Downloads/
Finally start the Transmission daemon for good:
service transmissiond start
Installing ConfigServer Security & Firewall application
We are also going to install a ConfigServer Security & Firewall application. This application will help your server to stay secure and also ensure that the necessary ports are open for Transmission to function properly. This is an important step, please do not skip it. Hosting providers have different configurations of the default CentOS install and may block certain ports. This installation will ensure that the necessary ports are open and unnecessary ones remain closed.
cd /usr/local/src
wget -q http://www.configserver.com/free/csf.tgz
tar zxf csf.tgz
rm -f csf.tgz
cd csf
./install.generic.sh
Now that we have CSF installed, we’ll issue a few commands to “doctor” the configuration file and open/close some ports.
cd /etc/csf
sed -i 's/^TESTING =.*/TESTING = "0"/' csf.conf
sed -i 's/^TCP_IN =.*/TCP_IN = "21,22,9091,51413,30000:35000"/' csf.conf
sed -i 's/^TCP_OUT =.*/TCP_OUT = "1:65535"/' csf.conf
sed -i 's/^UDP_IN =.*/UDP_IN = "20,21,51413"/' csf.conf
sed -i 's/^UDP_OUT =.*/UDP_OUT = "1:65535"/' csf.conf
service csf restart
Testing your installation
By now you should have the Transmission daemon running. Let’s go play!
Testing Transmission
Open the following URL in a new browser tab/window:
http://[YOUR_SERVER_IP]:9091/transmission/web/
You will be prompted to enter a username and password. Use the same username and password you have created during the Transmission installation (the second one). Once logged in, you should see a Transmission web interface. Click “Open” and copy-paste the following URL to test the download functionality and speed:
http://ftp.osuosl.org/pub/centos/6/isos/x86_64/CentOS-6.2-x86_64-LiveDVD.torrent
You should now see the download status bar increasing.
Testing SFTP Connection
Download, install and open FileZilla. Go to File -> Site Manager. Click “New Site“. Give it a good name. Under “Host” field put the server name (if you have one), or simply the IP of the server. Choose SFTP under “Server Type“. “Logon Type” set to “Normal”. Set the user to “transmission” and the password you have created during Transmission installation (the first one). Now click “Connect“, you should see FileZilla establishing the connection and then finally listing remote directories in the right hand side part of the window. You should see “Downloads” directory, this is where all of the download files will be stored.
Setting up Transmission Remote GUI
This is my favourite part about this whole setup. Not only you get a nice and fast web based client, but you can also set this up to be used with the desktop application! If you are migrating from µTorrent, then you’ll love this!
Head over to the Transmission Remote GUI project page and download a copy of the client. Install the software.
Once you have it open:
- Go to menu Torrents and select “Connect to daemon“.
- Enter the server IP into the “Remote host” field. Make sure not to put the whole URL (http://….), just put the IP part (e.g. “123.45.67.89″).
- Enter 9091 into the “Port” field.
- Enter your username and password you have set during the Transmission installation (the second one).
- Click “OK”.
Your desktop software should now be “talking” to your server. Note that this software only shows the status of the downloads, but you can’t actually access files through that UI. You still need to use the FTP client to download the completed torrents.
Updates
- March 4, 2012: Updated libevent version, updated to Transmission 2.50
- April 20, 2011: Trimmed yum package list, added
libeventinstructions, updated to Transmission 2.22. - November 2, 2010: Updated to Transmission 2.11.
- October 4, 2010: Added
whichto the list packages to install. Some people reported that missing on their systems. - September 29, 2010: Modified the tutorial to save source code to
/usr/local/src, rather than/tmpto avoid configurations withnoexecon/tmp. Got rid of vsftpd FTP server all together in favour of SCP/SFTP approach (thanks to P. Callisto’s suggestion). Disabled the verbose mode ontarand silented themake. - August 30, 2010: Added
libidn-develandzlib-develpackages per Kristen’s suggestion. - August 10, 2010: Updated to Transmission 2.04.
- July 7, 2010: Updated tutorial to Transmission 2.01. Added libevent-devel and libevent to yum command.

Getting this error when trying to “make” transmission:
webseed.c: In function āfireNeedReqā:
webseed.c:62: warning: unused parameter āwā
CC wildmat.o
AR libtransmission.a
CC blocklist-test.o
CCLD blocklist-test
./libtransmission.a(utils.o): In function `to_utf8′:
/usr/local/src/transmission-2.12/libtransmission/utils.c:1263: undefined referen ce to `libiconv_open’
/usr/local/src/transmission-2.12/libtransmission/utils.c:1265: undefined referen ce to `libiconv’
/usr/local/src/transmission-2.12/libtransmission/utils.c:1267: undefined referen ce to `libiconv_close’
collect2: ld returned 1 exit status
make[1]: *** [blocklist-test] Error 1
make: *** [all-recursive] Error 1
[root@server1 transmission-2.12]#
I first tried with version 2.11..same error.
Sorry, can’t tell from the snippet what the problem is.
Hi, Which version of CentOS would you prefer for TransmissionD? 32bit/64bit? i have a 512MB vps. Also, sometimes transmission sometimes just stops. I don’t know for what reason.
Either version works. What exactly stops? The daemon stops? Or does it stop working? Please elaborate.
I honestly don’t mean to spam,
but I just have to tell everyone:
Knowin Servers -> best customer support ever!!!
They really do offer a lot for the price you have to pay!
Thanks again for this great tut, moltar and forget my questions above,
, thanks to Knowin Servers!
everything solved
They just offered me lifetime unmetered connection for free, because the server went down for quite a while (I was on holiday abroad) so it didn’t bother me at all
Thank you very much for the tutorial. I found it exceptionally good. I did however run in to a slight problem in that pastie.org appears to be giving a 503 error. Can you advise what to do to get around this please? I also have a problem in that I am reasonably sure I have messed up the install by trying to fix myself so would you know what steps I need to take to start from the begining. I’m on knowinservers. Thanks again
Must have been a temp glitch as it’s all working fine now.
hi, how do i install transmission in a different directory? eg. /home/mark/ instead of /home/transmission? Thank You.
@mark
you need to alter the script provided at the step
“Create init script for starting the daemon. Adapted from Jason Friedland’s implementation.” .
It is selfexplaining once you took a look at the script
…
Hi,
Do you ever plan to offer instructions for Ubuntu 10.10 ?
In my opinion, Ubuntu offers better stability and updates, compared to CentOS.
I hope you can implement it asap.
No such plans, sorry. I personally prefer CentOS, thus tut is for CentOS.
Hey, awesome tute! Works great. There is one small hitch, though: I seem to be able to access the transmission web interface without entering my username and password. I’m no genius, but I’m guessing that’s not very secure. Do you know how I fix that?
Gaz: the tutorial includes the part where you password protect your install. You must have missed something.
Anyone have a problem entering the command “./configure –prefix=/usr” ?
I am getting the following message:
“checking for XML::Parser… configure: error: XML::Parser perl module is required for intltool”
I have installed Expat in the “~usr/local” director as suggested by a few web sites but I still get the same error message.
Any suggestions?
Thank you.
Phil
Sorry,
I must have typed something in wrong.
Started from the beginning and cut/pasted all the commands and am up and running.
Thank you soooo muchh!! Wonderful tutorial.
Phil
Thanks, this worked perfectly with knowinservers. It took me about 20 minutes to get going but it was worth it.
The latest release seems to be 2.13
Please update the seedbox instructions.
Also, please add support for Ubuntu 10.10
I believe I owe you at least a beverage or your choice! This was the most painless & easy setup I’ve been though
Thanks
My account (VPS) got terminated after 3 months(from 6months sub) because service transmission started using 100% of the VPS. And it was not giving response from web (http://xxx.xxx.xxx.xxx:9091/transmission/web/).
Then through putty i issued service transmission stop. But it was too late. After an hour my account got terminated.
Any idea what happened?
Very good tutorial, works like a charm ! Thanks a lot !
Hey, great guide. I joined knowin Servers thru your guide and everything works.
Now, I would like to ask you to expand your guide, I would like VPN and Proxy access using my VPS.
Any other cool functions you can think of for this VPS.
Rapidleech, etc.
Thanks!
How do I update to the latest version of Transmission?
Hey, this tutorial is great – thanks so much! I’m not a total n00b, but not far off, so I was nearly put off at the beginning where you just casually say ‘Login to your server using the SSH client’. But, all the rest of the steps were perfectly explained and worked perfectly for me first time (thankfully) and I even learned a thing or two along the way – which was the point really, as far as I was concerned.
Look out for my next post when I need help…
Hi,
Thanks very much for the guide, it’s really great.
One suggestion for an improvement, you could include adding a blocklist to transmission. I used Sergei’s guide here.
http://blog.shvetsov.com/2010/09/automatically-update-transmission-block.html
Thanks again & regards
Any idea how to update to Transmission 1.20? I keep getting a libevent error every time I try to install it. I downloaded and updated to libevent 2.0.10 and still get errors.
The tutorial has been updated today to the new version that includes
libeventinstructions.In your CSF script, you need to allow outgoing UDP and TCP on all ports. You should still limit the incoming ports, but all UDP and TCP ports should be open going out.
TCP already had full access (hence TCP_OUT = “1:65535″) and I added UDP as well today. Not sure if it is necessary, but won’t hurt either way.
For a while now I’ve been unable to connect via FTP, i’ve even had my entire server reset and followed the steps again, whats up?
Is it a problem with software, server end or here client end?
Cheers
FTP access has been discontinued due to low security. You must connect via SFTP, which uses a different port and is encrypted. FileZilla has full support for SFTP.
Great tutorial! Works like a charm.
Anyway to get an update for the latest version 2.21? There seems to be an issue with libevent and the update is not available with yum.
Updated tutorial was released today with version 2.22 and the new
libevent.Hi, thanx for the good tutorial
I have followed every step and they all work fine until I used the
service transmissiond star
it gives me those error below
/etc/init.d/transmissiond: line 10: /etc/rc.d/init.d/functions: No such file or directory
/etc/init.d/transmissiond: line 13: /etc/sysconfig/network: No such file or directory
Shutting down transmission-daemon: /etc/init.d/transmissiond: line 59: killproc: command not found
Are you sure you are running CentOS?
Make sure you are not missing the last letter of that command, as you posted a command that should have ended with a “t”, as in:
#service transmissiond start (Not star)
Where do you see that? I just checked it all twice, I think it says “start” everywhere.
Hi,
Is it possible for to include a separate DIY page for HTTPS direct download and Manage secure Certificates ?
Thank you
Mark
Hi Mark, this has been in the plans for a long time, and is much overdue. In fact, my own setup is running the exact same configuration with Nginx as a front end proxy for the client and also as a server for downloads. It’s not that difficult to setup, but I just never got around to writing a tutorial. I’ll prioritize this as I’ve gotten a few requests like this.
Thanks very much for this great HowTo. My seedbox has been up and running for nearly a month now, i went with Knowin and have a VPS hosted by them in Germany.
I had to use an older version of transmission because the current one doesn’t recognise some libraries een though they are installed.
Is there a program similar to PeerBlock for Linux or are German file-sharing laws different ?
Thanks.
I am not aware of a program similar to PeerBlock. However, Transmission supports block lists natively. There are lists on the internet that you can use. Unfortunately this is beyond the scope of the current tutorial. I might add some info on this later.
Hi, just a quick thanks! Have been using this as a seedbox for around a month now and have had very little bother.
This is absolutely brilliant! Awesome! A miracle! I am absolutely jumping with joy after successfully installing this onto my own server. Of course, I don’t have unlimited bandwidth with my host, so I’ll have to watch that, but this is awesome!
Thanks for this brilliant guide. Works perfectly. Would you mind if I reblog this to my own blog? Giving credits to here of course.
Thanks again
You cannot copy and paste the tutorial. But you can write about your experience and link to the original. Thank you.
The torrent site I use most often does not seem to allow the latest version of transmission.
Is it possible to downgrade to Transmission 2.21?
up and running thanks alot!
Awesome! Thanks a lot. Add more, can you show to add auto rename and rar mod and how to direct download the downloaded files using ie or firefox, not Filezile.
I’ve now gone through it 3 times with great success, and I still owe you a beverage of choice from the first time;)
One thing to add – for those who went through it before, and would like to upgrade their transmission to the latest release, there are a few steps to upgrade.
You will need to have the most recent version of the Transmission Remote GUI to be able to take advantage of all the cool new features, I think but it is a free Windows download. Get it and install it. After that, you will want to upgrade to Transmission 2.22, because you now have a drive space remaining showing in the bottom status bar! Here’s how:
– Go to the tranmission remote GUI page, and get the latest update for that, and install it.
– Log into the VPS shell as root,
service transmissiond stop
cd /usr/local/src/transmission-* (spell this “*” out if you get errors)
make -s uninstall (Not sure if the -s is needed, but it worked for me?)
cd ..
rm -R -f transmission-2.11 (or whichever version you had before)
Then start at the “Installing libevent” part of the tutorial, and go through to the end of the “Installing Transmission” section.
Afterwards, type service transmission start
and you should be back up and running the new version, since there is no need to create a user or directory, and it will even pick right up where the last one left off, without losing your place or your torrents in progress!
Thanks again!
How do I update from transmission 2.31 to transmission 2.32, without starting fresh?
Run through the tutorial again up to, and including, installation of Transmission, but do not change settings.json and don’t install/config csf. Just install new version of T and you are done.
i have already installed transmission 2.11.
Now i want to update to 2.22
Please add a tutorial to update current installation
sorry. I didnt saw the tutorial as comment. Got it. Thank u
Wow, so easy! Thanks for that!
Any plans to make a tut on how to expand this setup with flexget to handle rss feeds? Tried, but failed miserably…
Maybe, but python2.6 is a PIA to install on CentOS, and it’ll probably eat through memory like crazy.
Getting Error at Knowinservers while running the follwing commands
” No targets specified and no makefile found. Stop”
Any idea???
Previous installation (2.11 ) is also not available. I am struck in the middle
cd /usr/local/src
wget -q http://download.m0k.org/transmission/files/transmission-2.22.tar.bz2
tar xjf transmission-*.tar.bz2
cd transmission-*
./configure –prefix=/usr –disable-gtk –disable-libappindicator –disable-libcanberra –disable-gconf2 LIBEVENT_CFLAGS=-I/usr/include LIBEVENT_LIBS=”-L/usr/lib -levent”
make -s
make -s install
The affiliated company got bought out, and forced all of us to new servers, so I had to go through this again from scratch.
I was able to duplicate your error, and it was correctable by installing the missing libevent like so:
yum -y install libevent
That took care of the error I was getting when I tried to start and stop Transmission, and I hope that it resolves your error too. I haven’t yet gotten all the way through the instructions, so I don’t know if there are other hurdles, but I was kind of hoping the original author was going to post an update to go to a more recent version of Transmission, so all of the instructions might be updated.
To the original author: Since the buyout, is the affiliate program dead, or is it still worth referring others to this page for signing up with them?
Regards
Thanks for your post!
That also got me back up and running, had almost given up!
Dear admin
Kindly provide the previous tutorial for 2.11 as the new tutorial does not work fine.
What ever the reasons may be , if you don’t have time to rectify, please upload the previous article of transmission 2.11
Thanks
J.Singh
Any tutorial for ubuntu? Thanks.
I don’t use Ubuntu, so not sure when. It’ll need some research. Although, I think Ubuntu has up to date packages in the repo, so why not just use apt-get?
can you do a tutorial for VPN? with centos, using a windows 7 pc as the vpn client or point me in the right direction?
Maybe one day, maybe even soon
Thanks for the guide.
I have had this working before but my VPS has moved.
This seems to block http connections. I cannot figure out how to configure csf. I do the command you say but then I cannot even test the port in transmission.
Nor can i download anything using wget. Any ideas?
On closer inspection, I seem to get his error at various points after restarting.
“iptables v1.3.5: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.”
Got the same issue. looks like they have a custom kernel!
talked them about this here is what i got.
Our systems use a standard OVZ Kernel from the OpenVZ Mirror, I’m not sure what issue you are having here so really cannot comment on what maybe the cause.
after looking more into it found this read more hear about the problem and i think the how to solve it but im still trying to work out what i need to do.
http://forum.openvz.org/index.php?t=msg&goto=22437&
I am also having problems since my VPS was moved from knownservers
hi, i got stuck at this stage when asked to do:
service transmissiond start
instead of a OK, it says failed.
service transmissiond start
Starting transmission-daemon: /usr/bin/transmission-daemon: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
[FAILED]
am a noob at this. pls help
thanks
Yup, got stumbled on this one too today during the tut update. I think libevent forgot to call “ldconfig” at the end of the install. I have updated the tut to include this command. It basically updates the cache of the dynamic libraries, which allows T to find it correctly. Such a simple thing, but what a mess it creates.
FYI – RapidSpeeds is offering KnowinServer packages for abit.
FYI, I have survived the transfer to RapidSpeed from KnowinServers, and went through this tutorial all over again. I’m back up and running although there are still a few (hopefully minor?) issues to be resolved with RapidSpeed regarding the differences and upgrades that I’d paid for with KnowinServers that seems to have vanished with the move…
Functionally, I’m back up, although I did have to add:
yum -y install libevent
to get the tutorial to work. I’d like to see the tutorial updated to transmission version 2.3.x if possible, even if you end up with a different affiliate program, with a different host, as I often refer others to here for instructions
Thanks!
Hello. Yes, please re-up your tutorial. It works however the basic package cannot ‘yum update’ due to limitation in openvz – it requires a min of 512 MB of Ram.
Got me up and running. Looking forward to seeing what you decided to do. BTW updates on this would be great!
I was able to set up everything just fine with RapidSpeeds, though since you pulled your tutorial, I needed to seek the instructions elsewhere.
Would these people who posted that they got transmission to work successfully with rapidspeeds please explain what they did?
1. Transmission would not start – so I had to use yum install libevents (which installed the old version 1.4 – transmission worked).
2. When trying to connect via Transmission Remote GUI – I got the error message “JSON element ‘peersKnown’ not found.” pop up box and behind this is another pop up saying “could not convert variant of type (Null) into type (Int64)”.
What is causing this? And what is the solution? Thank you to the admin and others for posting their comments.
Have you tried updating your transmission remote gui? Which version are you using?
That sounds like an error with the remote gui, not an error with transmission. Can you access it via the web interface?
Thank you for replying, Ohhhhh you are right. My version was 3.01 and I installed 3.1 now it connects without any error messages. I am going to try installing newest libevents to see if it could work? I am currently using 1.4 via yum install
i couldn’t get past Installing intltool now that I am on Rapidspeeds. it won’t wget and it won’t install
Are you typing the line in manually, or are you copying & pasting it? It could be a typo problem…
Its also possible that the source mirror was down when you tried it, or may have been changed/updated. What errors did you get when you tried to install intltool?
i don’t get an error at all. it just goes back to command line
Libevents 2.13 now works for me. Didnt work before and I had to do yum install libevents to get v1.4 but now I tried the source install again, and it worked. I restarted transmissiond and loaded a new torrent without an error. Thanks Allen for telling me to update my gui app.
What is the story with this move?!?!
I’ve lost over 15 VPS worth of data, without any notification!!!! I checked spam, I checked backup mail, I checked everything!
Sorry to hear that! I am not sure what is going on. The company is not responding at all. They owe me money, and they know it.
@Kiara holyshit! Contact rapidspeeds and complain – DONT GIVE UP.
you can login with your old login info on my.rapidspeeds.com
Anything you had on the old servers is now lost and not likely to be recovered.
Rapidspeeds doesn’t seem to be too responsive to KnowinServers customers about many things – I only had 2 of them, and I’m canceling one, because the add-ons I’d paid for with KnowinServers didn’t get transferred. I’d opened a ticket on it, and the response I got was that they *did* transfer my add-ons, although my records show I paid for a 512 Mb RAM upgrade that has never shown up on one, and a 200 Gb hard drive add-on that hasn’t shown up on the other…
Good luck, and post back if you find a better host.