Домашний файловый сервер (Часть 3.1)

В предыдущих двух статьях (1 и 2) мы поговорили о железе для сервера, начали разбирать какое ПО используется для реализации поставленных задач. Сегодня я расскажу какие  качалки на нем используются и как все это устанавливалось и настраивалось.

Для начала необходимо определится с torrent клиентом. Выбирал из трех: Transmission, Delug и Rtorrent. Выбор пал на послений, т.к. он обладает

  • гибкой системой настроек
  • не требователен к ресурсам
  • умеет загружать торренты в различные папки
  • к нему можно получить доступ как через web интерфейс, так и подключится по ssh
  • имеет большое количество графических web оболочек.

Т.к. мы планируем использовать приятный графический интерфейс, то rtorrent который находится в репозиториях debian нам не подходит, т.к. он собран с некорректной библиотекой xml-rpc.

Устанавливаем все пакеты, необходимые для сборки xmlrpc-c, libtorrent, rtorrent из исходников:

 sudo aptitude install checkinstall subversion build-essential make
 autoconf autotools-dev automake libtool libcurl4-openssl-dev
 libsigc++-2.0-dev  pkg-config libncurses5-dev
 sudo aptitude remove rtorrent libtorrent11 libxmlrpc-c3
 libxmlrpc-c3-dev libxmlrpc-core-c3  libxmlrpc-core-c3-dev

Далее Скачиваем, компилируем и собираем при помощи checkinstall deb пакеты наших программ:

svn co https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced
xmlrpc-c
cd xmlrpc-c
./configure --prefix=/usr && make
sudo checkinstall -D
cd ..
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
rm -f scripts/{libtool,lt*}.m4
./autogen.sh && ./configure --prefix=/usr && make
sudo checkinstall -D
cd ..
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
rm -f scripts/{libtool,lt*}.m4
./autogen.sh && ./configure --with-xmlrpc-c --prefix=/usr && make
sudo checkinstall -D

Rtorrent имеет один недостаток, он не умеет работать демоном. И тут нам на помощь спешит утилита screen

sudo aptitude install screen -y

Далее нам необходимо написать свой init скрипт или воспользоваться уже готовым, я пошел по второму пути, т.к. не вижу смысла заново изобретать велосипед:

sudo su
wget http://libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommon
Tasks/rtorrentInit.sh --output-document=/etc/init.d/rtorrent
chmod +x /etc/init.d/rtorrent
sed -i 's/"user"/"media"/' /etc/init.d/rtorrent
update-rc.d rtorrent defaults
useradd -d /home/media -m media
exit

Теперь необходимо в домашнем каталоге пользователя media создать конфигурационный файл.

 #минимальное число пиров на торрент
 min_peers = 1 

#максимальное число пиров на торрент
 max_peers = 1000 

#максимальная скорость загрузки
 download_rate = 0 

#максимальная скорость отдачи. 0 - не ограничена
 upload_rate = 150 

#каталог для сохранения закачек или откуда будут сидироваться торренты.
 directory = /media/DATA/Downloads/ 

#каталог куда будет сохраняться состояние торрентов.
 #Здесь, в этом примере, они сохраняются в папку  session
 session = /media/DATA/Downloads/torrents/sessions/ 

#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы
#и если они есть то ставит их на закачку
schedule = watch_directory,5,5,load_start=/media/DATA/Downloads/torrents/*.torrent 

#проверяет каталоги 2 и 3 на новые *.torrent файлы и сохраняет закачки в соответствующие папки
 #schedule = watch_directory_2,5,5,"load_start=/home/user/torrent_auto_load_2/*.torrent,
 #d.set_directory=/home/user/download2"
 #schedule = watch_directory_3,5,5,"load_start=/home/user/torrent_auto_load_3/*.torrent,
 #d.set_directory=/home/user/download3" 

#номер порта (или нескольких портов) который открывает клиент для о
#бмена данными
 port_range = 40890-40890 

#случайный выбор порта для обмена данными. В данном случае он отключён
 port_random = no 

#проверять хэш торрента после закачки
 check_hash = yes 

#сохранять сессию
 session_save = yes 

#принимать зашифрованные входящие соединения, устанавливать
#незашифрованные исходящие соединения,если возвращает ошибку,
#повторять с шифрованием, предпочитать открытый текст после установления
#зашифрованного соединения
 encryption = allow_incoming,enable_retry,prefer_plaintext 

#использовать udp
 use_udp_trackers = yes 

# Разрешает работу DHT для безтрекерных торрентов или для случаев,
#когда все ретрекеры лежат (не работают).
# Может принимать значения "disable" (для полного отключения DHT),
#"off" (не стартует с DHT), "auto" (Включает DHT при возможности),
#или "on" (принудительно включает DHT).
# Значение DHT по умолчанию "off". Для правильной работы DHT каталог
# сеансов "session" должен быть определен.
dht = auto

 # UDP порт, используемый DHT.
 dht_port = 6881 

# Принудительно устанавливает кодировку UTF-8 для xmlrpc.
 # Рекомендуется для устранения проблем при использовании в
 # наименованиях торрентов символов кириллицы. Актуально для
 # GUI, работающих через xmlrpc.
 encoding_list = UTF-8
 scgi_port = 127.0.0.1:5000

Далее создаем папки, которые указали в конфиге и даем на них права пользователю media. Запускаем Rtorrent. Теперь уже можно подключаться по ssh и управлять нашим торрент клиентом. Но согласитесь удобнее все это делать через графический интерфейс. Поэтому следующим этапом мы установим web-gui RUTORRENT.

Для его работы нам потребуется вебсервер. Я выбрал lighttpd, т.к. не потребялет много ресурсов и прост в конфигурировании. Устанавливаем необходимые пакеты:

sudo aptitude install lighttpd php5-cgi php5-cli php5-curl curl -y
lighty-enable-mod fastcgi

В конфигурационном файле я изменил директорию по умолчанию и порт сервера, добавил авторизацию и сделал настройки, необходимые для запуска Rutorrent, вот так сейчас у меня выглядит конфиг:

server.modules = (
        "mod_scgi",
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
       "mod_cgi",
)

server.document-root        = "/home/media/rutorrent"
server.port                 = 6666
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"

index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm",
                               " index.lighttpd.html" )

url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
include_shell "/usr/share/lighttpd/use-ipv6.pl"

dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/x-javascript", "text/css",
                                "text/html", "text/plain" )

include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

server.modules   += ( "mod_fastcgi" )
fastcgi.server    = ( ".php" =>
        ((
                "bin-path" => "/usr/bin/php5-cgi",
                "socket" => "/tmp/php.socket",
                "max-procs" => 2,
                "idle-timeout" => 20,
                "bin-environment" => (
                        "PHP_FCGI_CHILDREN" => "1",
                        "PHP_FCGI_MAX_REQUESTS" => "10000"
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),
                "broken-scriptfilename" => "enable"
        ))
)

scgi.server = (
        "/RPC2" =>
        ( "127.0.0.1" =>
                (
                "host" => "127.0.0.1",
                "port" => 5000,
                "check-local" => "disable"
                )
        )
)

server.modules                += ( "mod_auth" )
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.passwd"

auth.require = ( "" =>
("method" => "digest",
"realm" => "Authorized users only",
"require" => "valid-user")
)

Перезапускаем Web сервер

/etc/init.d/lighttpd force-reload

Установка собственно web-gui:

cd /home/media/rutorrent
svn co http://rutorrent.googlecode.com/svn/trunk/rutorrent
cd /home/media/rutorrent/plugins/
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/tracklabels
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/cookies
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/autotools
svn co http://rutorrent.googlecode.com/svn/trunk/plugins/erasedata

На официальном сайте доступны еще плагины, которые устанавливаются аналогичным способом.

Все установка завершена. Открываем браузер вводим адрес нашего сервера и порт и попадаем в web клиент. Если В браузере будут ошибки, проверяйте права на файлы.

ruttorent

web интерфейс RuTorrent для Rtorrent

Статья получилась большой, поэтому разобьем ее на две части и про настройку DC расскажем в следующей подчасти.

Поделиться в соц. сетях

Share to Google Buzz
Share to Google Plus
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki
This entry was posted in Домашний сервер. Bookmark the permalink.

One Response to Домашний файловый сервер (Часть 3.1)

  1. Nice blog here! Also your website loads up fast!

    What host are you using? Can I get your affiliate link to your host?
    I wish my web site loaded up as fast as yours lol

Leave a Reply

Your email address will not be published. Required fields are marked *

*