Config.ru - Novik/ruTorrent GitHub Wiki

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

Установка

Собственно, вся установка проходит под лозунгом "наливай да пей". Необходимо скачать версию и развернуть полученный архив в корень веб-сервера. Делать это лучше из под пользователя, под которым работает собственно веб-сервер. Если это по каким-либо причинам невозможно (например, данный пользователь не имеет доступа к шеллу) - после разархивации необходимо убедиться, что все файлы ruTorrent доступны пользователю веб-сервера на чтение, а директория ruTorrent/share со всем своим содержимым - на чтение и запись. Причем последняя должна так же быть доступна на чтение/запись пользователю, из под которого работает rtorrent. В любом случае, при первой загрузке ruTorrent произведет самодиагностику, и если что не так - он Вам скажет. По крайней мере, должен сказать. ;)

Настройка

Файлы конфигурации ruTorrent находятся в директории ruTorrent/conf. Основных файлов три:

  • config.php
  • access.ini
  • plugins.ini

Плагины могут иметь собственные файлы конфигурации, как правило, это файл conf.php в директории плагина.

config.php

Выглядит примерно так:


<?php
	// configuration parameters

	// for snoopy client
	@define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0', true);
	@define('HTTP_TIME_OUT', 30, true);	// in seconds
	@define('HTTP_USE_GZIP', true, true);
	$httpIP = null;				// IP string. Or null for any.

	@define('RPC_TIME_OUT', 5, true);	// in seconds

	@define('LOG_RPC_CALLS', false, true);
	@define('LOG_RPC_FAULTS', true, true);

	// for php	
	@define('PHP_USE_GZIP', false, true);
	@define('PHP_GZIP_LEVEL', 2, true);

	$schedule_rand = 10;			// rand for schedulers start, +0..X seconds

	$do_diagnostic = true;
	$log_file = '/tmp/errors.log';		// path to log file (comment or leave blank to disable logging)

	$saveUploadedTorrents = true;		// Save uploaded torrents to profile/torrents directory or not
	$overwriteUploadedTorrents = false;     // Overwrite existing uploaded torrents in profile/torrents directory or make unique name

	$topDirectory = '/';			// Upper available directory. Absolute path with trail slash.
	$forbidUserSettings = false;

	$scgi_port = 5000;
	$scgi_host = "127.0.0.1";

	// For web->rtorrent link through unix domain socket 
	// (scgi_local in rtorrent conf file), change variables 
	// above to something like this:
	//
	// $scgi_port = 0;
	// $scgi_host = "unix:///tmp/rpc.socket";

	$XMLRPCMountPoint = "/RPC2";		// DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!

	$pathToExternals = array(
		"php" 	=> '',			// Something like /usr/bin/php. If empty, will be found in PATH.
		"curl"	=> '',			// Something like /usr/bin/curl. If empty, will be found in PATH.
		"gzip"	=> '',			// Something like /usr/bin/gzip. If empty, will be found in PATH.
		"id"	=> '',			// Something like /usr/bin/id. If empty, will be found in PATH.
		"stat"	=> '',			// Something like /usr/bin/stat. If empty, will be found in PATH.
	);

	$localhosts = array( 			// list of local interfaces
		"127.0.0.1", 
		"localhost",
	);

	$profilePath = '../share';		// Path to user profiles
	$profileMask = 0777;			// Mask for files and directory creation in user profiles.
						// Both Webserver and rtorrent users must have read-write access to it.
						// For example, if Webserver and rtorrent users are in the same group then the value may be 0770.

	$tempDirectory = null;			// Temp directory. Absolute path with trail slash. If null, then autodetect will be used.

Связь с rtorrent

  • $scgi_host = "127.0.0.1";

SCGI хост. Должен соответствовать настройке в файле конфигурации rtorrent. Как правило, всегда 127.0.0.1. В случае использования для связи с rtorrent механизма unix domain socket данная переменная должна содержать что-то типа "unix:///tmp/rpc.socket". В теории возможно использование ruTorrent с rtorrent, находящимся на другом хосте, но на практике я такую конфигурацию не советую - большинство плагинов работать не будут.

  • $scgi_port = 5000;

SCGI порт. Должен соответствовать настройке в файле конфигурации rtorrent. В случае использоваия unix domain socket значение данной переменной должно быть 0.

  • $XMLRPCMountPoint = "/RPC2";

Точка монтирования XMLRPC. Внимание! Не нужно удалять либо комментировать данную строку даже если в Вашей системе не используется прямой доступ к точке монтирования (т.е., например, стоит плагин RPC).

Диагностика

  • $do_diagnostic = true;

Если данная переменная будет равна false, то при загрузке ruTorrent диагностика (проверка прав доступа и т.п.) производиться не будет. Что может обеспечить более быструю загрузку.

  • $log_file = '/tmp/errors.log';

Имя файла, в который будут записываться отладочные сообщения и сообщения об ошибках.

Прочее

  • $httpIP = null;

IP адрес, который будет использован ruTorrent для доступа к http и https ресурсам, например, к RSS фидам.

  • $forbidUserSettings = false;

Если true, то независимо от наличия/отсутствия внешней авторизации будет использоваться монопольный (однопользовательский) режим работы ruTorrent.

  • @define('PHP_USE_GZIP', false, true);

Данная константа определяет, будет ли отдаваемый контент фильтроваться через внешнюю программу сжатия (gzip). Если выставить ее в true (второй параметр), то все страницы, генерируемые php, размером более 2К будут сжиматься. Это

  1. Уменьшает трафик
  2. Увеличивает загрузку сервера
  3. Не имеет никакого смысла, если php уже использует какую-либо подсистему сжатия, например, если настройка php zlib.output_compression выставлена в on.
  • @define('PHP_GZIP_LEVEL', 2, true);

Уровень сжатия для gzip. Если PHP_USE_GZIP выставлена в false, никакого смысла не несет.

  • $saveUploadedTorrents = true;

Если true, то все .torrent файлы, добавляемые пользователем через ruTorrent, будут сохраняться в директории share/torrents (или share/users/USERNAME/torrents для многопользовательской конфигурации). Если false, то все .torrent файлы будут удаляться с диска непосредственно после передачи их rtorrent.

  • $overwriteUploadedTorrents = false;

Если true, то при сохранении уже существующего .torrent файла он будет перезаписан. В противном случае для файла будет сконструировано уникальное имя. Имеет смысл только если $saveUploadedTorrents выставлено в true.

  • $topDirectory = '/';

Директории выше данной не будут доступны пользователю ruTorrent.

  • Пути к внешним программам
$pathToExternals = array(
 "php"  => '', 
 "curl" => '',
 "gzip" => '',
 "id" => '', 

Элементы массива должны содержать полный путь к соответствующим программам. Если вместо пути указана пустая строка, то поиск внешней программы будет проводиться согласно переменной окружения PATH пользователей (веб-сервера или rtorrent, смотря кому в данный конкретный момент программа нужна).

  • $profilePath = '../share';

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

  • $profileMask = 0777;

Маска доступа для создаваемых пользовательских файлов и директорий. Пользователь веб-сервера и пользователь, под которым работает rtorrent должны иметь доступ на чтение/запись данных файлов. Как следствие - если, например, эти пользователи находятся в одной группе, то разумно изменить данный параметр на 0770.

  • $tempDirectory = null;

Директория, которая будет использована для создания временных файлов. Должна быть доступна на чтение/запись/выполнение как для веб-сервера, так и для rtorrent. По умолчанию (т.е. null) ruTorrent последовательно проверит значения

  1. upload_tmp_dir из php.ini
  2. значение, которое возвращает функция php sys_get_temp_dir
  3. /tmp

и выберет первую подходящую (т.е. существующую и доступную по записи) директорию из этого списка.

Порочие настройки в данном файле трогать категорически не рекомендуется.

access.ini

Файл предназначен для ограничения пользователя ruTorrent в правах. Представляет из себя обычный ini файл и выглядит так:

;; ruTorrent permissions.
;; By default all flags is assumed as "yes".

[settings]
showDownloadsPage = yes
showConnectionPage = yes
showBittorentPage = yes
showAdvancedPage = yes

[tabs]
showPluginsTab = yes

[statusbar]
canChangeULRate = yes
canChangeDLRate = yes

[dialogs]
canChangeTorrentProperties = yes

Здесь

  • showDownloadsPage - доступна ли пользователю вкладка "Закачки" в диалоге настроек rtorrent.
  • showConnectionPage - доступна ли пользователю вкладка "Соединение" в диалоге настроек rtorrent.
  • showBittorentPage - доступна ли пользователю вкладка "BitTorrent" в диалоге настроек rtorrent.
  • showAdvancedPage - доступна ли пользователю вкладка "Дополнительно" в диалоге настроек rtorrent.
  • showPluginsTab - доступна ли пользователю закладка "Плагины" на интерфейсе ruTorrent.
  • canChangeULRate - может ли пользователь менять ограничение на скорость отдачи (контекстное меню статус-бара).
  • canChangeDLRate - может ли пользователь менять ограничение на скорость закачки (контекстное меню статус-бара).
  • canChangeTorrentProperties - может ли пользователь менять свойства конкретной закачки.

plugins.ini

Файл предназначен для управления плагинами ruTorrent. Представляет из себя обычный ini файл и выглядит так:

;; Plugins' permissions.
;; If flag is not found in plugin section, corresponding flag from "default" section is used.
;; If flag is not found in "default" section, it is assumed to be "yes".
;;
;; For setting individual plugin permissions you must write something like that:
;;
;; [ratio]
;; enabled = yes			;; also may be "user-defined", in this case user can control plugin's state from UI
;; canChangeToolbar = yes
;; canChangeMenu = yes
;; canChangeOptions = no
;; canChangeTabs = yes
;; canChangeColumns = yes
;; canChangeStatusBar = yes
;; canChangeCategory = yes
;; canBeShutdowned = yes

[default]
enabled = user-defined
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes
canBeShutdowned = yes

Каждая секция в файле (за исключением секции default) соответствует конкретному плагину. Если секции с именем плагина нет, то информация будет браться из секции с именем default.

  • enabled - будет ли плагин вообще использоваться. Возможные значения - yes, no, user-defined. Последнее означает, что решение о загрузке/не загрузке плагина принимается пользователем и доступно с интерфейса ruTorrent (см. контекстное меню на закладке "Плагины").
  • canChangeToolbar - может ли плагин менять содержимое главного тулбара.
  • canChangeMenu - может ли плагин менять содержимое контекстного меню.
  • canChangeOptions - может ли плагин менять содержимое диалога настройки.
  • canChangeTabs - может ли плагин добавлять новые закладки на интерфейс.
  • canChangeColumns - может ли плагин изменять структуру отображаемых таблиц (например, списка закачек).
  • canChangeStatusBar - может ли плагин изменять статус-бар ruTorrent.
  • canChangeCategory - может ли плагин изменять панель категорий ruTorrent.
  • canBeShutdowned - доступна ли для данного плагина на интерфейсе команда "Выгрузить".

Пример:

[default]
enabled = yes
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes

[rpc]
enabled = no

[unpack]
canChangeOptions = no

В результате плагин RPC загружен вообще не будет, а в плагине Unpack пользователю будет недоступна настройка автоматический распаковки (которая находится в соотв. разделе диалога настроек).

Про аутентификацию

Как ранее уже упоминалось, ruTorrent не имеет собственной системы аутентификации. Защиту файлов следует организовывать средствами веб-сервера. Защищать нужно собственно корневую директорию ruTorrent и, если Вы не используете плагины RPC или HTTPRPC, точку монтирования XMLRPC (по умолчанию /RPC2). Аутентификация обоих частей должна иметь одинаковый realm, либо Вы можете поместить точку монтирования внутрь корневой директории ruTorrent и защищать только одну область. При наличии аутентификации Вы можете настроить ruTorrent на работу с несколькими пользователями.

Замечание: крайне желательно (но, строго говоря, не обязательно), чтобы каждому пользователю соответствовал свой экземпляр rtorrent. В противном случае ряд плагинов (например, Ratio) будет работать некорректно.

Многопользовательская и однопользовательская установка

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

  • Все файлы данных пользователя ruTorrent будут размещены в директории share/settings.
  • Все настройки ruTorrent будут считываться из директории ruTorrent/conf.

В противном случае, Вы автоматически имеете многопользовательский вариант установки. При этом

  • Все файлы данных конкретного пользователя будут автоматически размещены в директории share/users/USERNAME/settings, где USERNAME - имя, с которым пользователь авторизовался.
  • Существует возможность настроить ruTorrent для каждого пользователя индивидуально.

Для этого следует скопировать требуемые файлы конфигурации ruTorrent в директорию conf/users/USERNAME (в отличие от случая с данными пользователя эту директорию нужно создать). Например, если Вы имеете трех пользователей - tom, dick и harry, Вы должны сделать что-то вроде этого:

mkdir /var/www/ruTorrent/conf/users/tom
mkdir /var/www/ruTorrent/conf/users/dick
mkdir /var/www/ruTorrent/conf/users/harry
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/tom/
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/dick/
cp /var/www/ruTorrent/conf/* /var/www/ruTorrent/conf/users/harry/

После чего отредактировать соответствующим образом файлы config.php, access.ini и plugins.ini в директории пользователя.

Замечание 1: Все три файла копировать вовсе не обязательно.

Замечание 2: ruTorrent все равно будет загружать файл conf/config.php. А уже после него - файл конфигурации пользователя. Таким образом, файл конфигурации пользователя может содержать только отличия от основного файла. К access.ini и plugins.ini данное замечание не относится.

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

Внешние ссылки

⚠️ **GitHub.com Fallback** ⚠️