• Авторизация


Torrent сервер для раздач файлов 06-11-2008 21:07 к комментариям - к полной версии - понравилось!


 на платформе Gentoo

Не так давно, меня начал доставать мой низкий рейтинг на трекерах. Времени исправлять ситуацию нет, но информация иной раз бывает очень нужна ;)
Дома у меня стоит сервер Gentoo с ежемесячным остатком трафика, вот я и решил исправить положение.

Схема у нас будет такая: самописный демон будет запускать консольный клиент rtorrent, который, в свою очередь будет через XMLRPC работать с SCGI гейтом, за счёт чего у нас будет Web-интерфейс управления нашими торрентами. Сами торренты будем забирать с сервера по средствам FTP.

[показать]
В качестве гейта я выбрал lighttpd, по 3м причинам: легко настраивается, мало ест памяти, легче спрятать в интрасеть.

Кстати сервер Lighttpd мне очень понравился. Лёгкий, оптимизированный, функциональный, разве что не совсем безопастный. В этом сервере я нашёл все те положительные качества, которые когда-то нашёл в Gentoo.

Установка необходимого ПО.

Зададим необходимые USE-флаги(для этой операции в системе должен уже быть порт gentoolkit):

# euse -E curl libwww xmlrpc sqlite php
#
euse -D minimal

Теперь установим необходимое:

# emerge -avn lighttpd rtorrent dtach xmlrpc-c subversion vsftpd

Настройка lighttpd

# vim /etc/lighttpd/lighttpd.conf

Найдите там секцию server.modules и добавте в неё строчку:
 

code:


"mod_scgi",



Мы подключили к серверу lighttpd модуль реализующий поддержку SCGI.

Затем в конец файла добавте:
code:


scgi.server = (



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




Настроили модуль SCGI.

Также могут быть интересны такие значения как:

#Порт который использует сервер. Если не задано используется 80.
server.port = 81

#Сетевой интерфейс который занимает сервер. Если не задано сервер пытается занять все. У меня была проблема - при указании #явного интерфейса сервак переставал слушать сетевую петлю и не мог соединится с rtorrent'ом. Способа заставить явно слушать его 2 #интерфейса я не нашёл.
server.bind = 192.168.0.1

#Настройка безопасности. Запрещает доступ к перечисленным типам файлов. Рекомендую поставить, иначе у вас утащат базу данных с #паролем для доступа к wtorrent прямо из-под носа =)
url.access-deny = ("~", ".inc", ".db", ".tpl.php", ".cls.php",)

Ну и поставим lighttpd на загрузку при старте системы и заодно запустим его:

# rc-update add lighttpd default
# /etc/init.d/lighttpd start

Настройка rtorrent.

Конечно у rtorrent'а масса интересных настроек, но в данный момент нас интересует только порт, который будет слушать сокет, а посему:

$ echo "scgi_port = 127.0.0.1:5000" > > ~/.rtorrent.rc

Ещё нам понадобится чтобы rtorrent работа как демон, для этого я использовал start-stop-daemon.

# vim /etc/init.d/rtorrentd

code:


depend() {
        use net.*
}

start() {
        ebegin "Starting rtorrent"
        start-stop-daemon --start --chuid $USER \
            --env TERM="xterm" \
            --env HOME="/home/$USER" \
            --exec /usr/bin/dtach -- -n $SOCKET /usr/bin/rtorrent
        eend $?
}

stop() {
        ebegin "Stopping rtorrent"
        start-stop-daemon --stop --signal 2 --name rtorrent
        eend $?
}




# vim /etc/conf.d/rtorrentd


code:


#Пользователь от которого будет запускаться rtorrent. От Root'а лучше не запускать.
USER="sb0y"
# Сокет rtorrent'а.
SOCKET="/tmp/rtorrent.dtach"


Ставим на автозагрузку и запускаем:

# chmod +x /etc/init.d/rtorrentd
# rc-update add rtorrentd default
# /etc/init.d/rtorrentd start

Установка и настройка wTorrent

[показать]

Мы дошли до ключевой стадии - web-интерфейса нашего торрент-клиента :)

# cd /var/www/localhost/htdocs
# rm *
# svn co svn://wtorrent-project.org/repos/trunk/wtorrent/
# cp -R wtorrent/* . && rm -R wtorrent
# chmod 0777 -R * -R
# cp conf/sample.home.conf.php conf/home.conf.php
# vim conf/home.conf.php

home.conf.php - это конфигурационный файл wtorrent. Отредактируйте его примерно так(я указываю только те секции, значение которых менял):

code:


// Текущая ссылка на wtorrent
define( 'URL',                          'http://192.168.0.1:81' );
define( 'BASE',                         'http://192.168.0.1:81' );

// Информация для соединения с rTorrent. Логин и пароль можно не изменять, если вы ранее не настроили авторизацию в rTorrent.
define( 'RT_HOST',                      'localhost');
define( 'RT_PORT',                      81);
define( 'RT_DIR',                       'RPC2/');
define( 'RT_AUTH',                      false);
define( 'RT_USER',                      'my_user');
define( 'RT_PASSWD',            'my_password');

// физическое место положение wtorrent на сервере
define( 'DIR_EXEC',                     '/var/www/localhost/htdocs/');



Теперь запускайте броузер и открывайте http://192.168.0.1:81/install.php и если всё хорошо, вам предложат добавить нового пользователя.

Помните, что папка которую вы выберите для скачки торрентов должна принадлежать пользователю от которого вы запускаете rTorrent и конечно же должна быть доступна для записи.

Настройка vsftpd.

# vim /etc/vsftpd/vsftpd.conf

code:


irmessage_enable=YES
chown_uploads=NO
idle_session_timeout=900
data_connection_timeout=120
ascii_upload_enable=NO
ascii_download_enable=NO
chroot_list_enable=YES
listen=YES
ls_recurse_enable=NO
anonymous_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
local_enable=NO
write_enable=NO



Эта настройка вешает сервак на все доступные интерфейсы с анонимным доступом без прав записи.

Правда остаётся ещё одна проблема - демон vsftpd стартует в chroot-окружении под пользователем "ftp", у которого нет доступа никуда кроме папки /home/ftp. Это одна из мер повышенной безопасности ftp-сервера, но Unix не был бы Unix'ом если бы его пластичная архитектура не позволяла бы хранить файлы не только в /home/ftp:

# mkdir /mnt/hdc1/torrents
# mkdir /home/ftp/torrents
# chown sb0y:sb0y -R /mnt/hdc1/torrents
# chmod 775 -R /mnt/hdc1/torrents
# vim /etc/fstab

code:


[...]
/mnt/hdc1/torrents /home/ftp/torrents none ro,bind 0 0


# mount -a


Позднее ещё опробую для этой задачи NFS и если результат меня удивит дополню статью. На момент написания этого текста мне казалось, что для того чтобы тягать с сервера фильмы по гигабайту больше всего подходит FTP.



Заключение.

Вот так просто и не затейливо мы решаем проблему низкого рейтинга на трекерах, не нарушая никаких правил и делая пользу людям.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Torrent сервер для раздач файлов | sudosu - unix: легенды и реальность | Лента друзей sudosu / Полная версия Добавить в друзья Страницы: раньше»