27 Янв
Автор: ras Рубрики: Программное обеспечение
Есть у меня домашний Linux-сервер под CentOS, выполняющий роль шлюза в сеть Интернет, файлового хранилища с FTP и Samba, и другие функции, необходимые системному администратору, которые проблематично реализовать на базе аппаратного маршрутизатора. Вот появилась идея установить и демон torrent-клиент на данный сервер, чтобы качал себе и раздавал необходимые мне файлы.
Раньше у меня был опыт работы с MLDonkey, но вспоминая его ужасный web-интерфейс и монстроидальность — отказался сразу. Далее взгляд пал на rTorrent, знакомый его использовал на маршрутизаторе D-Link DIR-320 с модифицированной прошивкой от Олега. Очень порадовал красивый web-интерфейс, похожий на µTorrent. Но, т. к. это всё-таки не демон, а консольное приложение, глянув на метод его запуска и связывания с web-интерфейсом — решено было отказаться и от него.
В итоге выбор пал на Transmission, опять же, тот же знакомый уже его успешно использовал, так же выяснилось, что данный клиент имеет демон для запуска без GUI. Сначала была установлена и настроена старая версия из репозитария EPEL transmission-1.34-1.el5.x86_64, но работать с данной версией было крайне неприятно, многое не поддерживалось, GUI-клиент не совсем корректно работал с данной версией, не была доступна часть функций. Собрать новую версию обычным способом не получалось из-за того, что в CentOS используются более старые версии нужных для сборки transmission библиотек. Ещё одним фактором использования новой версии является поддержка ей списка трекеров. На этом заканчивается лирическое отступление, опишу сборку и настройку.
Сборка
Установка необходимых для сборки пакетов:
Подготовка каталога, получение исходного кода:
Сборка:
Настройка web-интерфейса для httpd, файл /etc/httpd/conf/httpd.conf:
В «Allow from» укажите IP, с которого вы хотите получить доступ, в своём случае, я использовал «Authtype Basic», т. е. захожу по паролю. Перезапуск httpd (если возникли ошибки, смотрим каких модулей не хватает, подправляем файл конфигурации):
Далее я столкнулся с тем, что не нашёл нормального init-скрипта, написал свой. Он ещё находится в стадии тестирования, но как показала практика работает нормально, запуск демона будет от пользователя root. Да, знаю что это не правильно, но пока так /etc/rc.d/init.d/transmission:
Установка прав на запуск:
Добавление в автозапуск:
Запуск:
Если всё выполнено правильно, демон запущен и работает.
Настройка
Теперь нужно настроить демон, основные настройки доступны с web-интерфейса. Нужно открыть в браузере http://ваш-web-сервер/transmission, слева внизу есть кнопка настроек, выбрать Preferences. Указать путь куда будут сохраняться файлы, номер порта и не забыть открыть его в фаерволле для входящих соединений. На второй вкладке указать ограничение скорости. Всё, можно работать, добавлять torrent-файлы, наблюдать процесс скачивания.
Все настройки сохраняются в каталоге /root/.config/transmission-daemon. Там же хранятся torrent-файлы и информация о текущих загрузках.
Ещё я столкнулся с тем, что со временем демон начинает отъедать много ресурсов процессора, ест память, перезапуск помогает. Поэтому небольшой костыль в /etc/crontab:
GUI
Есть неплохой GUI-интерфейс для transmission-daemon кроме родного — Transmission Remote GUI. Данный клиент является кроссплатформенным, есть сборки как под Linux, так и под Windows, написан на Lazarus. Для того, чтобы данный клиент мог подключиться к демону — я добавил в скрипт запуска, строку параметров после 127.0.0.1, через запятую — IP-адрес домашнего компьютера.
Итог
В результате проделанной работы я получил довольно удобную систему: демон качает, по самбе получаю доступ к скачанным файлам. При работе с загрузками используется довольно удобный GUI.
Готов выслушать замечания, ваши рекомендации по улучшению скрипта запуска, дополнения, уточнения материала данной статьи.
Ссылки
gordonsh
спасибо за качественный мануал.
возникла проблема на этапе запуска сервиса (в автозагрузке его вижу, добавилось норм)
# service transmission start
transmission: unrecognized service
как его запустить?
Думаю, я забыл упомянуть, что нужно выставить права на запуск для скрипта, поэтому:
chmod 755 /etc/rc.d/init.d/transmission
Проверил, и таки да. Спасибо за найденную ошибку, завтра исправлю документацию.
Подправил статью.
MHz
Спасибо за хороший мануал, но у меня проблема:
service httpd restart
httpd: нераспознанная служба
кстати файла /etc/httpd/conf/httpd.conf не было, пришлось создать его, но был /etc/httpd/conf.d/squid.conf
Заранее спасибо за помощь.
> service httpd restart
> httpd: нераспознанная служба
> кстати файла /etc/httpd/conf/httpd.conf не было, пришлось создать его, но был /etc/httpd/conf.d/squid.conf
Это означает, что у вас не установлен пакет httpd (т. е. web-сервер apache, вам его необходимо установить: yum install httpd, если хотите иметь web-интерфейс). Поэтому и нет конфигурационного файла /etc/httpd/conf/httpd.conf, но видимо, у вас установлен прокси-сервер squid, и есть его упомянутый вами конфиг: /etc/httpd/conf.d/squid.conf.
alex
Классный мануал. Сильно экономит время.
Кстати чтобы не от рута запускался, в написанном вами скрипте можно сделать следующее:
1) Меняем user=’root’ на user=’torrent’ где torrent это созданный юзер под которым и будем запускаться, может быть любым пользователем по вашему желанию
2) Комментируем строки:
home=`/bin/grep -E «^$user:» /etc/passwd | /bin/cut -d : -f 6`
и
export HOME=$home в двух местах
какбы не нужно вроде
3) Меняем строку
daemon $processname $options
на
echo «$processname $options» | /bin/su — $user
Все, теперь не от рута запускается. По умолчанию в домашней директории выбранного пользователя теперь все будет складываться. Если уже работало под root, то можно предварительно скопировать туда существующий каталог .config и Downloads (может он у вас в другом месте был) с домашней директории root. Только после этого не забыть командой chown сменить владельца этих директорий на нового.
chown -R torrent:torrent .config
chown -R torrent:torrent Downloads
torrent:torrent — это имя пользователя и его группы, ну если что не понятно то man chown
Спасибо alex за очень полезный комментарий. Но, без «export HOME=$home» — у меня при запуске не самостоятельно, а инит-скриптом, т. е. когда нет шелла, корневой каталог становился для рута корнем, и конфигурация и прочее начинали писаться прямо в корень ФС.
koe
Не могу совладать с intltool-0.40.6 — ошибка XML::Parser perl mod is req 4 intltool.
инсталировал несколько раз, cpan — ом проверял — up to date. Но ошибка не исчезла.
Посоветуйте что еще ему нужно !
Спасибо.
У меня установлен rpm-пакет perl-XML-Parser-2.36-1.el5.rf из репозитария RPMForge, не изз CPAN.
koe
Спасибо, потратил ночь, но разобрался ![]()
на самом деле intltool не мог скомпилить EXPAT так как не находил expat.h in /usr/include и libexpat.so.0 in /usr/lib
После копирование их туда из /usr/local/include и /usr/local/lib соответственно — все заработало.
CentoOS — это не слака и не генту, тут много чего не компилят, известно почему… Проблема видно в недопонимании…
Собрал версию 2.10, отличаи при сборке минимальны, всего лишь пришлось установить перед компиляцией libevent-devel, который теперь не идёт с самим transmission:
yum install libevent-devel
Версия 2.21 уже не собирается, требует libevent >= 2.0.10. Думаю на этом стоит приостановить «костылестроение» (и не пересобирать ещё и libevent)
и дождаться CentOS 6…
Как на VDS c Debian прикрутить transmisson-remote-gui для transmission?
Если можно – по-шагово.
У меня на данный момент стоит оболочка самая простая и совсем не похожа на µTorrent. Она малофункциональна.
Заранее благодарен
http://code.google.com/p/transmisson-remote-gui/downloads/list
Скачайте просто бинарник нужной архитектуры, распакуйте и запустите, если есть сложности со сборкой под Debian.
Илья
После команды yum install gcc gcc-c++ m4 make automake libtool gettext openssl-devel получаю ошибку:
Transaction Check Error:
file /usr/kerberos/man/man5/krb5.conf.5.gz from install of krb5-libs-1.6.1-55.el5_6.1.x86_64 conflicts with file from package krb5-libs-1.6.1-36.el5_5.4.i386
Error Summary
Система CentOS 5.5 x86_64
Для начала я бы посоветовал обновить систему до последней:
yum clean all
yum update
Ну и часто бывает что проблема просто в кэше, неправильные версии, поэтому проблема и с установкой и с обновлением, попоробуйте для начала очистить кэш:
yum clean all
Ещё что может быть, у вас система 64-битная? Если да, то у вам нужно удалить i386-пакет krb5-libs, который и вызывает конфликт:
yum remove krb5-libs-1.6.1-36.el5_5.4.i386
Да и вообще я бы удалил на вашем месте все 32-битные пакеты с системы, если не нужно использовать 32-битный софт, посмотреть список пакетов можно так:
yum list | grep -w installed | grep -r ‘\.i[3456]86 ‘ | awk ‘{print $1}’ | sort
Kir
Саша, спасибо за труды! Установил как по маслу на Elastix.
запрвшиваю:
http://192.168.0.210/transmission/
меня перебрасывает на
http://192.168.0.210/transmission/web
там ошибка 403.
та же картина, если запрашиваю в консоли на самом сервере.
настройки web-интерфейса для httpd добавил в конец файла /etc/httpd/conf/httpd.conf
Им предшествуют настройки WEB-интерфейса сервера IP-телефонии Elastix и сервера доступа к музыке и видео Subsonic, которые отрабатывают корректно.
В чем может быть ошибка?
адреса пробовал менять на реальный IP сервера и IP машины, с которой подключаюсь. the same problem. 403.
ProxyPass /transmission http://127.0.0.1:9091/transmission
ProxyPassReverse /transmission http://127.0.0.1:9091/transmission
Allow from 127.0.0.1
Жду помощи.
links на локальной машине при обращении 127.0.0.1/transmission
отвеил:
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request [1]GET /transmission/web.
Reason: Error reading from remote server
Ошибка 403 «Доступ запрещен». У вас недостаточно прав на доступ. Подробно можете посмотреть в логах что пишет сервер. Секция совпадает с той что я привёл? Ибо там разрешение с локалхоста есть:
Order allow,deny
Allow from 127.0.0.1
Подробнее об ошибке можно прочитать например тут: http://www.yutex.ru/help_error.php#403
Судя по ошибке во втором вашем сообщении — у вас не разрешён доступ к самому демону transmission-daemon, проверьте настройки демона. Я для этой цели добавлял в строку запуска демона:
options=’—allowed 127.0.0.1 —no-auth’
Иван
А как сделать, чтобы доступ был с любого ip? уже по всякому перепробовал. 0.0.0.0 не помогает
Такс, man на transmission-daemon нам говорит следующее:
-a —allowed x.x.x.x,…
Allow RPC access to a comma-delimited whitelist of IP addresses. Wildcards can be specified in an address by using
’*’. Default: «127.0.0.1″ Example: «127.0.0.*,192.168.1.*»
Т. е. по идее «–allowed *.*.*.*» должно помочь. Попробовал с этой опцией, вроде бы стартует и работает, попробуйте так.
Иван
Спасибо большое!) Тупанул, мог и сам ман посмотреть))
Иван
Кстати, сидел как-то, делать было совсем нечего. Взял, и руссифицировал web-интерфейс. Кому надо если, могу файлик скинуть..
Давайте, выложу в комплекте к статье, размещу ваши данные, ссылку, на автора…
http://www.site-park.ru/files/web.tar.gz
Ну как то так.. расспаковать надо и заменить index.html в папке /usr/local/share/transmission/web
И, конечно стоит учесть, что делать это стоит желательно с версией transmission 1.80, т.е. как описано в статье.
И кстати еще хочу посоветовать одну приложуху по этой теме, пользователям Android. Вещь шикарная. http://transdroid.org
Еще могу поделиться статейкой если надо. только что закончил править. CentOS 5.x в роли контроллера домена
Контроллер домена уже явно выходит за тему торрента
.
Ну так я не про эту статью говорю, а вобщем..