Tuesday, March 30, 2010

Configuring a HTPC server using Slackware 13

This is a HOWTO about configuring an HTPC server using Slackware 13 (my fav distro).

1. First step, install Slackware linux. AlienBOB wrote a nice HOWTO about installing it using an USB flash drive.

2. Create the 'torrent' group. It will be used later to distinguish between which users are allowed to use the torrent downloading feature.
groupadd -g 102 torrent

3. Install libsigc++ library, needed by libtorrent and rtorrent.
cd ~
wget http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.5.tar.gz
tar zxvf libsigc++-2.2.5.tar.gz
cd libsigc++-2.2.5
make install

4. Install XML-RPC library, needed by rtorrent and php (custom builded).
cd ~
svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
wget http://heanet.dl.sourceforge.net/project/xmlrpc-c/Xmlrpc-c%20Super%20Stable/1.06.38/xmlrpc-c-1.06.38.tgz
tar zxvf xmlrpc-c-1.06.38.tgz
cd xmlrpc-c-1.06.38
./configure --disable-wininet-client --disable-libwww-client --disable-abyss-server --disable-cgi-server --disable-abyss-threads --disable-cplusplus
make install clean

5. Install libtorrent library, needed by rtorrent.
cd ~
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxvf libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
./configure --disable-ipv6
make install

6. Install rtorrent
cd ~
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxvf rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
./configure --with-xmlrpc-c
make install
ln -s /usr/local/lib/libtorrent.so.11.0.6 /usr/lib/libtorrent.so.11
test if rtorrent starts by typing rtorrent (exit with ctrl-q).

7. Configure rtorrent
wget http://libtorrent.rakshasa.no/export/1155/trunk/rtorrent/doc/rtorrent.rc -O /etc/skel/.rtorrent.rc
mkdir /etc/skel/newtorrents
mcedit /etc/skel/.rtorrent.rc

Uncomment and change the following vars:
directory = /mnt/disk/filme
session = /home/torrent/session
schedule = watch_directory,5,5,load_start=/home/torrent/newtorrents/*.torrent
schedule = untied_directory,5,5,stop_untied=
schedule = low_diskspace,5,60,close_low_diskspace=100M
port_range = 6890-6999
port_random = no
use_udp_trackers = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
dht = auto
peer_exchange = yes

Append the following lines:
scgi_port = localhost:5000
encoding_list = UTF-8

8. Configure pppoe (if you're not using pppoe you can skip this step)
Setup the connect params:

Test if it works:

Stop the connection:

Edit /etc/ppp/pppoe.conf and change:

If you wanna specify the interface based on MAC address, add the following code:
# set the interface based on MAC address
for i in 0 1 2 3 ; do
if [ "$(cat /sys/class/net/eth$i/address 2>/dev/null)" = "00:e0:4c:ff:ff:ff" ] ; then ETH="eth$i"; fi

We want pppoe to be connected automatically so edit /etc/rc.d/rc.inet1 and then search for the start() function and add the pppoe-start command. Also search for the stop() function and add the pppoe-stop command right at the beginning.

If you have a home lan network and you wanna make it inferior to the pppoe connection, edit /etc/rc.d/rc.inet1.conf and append the following code:

# make the LAN interface inferior to PPPOE interface
for i in 0 1 2 3 ; do
if [ "$(cat /sys/class/net/eth$i/address 2>/dev/null)" = "00:27:0e:ff:ff:ff" ] ; then

Test the connection by using:
/etc/rc.d/rc.inet1 restart

9. Install PHP enabling the XML-RPC feature.
cd ~
wget http://museum.php.net/php5/php-5.2.8.tar.gz
tar zxvf php-5.2.8.tar.gz
cd php-5.2.8
./configure --enable-fastcgi --enable-force-cgi-redirect --enable-discard-path --disable-ipv6 --with-xmlrpc
make install

10. Install the mod_scgi module:
cd ~
wget http://python.ca/scgi/releases/scgi-1.14.tar.gz
tar zxvf scgi-1.14.tar.gz
cd scgi-1.14/apache2/
apxs -i -c mod_scgi.c

10. Install dtach:
cd ~
wget http://switch.dl.sourceforge.net/project/dtach/dtach/0.8/dtach-0.8.tar.gz
tar zxvf dtach-0.8.tar.gz
cd dtach-0.8

10. Configure apache to enable php, mysql, mod_scgi and phpmyadmin.

Edit /etc/httpd/httpd.conf and uncomment this line:
Include /etc/httpd/mod_php.conf

In the "IfModule dir_module" section add index.php.

In the "IfModule alias_module" section add:
Alias /rtorrent /var/www/htdocs/rtorrent
Alias /phpmyadmin /var/www/htdocs/phpmyadmin

Load the scgi module:
LoadModule scgi_module lib/httpd/modules/mod_scgi.so

Append the mounting command:

Add directory options
Directory "/var/www/htdocs/rtorrent"
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwd
Require user admin

Create admin user:
htpasswd -c /etc/httpd/passwd admin

Restart httpd:
/etc/rc.d/rc.httpd restart

mkdir /etc/skel/session
mkdir /etc/skel/public_html
cp /var/www/htdocs/index.html /etc/skel/public_html/

Install mysql server database:
chown -R mysql.mysql /var/lib/mysql
cd /usr
mysqld_safe &
killall mysqld
/etc/rc.d/rc.mysqld start

Add users:
mysql -p -e "CREATE DATABASE IF NOT EXISTS tvc; CREATE USER 'tvc'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON tvc.* TO 'tvc'@'localhost' WITH GRANT OPTION;"

11. Make rtorrent start/stop automatically
Edit /etc/rc.d/rc.M and append this code:
# Start rTorrent
if [ -x /etc/rc.d/rc.rtorrent ]; then
. /etc/rc.d/rc.rtorrent start

Edit /etc/rc.d/rc.0 and add this code somewhere at the beginning:
# Stop rTorrent
if [ -x /etc/rc.d/rc.rtorrent ]; then
. /etc/rc.d/rc.rtorrent stop

No comments:

Post a Comment