This project will configure a 512MB Raspberry Pi as a file server and bit torrent server. This is mostly based on an article in the February 2013 issue of Linux Format magazine.
Hook up the hardware and power it on. If you have already worked with Raspbian, the card should be configured. If it isn't, google "configuring raspberry pi" and follow the steps.
To discover the RPi IP address, go to your LAN router's web page and look at LAN status. One of the IP addresses should be for the RPi. On my D-Link router, that information is in the Status section and it looks like this:
Alternatively, if you have a keyboard and monitor hooked up to the RPi, you can just enter 'ifconfig' and get the IP address from that output.
From a terminal on one of your LAN computers, ssh in to the RPi with that IP address:
When asked, enter the pi user's password (the default is raspberry)
Since the RPi will be running headless, there is no real need to allocate a lot of its memory for the display. To change your RPi configuration, enter
Select the memory split option and change it to 16 (16 is the minimal amount you can allocate for display memory). Hit Enter.
Select Update and hit Enter. After it finishes, select Finish in the raspi-config screen. You may be disconnected if any updates were done.
Reconnect your LAN computer to the RPi if necessary. Now add a new user (and password) to the RPi with
In place of 'mburton', you can add any username you wish. Now add the new user to the RPi's users group
The RPi can now be accessed using that user, which will come in handy when you actually use the RPi file or bit torrent server. You can add as many users as you wish using the above 2 commands.
To install the samba file server on the RPi, enter
When the apt-get command is completed, you will have a Samba server installed and running on the RPi. Now add some users to the samba configuration. You can add as many users as you wish.
We will now make some changes to the Samba configuration. First, you should back up the Samba configuration file with
You can now edit the smb.conf configuration file.
In the editor, remove the '#' from in front of the line that says 'security = user'. Then use the editor Search function (the F6 key) to find [homes]. Change the line
then change the line
Press Ctrl-O then Enter to save the file. Press Ctrl-X to exit from the pico editor.
You must now restart the Samba server so it will pick up the new changes.
There are a couple more changes we need to make to Samba, but first we must get the hard drive connected.
If the external USB drive hooked up to the RPi is not running, turn it on.
Once it is powered up, type the following to verify that the drive can be seen and to pick up some important drive information.
You should see information about all the file systems hooked up to the RPi, including the external drive. You should see something that looks like this
Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes 4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000f06a6 Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 15523839 7700480 83 Linux Disk /dev/sda: 250.1 GB, 250059350016 bytes 81 heads, 63 sectors/track, 95707 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0003b0a4 Device Boot Start End Blocks Id System /dev/sda1 2048 488397167 244197560 83 Linux
The last entry (the one connected to /dev/sda1) is the external hard drive we will use for file storage. Note that it uses a Linux file system (ext4). It could just as well be fat32 or ntfs.
Now make a directory on the RPi to mount the hard drive to, then mount the drive.
The hard drive is now mounted, but only until the next time the RPi is rebooted. We need to add an entry to the file system table (fstab) so the drive will always mount when the RPi is turned on. To do that, we need to know the unique id of the hard drive. You can discover this with
You will see something like this:
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="8B12-9112" TYPE="vfat" /dev/mmcblk0p2: UUID="29b6c2f5-5469-49f2-abd5-daa9149021cc" TYPE="ext4" /dev/sda1: LABEL="ext4usb" UUID="c6ea19ea-2a8b-4dc6-a38e-2d5dfda38ad1" TYPE="ext4"
The two pieces we need are the UUID and the TYPE (file system type) for /dev/sda1. Note that this particular hard drive has a type of ext4. Now we need to add an entry to the fstab.
In the editor, go to the bottom of the file and enter the information you got from the blkid command
UUID is from blkid, /mnt/usb is our mount directory, ext4 is the file system type. The rest of the line has to do with drive access.
Save the file and exit. Then reboot the RPi.
You will lose the connection to the RPi in the terminal. Wait a minute or two and then reconnect using ssh.
Use the ls command to verify that the hard drive is connected.
total 8 drwxr-xr-x 2 root root 4096 Jan 29 07:52 Documents drwxr-xr-x 2 root root 4096 Jan 29 07:52 Downloads
Note that this hard drive has a couple of directories on it already. We will allow access to those directories with Samba. If you don't have any directories on your hard drive, you should make some with sudo mkdir /mnt/usb/directoryname.
Now let's modify the Samba configuration again to allow user access to those directories.
Go to the end of the file and enter the following
[Downloads] comment = Place your downloads here path = /mnt/usb/Downloads browseable = yes writable = yes read only = no valid users = @users [Documents] comment = Important documents go here path = /mnt/usb/Documents browseable = yes writable = yes read only = no valid users = @users
You can restrict the user access to the Documents directory if you wish. If I wanted to restrict access to only the pi and mburton user, I would use
We now have a completely configured Samba file server running on the RPi.
Our next step is to download and install the Transmission bit torrent server. Enter the following
At the completion of this apt-get command, we have the transmission server installed and running. Now we need to create a transmission directory on our hard disk and change its ownership.
pi@raspberrypi ~ $ sudo mkdir /mnt/usb/public pi@raspberrypi ~ $ sudo chown debian-transmission /mnt/usb/public
Now we can add that directory to the Samba configuration.
Go to the bottom of the file and add
[Public] comment = Public share for bit torrents path = /mnt/usb/public browseable = yes public = yes writable = yes guest ok = yes
Save the file, then restart the Samba service
We will now configure the transmission server. First, we will stop the server and then add that daemon to our users group.
pi@raspberrypi ~ $ sudo service transmission-daemon stop pi@raspberrypi ~ $ sudo usermod -a -G users debian-transmission
Now we can modify the Transmission configuration file.
Find the rpc-whitelist-enabled entry and change it to allow users to connect from all computers.
Go up to the download-dir entry and change it to
Next, go to the incomplete-dir-enabled and change it to
Now change the incomplete-dir to
The final configuration change to Transmission is to set up the user authentication so not everyone can queue torrents for downloads to the RPi. Find the rpc-authentication-required entry and change it to
Don't worry if this is already set to true. Now enter a new password for authentication. Transmission will automatically encrypt this when you restart the daemon.
You are done with the Transmission changes, so save the file and exit from the editor. Finally, start up the daemon
At this point, both the file server and the bit torrent server are properly configured and are working.
The Transmission server has a web interface. To access it, connect to your RPi using your browser and the RPi's IP address and the standard Transmission port number, which is 9091.
An authentication dialog will be presented. The user name is always 'transmission'. the password is the one we just inserted into the Transmission configuration (in our case, it is 'raspberry').
When the authentication is accepted, the Transmission web page will be presented.
To add a new torrent download to the server, click on the folder icon, then supply the address of the torrent file. Transmission will take care of everything else.
When a torrent download is completed it will be moved from RPi's public/downloads/Incomplete directory to its public/downloads/Complete directory. You can copy the file to your computer using the file server web interface.
You can access the file server on the RPi from your other LAN computers using your web browser. Bring up the browser and enter 'smb://' followed by the IP address of the RPi. You will see something like the following.
You can browse through the accessible RPi directories. If you see a file you want to transfer to your computer, right-click on the file, then click on Save Link As to save it to your computer.