Pull to refresh

Ubuntu Server на домашнем компьютере. Раздадим интернет, скачаем torrent

Reading time4 min
Views50K
В последнее время все больше и больше входят в моду домашние сервера, используемые для хранения контента, закачки торрентов, да и просто для раздачи интернета. Не так давно, воодушевившись обзорами домашних серверов, из подручных средств был собран домашний сервер:

Жесткий диск: 500Gb
Материнская плата на 478 сокете
Процессор: Pentium 4 — 2.6Ghz HT
Все это в стареньком корпусе…
image
Итак, что мы имеем:
•Домашний сервер
•Городскую локальную сеть, выдающую интернет посредством VPN соединения

Задачи:


Использовать сервер как средство хранения контента
Возможность скачки торрентов
Раздача интернета всей семье посредством VPN



Настройка VPN подключения.



Первое, с чем я столкнулся после сборки сервера, был выбор операционной системы. После долгих выборов глаз пал на Ubuntu Server.
После успешной установки системы, первым делом был установлен SSH сервер.
Далее, все остальные действия проводились посредством Putty
Итак, для начала, подымем VPN соединение с интернетом на сервере.
Для начала нам нужно установить пакет pptp-linux, который к моему удивлению, не был найден на установочном диске.
Скачиваем его вручную, и инсталлируем его на сервере.
$ sudo dpkg -i pptp-linux_1.7.2-1_i386.deb

Далее, правим файл /etc/ppp/chap-secrets и задаем в нем логин (LOGIN), пароль(PASSWORD), и название подключения(PROVIDER_NAME)

LOGIN PROVIDER_NAME PASSWORD *

Далее, создаем файл /etc/ppp/peers/PROVIDER_NAME и вписываем в него, следующие строки:
remotename PROVIDER_NAME
pty "pptp --loglevel 1 PROVIDER_VPN_ADRESS --nolaunchpppd"
name LOGIN
noauth
nodetach
lock
defaultroute
replacedefaultroute
noccp


Где PROVIDER_VPN_ADRESS — адрес VPN сервера провайдера, LOGIN — ваш логин
Итак, давайте теперь протестируем наше VPN соединение,

$sudo pon PROVIDER_NAME

Если все прошло удачно, вы увидите полученные IP адреса, а так же можете проверить доступность интернета пингом, например, Яндекса :)

Если все прошло удачно, добавляем следующую строчку в файл /etc/rc.local.

pon PROVIDER_NAME

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

Установка VPN сервера для раздачи интернета.



После успешного подключения интернета нужно установить VPN сервер, и обеспечить подключение к нему членам семьи :)
В качестве VPN сервера был выбран PPTP-сервер.
Итак, начнем. Для начала установим PPTP сервер.

$sudo apt-get install ppp pptpd

Далее приступаем к настройке. Первым делом открываем файл /etc/pptpd.conf и дописываем в конец следующие строки:
# IP-адрес сервера в локальной сети
localip 10.10.3.231

# Диапазон адресов для клиентов PPTP-сервера
remoteip 172.22.1.1-5


Следующим шагом дописываем в файл /etc/ppp/pptpd-options следующие строчки:
# требуем авторизацию у клиентов
auth

# Используем шифрование
require-mppe


И теперь, самое главное, редактируем файл /etc/ppp/chap-secrets и дописываем строки вида:
LOGIN pptpd PASSWORD "172.22.1.1"
LOGIN2 pptpd PASSWORD2 "172.22.1.2"


Примечание: Если пользователь должен динамически получать IP-адрес из диапазона remoteip в pptpd.conf, строчка должна выглядеть так:

LOGIN pptpd PASSWORD "*"

Далее, добавляем несколько команд в /etc/rc.local:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward


После этого, перезагружаем сервер:

$sudo reboot

Настройка клиентских машин проста. Создаем VPN соединения, где указываем IP сервера и логин/пароль, прописанный в /etc/ppp/chap-secrets.

Установка rTorrent и wTorrent

Первым делом, установим необходимые нам пакеты:
$sudo apt-get install apache2 php5 php5-xmlrpc rtorrent php5-sqlite sqlite libxmlrpc-c3 libapache2-mod-scgi screen subversion

Далее исправим конфиг апача,

$sudo nano /etc/apache2/sites-available/default

Перед строкой добавляем 2 строчки:

LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000


Перезапускаем apache:

$sudo /etc/init.d/apache2 restart

Далее создадим нового пользователя «torrent». Это пользователь, от имени которого будет автоматически запускаться демон RTorrent.

sudo useradd torrent -p password -d /home/torrent

Далее, правим конфиг rTorrent

$sudo nano /home/torrent/.rtorrent.rc

Пример моего конфига:

port_range = 6925-6925
directory = /home/torrent/torrents/download/
session = /home/torrent/torrents/session/
schedule = watch_directory,5,5,load_start=/home/torrent/torrents/watch/*.torrent
scgi_port = 127.0.0.1:5000
hash_read_ahead = 32
hash_max_tries = 1
hash_interval = 1


Более подробную справку по параметрам rTorrent, смотрите тут

Далее, скачиваем скрипт запуска

$sudo wget libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

Теперь немного поправим конфиг

$sudo nano /etc/init.d/rtorrent

В файле ищем строку user=«user» и меняем user на torrent в моём случае (здесь это имя пользователя, от которого будет запускаться RTorrent, то что было в команде useradd)

Последний штрих конфигурирования rTorrent — добавление скрипта в автозапуск:

$sudo chmod +x /etc/init.d/rtorrent
$sudo update-rc.d rtorrent defaults


Теперь стартуем наш торрент:

$sudo /etc/init.d/rtorrent start

Далее осталось дело за малым — установить WTorrent:

$ cd /var/www
$ sudo svn co svn://wtorrent-project.org/repos/trunk/wtorrent


Теперь в браузере заходим ip-компьютера/wtorrent/install.php и устанавливаем скрипт.
Пробуем запустить скрипт в браузере. Первое с чем я столкнулся, это ошибка добавления торрента, через форму добавления.
Происходила ошибка — не правильный торрент файл. Решение проблемы, расписано тут

Установка FTP сервера



В качестве ftp сервера был выбран vsftpd.

$sudo apt-get install vsftpd

Редактируем конфигурацию:

$sudo nano /etc/vsftpd.conf

...
write_enable=YES
anonymous_enable=NO
local_enable=YES
...


Теперь перезапускаем vsftpd:

/etc/init.d/vsftpd

Теперь последний штрих в нашей работе, перезагружаем компьютер.

$sudo reboot

Заключение



Я надеюсь, что данная статья пригодится читателям хабра, собравшимся собрать свой сервер в домашних условиях :)
Спасибо за внимание. Удачи!

Статья была опубликована по просьбе Tanto, спасибо за инвайт хабраюзеру AusTiN! у которого пока, к сожалению, нет аккаунта на хабре :(
Tags:
Hubs:
+30
Comments199

Articles