Установка и настройка домашнего сервера на Debian

Когда домашний «зоопарк» электронных девайсов разрастается от простого десктопа до ноутбука, десктопа, планшета, смартфона, телевизора с поддержкой SmartTV и т.д., появляется желание не просто объединить их в одну локальную сеть, а и иметь доступ к необходимым файлам с любого устройства, плюс, возможность администрировать каждое (ну почти) устройство сети, находясь в любой точке мира. В таком случае в сети нужно выделить главный ПК, который и будет заведовать всеми остальными. О том, как установить и настроить домашний сервер на Debian, вы узнаете из этого материала.

Intro

Зачастую, подобные домашние сервера собираются из устаревшего железа, которое либо стало не нужным после апгрейда основного ПК, либо уже давно просто пылится на полке. Да и в такой области применения не нужны разнообразные серверные навороты вроде контроллера домена, Active Directory, управления лесом и т.д. А потому сразу же, как операционная система, отпадает Windows Server ввиду прожорливости и перегруженности (как для нас) разнообразными функциями. И остается только один вариант – Debian. Для тех, кто еще не знаком с миром Linux, загляните в Википедию (https://ru.wikipedia.org/wiki/Linux), ознакомьтесь с историей, а также базовыми принципами работы в linux-системах.

Почему не Ubuntu Server, спросите вы? А потому что, первое – Debian это синоним слова «стабильность», и второе – в репозиториях Debian лежит более 43000 пакетов ПО. Из этих двух причин появляется третья – гиперпопулярность Debian-а, огромное комьюнити и неисчерпаемое количество информации по ОС.

Установка

Идем на https://www.debian.org/, и на странице «Где взять Debian» выбираем, что хотим скачать: маленький установочный образ netinst (для установки по сети), или же полные образы для CD или DVD. В первом случае получаем iso размером примерно в 300 МБ, во втором же – все торренты суммарно потянут на 12.5 ГБ. Я выбрал первый.

С помощью Win32DiskImager (http://sourceforge.net/projects/win32diskimager/) или другой аналогичной утилиты для записи образов на USB-диски, закидываем Debian на флешку (в той же Win32DiskImager это делается очень просто – выбираем диск, месторасположение образа, жмем «Write», соглашаемся на запись и ждем).

Для верности съемный диск стоит предварительно отформатировать в FAT32, потому что некоторые старые материнские платы не умеют загружаться с NTFS-флешек. 

Небольшой совет: что бы не перетыкать флешку по несколько раз из одного ПК в другой, для проверки корректности записи образа можно воспользоваться улиткой Xboot (http://www.pendrivelinux.com/xboot-multiboot-iso-usb-creator/), в которую встроен эмулятор QEMU.

Итак, вставляем «прожжённую» флешку в будущий сервер и включаем его. Но предварительно зайдем в BIOS, выставим порядок загрузки, переместив съемные диски на первое место. Сохраняем изменения, перезагружаемся. В появившемся меню жмем «Install».

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

Следующим пунктом будет ввод пароля для суперпользователя (root). Из соображений безопасности стоит придумать достаточно сложный пароль (kv_by_forever_2015, например). Подтверждаем, введя его еще раз. 

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

Теперь нам предложат разметить диск и сконфигурировать менеджер логических томов LVM. Поскольку у нас не серьезный сервер крупной корпорации, выберем автоматическую разметку с настройкой LVM.

Далее выбираем диск для разметки (скришоты делались в виртуальной машине с одним жестким диском).

В следующем окне предстоит выбор: сложить все фалы в один раздел, установить систему в /boot, а пользовательские файлы в /home, или то же, но еще с /var и /tmp. Выберем второе, так как пока что var и tmp нам не нужны, а в первом случае, при возможной переустановке системы, мы потеряем все свои файлы. А если отвести под наши нужды отдельный раздел home, то при переустановке или установке любого другого дистрибутива, достаточно будет просто подмонтировать /home, и все файлы снова будут доступны. Соглашаемся на внесение изменений,  смотрим, что и как будет размечено, соглашаемся, и еще раз соглашаемся.

Пока устанавливается базовая система, приведу конфигурацию моего тестового сервера:

«Динозавр классический» получился .

Базовая система установлена, нам предлагают настроить менеджер пакетов apt. Указываем страну, в которой размещено зеркало, с которого мы хотим качать пакеты, собственно само зеркало, и, при необходимости, вводим адрес используемого прокси-сервера. Ждем пока закачается еще одна порция пакетов.

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

А вот теперь нам заманчиво предлагают выбрать, какой дополнительный софт необходимо установить. Но, поскольку у нас сервер, то снимаем звездочку с окружения рабочего стола, ну и заодно с сервера печати (потом все необходимое доустановим уже в системе), оставив только стандартные утилиты.

Когда притянутся и настроятся стандартные утилиты, соглашаемся на установку загрузчика , и указываем, куда его ставить . Еще полминуты настроек и, как только увидим сообщение об удачном завершении установки, вынимаем флешку и жмем «Продолжить». Система установлена.

Первый вход

После перезагрузки первое, что мы увидим –  это менеджер загрузки GRUB.

Первый пункт меню «Debian GNU/Linux» загрузится автоматически через 2 секунды, потому просто ждем. И видим приветствие. Входим, введя свой логин и, по запросу, пароль. Далее делать скриншоты бессмысленно, потому я ограничусь вводом и выводом терминала.

Sudo

Что бы иметь возможность запускать программы от имени администратора, необходимо установить утилиту под названием sudo. Выполняем в терминале:

su

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

apt-get install sudo

Когда sudo установится, добавим нашего пользователя в группу sudo:

adduser username sudo

Перезагружаемся:

reboot

Перед дальнейшей настройкой примем за данность, что в интернет все наши устройства ходят через роутер. В моем случае это Huawei HG532e.

Для удобства в дальнейшем, присвоим MAC-адресам наших устройств статические ip-адреса. MAC-адрес можно узнать в свойствах сетевого адаптера в Windows, или выполнив (в Debian):

sudo ifconfig

MAC-адрес будет отбражен в поле HWaddr.

SSH

По идее, сервер должен тихо и неприметно выполнять свою работу, стоя, например, в кладовке или подвале (если частный дом). Но сервером все так же нужно управлять. Лучший и общепринятый способ – это терминал через сетевой протокол SSH. Для этого нам понадобится SSH-сервер. Выполняем:

sudo apt-get install ssh

И соглашаемся на установку. Теперь надо правильно настроить сервер SSH. Открываем файл настроек во встроенном редакторе nano:

sudo nano /etc/ssh/sshd_config

И начинаем с самого начала. Поскольку планируется, что мы сможем получить доступ к системе из любого места на планете, сразу сменим стандартный 22-й порт, к примеру, на 2020:

Port 2020

Поскольку на пост-советском пространстве с IPv6 все еще плохо, ограничим подключения только протоколом IPv4. Сразу после порта вставляем новую строку:

AddressFamily inet

Возвращаемся в начало. Поскольку мы уже настроили sudo, запретим вход через SSH под root-ом. Правим строку:

PermitRootLogin no

Идем дальше. Поскольку мы не будем использовать графическую среду, отключим форвардинг сервера окон X11 через ssh:

X11Forwarding no

По умолчанию, аутентификация по паре логин/пароль отключена, и это правильное решение. Гораздо безопаснее входить по RSA-ключу. Для этого сначала на клиентских машинах нужно сгенерировать по паре ключей (приватный и публичный), а потом скопировать публичный на сервер. Для Windows существует просто отличный клиент для работы с SSH под названием PuTTY. Скачиваем zip-файл (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) со всеми необходимыми утилитами сразу, распаковываем и запускаем PuTTYgen. Жмем «Generate», и хаотично «мотыляем» мышкой по окну, пока процесс генерации не закончится. После, жмем «Save public key» и «Save private key», и сохраняем куда-нибудь.

Однако, чтобы скопировать свой публичный ключ на сервер, войти один раз по логину/паролю все же придется. Для этого удаляем # перед строкой:

PasswordAuthentication yes

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

AuthorizedKeysFile .ssh/authorized_keys

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

Запускаем PuTTY, в поле «Host» пишем ip-адрес сервера, указываем порт, в поле «Saved Sessions» вводим имя подключения, жмем «Save» и «Open». Соглашаемся с предупреждением, вводим по предложению логин и пароль. 

Теперь надо завести файл с публичными ключами. Создаем в каталоге профиля папку .ssh:

mkdir .ssh

Переходим в нее, потом на нашем ПК открываем блокнотом файл с публичным ключом и копируем собственно сам ключ (строки между «comment…» и «----end----»), создаем файл authorized_keys и вписываем в него (последовательность команд сохранена):

cd .ssh

nano authorized_keys

ssh-rsa AAAAA…..(key)…..== username@server

Примечание: когда вставите в окно PuTTY с открытым файлом authorized_keys, ключ (просто жмите ПКМ) нужно удалить переходы на новую строку (чтобы весь ключ был в одну строчку).

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

Возвращаемся в окно новой сессии PuTTY, выбираем сохраненную сессию, нажимаем «Load», слева в панели с деревом настроек выбираем «SSH», а в нем подпункт «Auth». Жмем «Browse», указываем файл с приватным ключом (с расширением .ppk), возвращаемся в сайдбаре в пункт «Session», клацаем «Save» и «Open». Вводим логин, если все хорошо, нас авторизуют. Снова открываем /etc/ssh/sshd_config и отключаем вход по паролю:

sudo nano /etc/ssh/sshd_config

Правим:

PasswordAuthentication no

Жмем Ctrl+O, Enter и Ctrl+X. Перезапускаем сервис ssh:

sudo systemctl restart ssh

С ssh разобрались, едем дальше.

Samba

Самое первое, что нам нужно – это возможность расшаривания файлов в нашей локальной сети. Для этой цели идеально подходит протокол Samba. В репозиториях восьмого Debian-а уже лежит новая Samba 4, потому просто устанавливаем (соглашаемся на установку всех дополнительных пакетов):

sudo apt-get install samba

Теперь настраиваем Samba. Открываем файл конфигурации:

sudo nano /etc/samba/smb.conf

Итак, значение параметра workgroup определяет название рабочей группы, в которую входит наш сервер. Имя должно быть одинаковое на ВСЕХ ПК нашей сети. Я оставил WORKGROUP. Поскольку наш «парк» состоит и из windows-ПК, нужно поднять WINS-сервер для того, что бы все компьютеры нормально работали через NetBIOS-имена (папка Сеть в Windows 7/8/10), а не только через «голые» ip-адреса. Для этого раскомментируем и поправим строку:

wins support = yes

И сразу под ней укажем приоритет нашего сервера (99 будет достаточно, максимально 255):

os level = 99

Далее перемещаемся почти в самый конец конфига, в раздел «Share Definitions». Именно тут нужно указать все папки и принтеры, которыми мы хотим поделиться в локальной сети. А потому, например, после подсекции [printers], вписываем примерно такие строки:

[share]

comment = public folder

browseable = yes

path = /home/username/share

guest ok = yes

read only = no

create mask = 0777

Параметров общих ресурсов в Samba на самом деле гораздо больше, потому и на этих я не буду детально останавливаться, все это отлично описано в документации (https://www.samba.org/samba/docs/). Как обычно, сохраняем, выходим. Теперь главное не забыть создать ту папку, которую мы прописали в конфигурационном файле. А потому:

cd ~

mkdir share

chmod 0777 share

Стоит сказать пару слов касательно поддержки Samba в Windows 7/8/8.1 и, возможно, 10. Их тоже можно сделать серверами Samba, выполнив пару скриптов в PowerShell-е. Но нам нужно активировать только клиент для Samba. Запускаем командную строку от имени администратора и выполняем по очереди:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi

sc.exe config mrxsmb20 start= auto

Без этого вы с большой долей вероятности получите ошибку 0x80070035. Также может потребоваться выход всех ПК из Домашней группы Windows. Вообще сеть в Windows 8 это повод для отдельного материала, потому просто загляните сюда https://support.microsoft.com/en-us/kb/2696547. После всех манипуляций, не забудьте перезапустить Samba:

sudo systemctl restart smbd

CUPS

Следующей областью применения для домашнего сервера, которая приходит в голову – это сервер печати. Для этого установим CUPS:

sudo apt-get install cups

Ждем, когда все притянется из сети. По умолчанию веб-интерфейс CUPS доступен по адресу http://localhost:631. Но у нас не localhost, потому придется подправить файлик с конфигом. Открываем:

sudo nano /etc/cups/cupsd.conf

Поскольку в роутере мы задали привязку MAC-адресов к ip-адресам почти в самом начале, там, где Listen-ы, вписываем

Listen ip_address_of_server:631

Есть возможность просто включить прослушку 631-го порта со всех сетевых интерфейсов, но если их несколько, то так можно указать с какого конкретно. Далее в секциях <Location />, <Location /admin>, <Location /admin/conf>, которые хранят права доступа к серверу, административной части и к файлам конфигурации соответственно, пишем, после строки Order:

Allow @LOCAL

Тем самым разрешив доступ ко всем трем пунктам только из нашей локальной сети. 

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

sudo systemctl restart cups

Теперь открываем браузер, переходим по адресу https://server_ip:631, «Администрирование», «добавить принтер». По запросу вводим логин root и пароль суперпользователя (это конечно не хорошо, что от имени рута, но поскольку заглянем мы сюда всего пару раз, это не стоит того времени, которое мы потратим на ковыряние в конфиге  попытках сделать нашего пользователя администратором), и следуем инструкции, не забыв поставить галочку «общий доступ». После этого на всякий случай перезапускаем:

sudo systemctl restart cups

Там же, в админке, можно напечатать тестовую страницу. Теперь общей папке на сервере должен появиться только-что подключенный принтер. Можно присоединять его к Windows и работать.

LAMP

LAMP, он же Linux Apache MySQL/MariaDB Perl/PHP/Python – это одна из вариаций комплекта программного обеспечения для организации собственного сервера веб (https://ru.wikipedia.org/wiki/LAMP). Состоит из собственно из веб-сервера Apache, системы управления базами данных MySQL или MariaDB, интерпретатора PHP, Perl или Python-а. Понадобится эта связка не всем желающим построить свой первый сервер, а только тем, кто захочет поднять на «своем железе» собственный сайт (или веб-интерфейс для управления системой «умного» дома). Я же предлагаю установить LAMP с последующим «поднятием» веб-панели управления сервером Webmin (что бы хоть чуть-чуть графического интерфейса для поклонников Windows  ). Итак, первым делом тянем из репозитория Apache:

sudo apt-get install apache2

И сразу из любого браузера набираем ip-адрес нашего сервера (локальный). Если видим тестовую страницу – все хорошо. Если нет – смотрим лог установки на предмет ошибок. Настраивать конфигурационные файлы будем потом, сейчас же установим следующий компонент – MySQL:

sudo apt-get install mysql-server mysql-client

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

sudo systemctl mysql status

В выводе должна быть зеленая строка «Active» сообщающая нам о том, что демон MySQL работает. Пришла очередь интерпретатора языка PHP:

sudo apt-get install php5

По умолчанию, файлы сайтов, которыми управляет Apache, лежат в директории /var/www/html. А потому создадим там тестовый php-файл и выведем с его помощью сервисную информацию об нашей установке php:

sudo nano /var/www/html/test.php

<?php

phpinfo();

?>

И открываем в браузере адрес http://server-ip/test.php. Если перед нами длинная страница с заголовком типа «PHP Version 5.6.9-0+deb8u1» и множеством разнообразной информации, все работает. 

Для администрирования СУБД MySQL создан прекрасный веб-интерфейс phpMyAdmin. А потому давайте его тоже установим:

sudo apt-get install phpmyadmin

По запросу, выбираем сервер apache для автоматической настройки. Далее нам придется настроить phpMyAdmin. Это можно сделать как правкой конфигурационных файлов, так и через псевдографический интерфейс. Соглашаемся на последний вариант, вводим пароль суперпользователя MySQL, который мы использовали во время установки СУБД. Задаем пароль для регистрации phpMyAdmin на сервере баз данных, и когда конфигурирование закончится, переходим по ссылке http://server-ip/phpmyadmin и видим окно входа phpMyAdmin. Войти можно по логину root и соответствующему паролю. Однако, настройка phpMyAdmin и сервера MySQL выходит за рамки этой статьи, так что перейдем к одной небольшой доводке apache.

В целях обеспечения безопасности и хоть минимальной защиты от DOS-атак, рекомендуется перебросить входящий 80-й порт на 8080-й. В настройках роутера это делается в пункте «Port Mapping», а в apache, в свою очередь – в файле ports.conf:

sudo nano /etc/apache2/ports.conf

Переправляем строчку на

Listen 8080

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

sudo systemctl restart apache2

Если вы занимаетесь веб-разработкой на другом ПК, можно копировать файлы на сервер с помощью Samba. Для этого расшарим /var/www/html, но с авторизацией по логину/паролю. Для этого создадим группу пользователей smbgroup и сразу занесем себя туда:

sudo groupadd smbgroup

sudo usermod –a –G smbgroup username

Теперь нужно завести учетную запись пользователя Samba, которому мы предоставим право оперирования файлами внутри /var/www/html:

sudo  smbpasswd –a username

Вводим дважды пароль и устанавливаем владельца и права на /var/www/html:

sudo chown username:smbgroup -R /var/www/html

Небольшая ремарка: если вы планируете предоставить доступ к каталогу нескольким пользователям, права необходимо сменить на 0775 и каждого отдельного юзера добавить в группу smbgroup, а также «включить» через smbpasswd. Плюс, каждая директория должна иметь права 0755 (или 0775), а файлы – 0644. Относительно файлом, права могут быть и 0755, но 0644 безопаснее. 

Добавим ресурс в smb.conf:

Sudo nano /etc/samba/smb.conf

[mysite]

        comment = my site

        valid users = username

#что бы разрешить сразу целую группу, замените на valid users = @smbgroup

        browseable = yes

        path = /var/www/html

        guest ok = no

        read only = no

И перезапустим Samba:

sudo systemctl restart smbd

Теперь в пункте «Сеть» Windows, на нашем сервере доступна папка mysite. Осталось только ввести логин и пароль.

Webmin

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

Устанавливаем:

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.760_all.deb

Когда скачается, распаковываем загруженный пакет:

sudo dpkg --install webmin_1.760_all.deb

Скорее всего, apt-get сообщит нам об конфликте в зависимостях. А потому предоставим ему свободу действий:

sudo apt-get –f install

Ключ –f заставит apt-get найти решение конфликта. Вообще, нужно обязательно смотреть, что он предлагает, но в этом случае просто соглашаемся (проверено дважды). Когда все установится, открываем в браузере адрес https://server_ip:10000. По приглашению логинимся, и, если у вас Firefox, создаем исключения для нашего сертификата SSL, и видим перед собой меню Webmin-а и общую информацию по серверу. Для того, чтобы иметь доступ извне, на роутере пробрасываем 10000-й порт. 

FTP

В определенных ситуациях может понадобиться загрузить (или наоборот, скачать) файл на наш сервер. Для таких целей нет лучшего решения, чем протокол FTP. В нашем случае мы установим его реализацию в виде сервера vsftpd (very secure FTP daemon):

sudo apt-get install vsftpd

Все настройки vsftpd лежат в файле /etc/vsftpd.conf:

sudo nano /etc/vsftpd.conf

Итак, в зависимости от того, хотите ли вы, что бы к вашему FTP-серверу можно было подключиться анонимно, мы либо оставляем строку anonymous_enable, либо переправляем на 

anonymous_enable=yes

Я оставил запрет. Далее, оставляем значение yes у параметра local_enable, что бы мы могли логиниться от имени локальных пользователей, и снимаем комментарий с опции write_enable, что бы иметь возможность «писать» на сервер, а также с chroot_local_user, что бы пользователи не могли ходить дальше своей домашней директории. Также, для того, что бы последняя опция работала корректно, сразу после нее вставляем строчку:

allow_writeable_chroot=YES

Таким образом, пользователь и выше /home/username не выйдет, и писать в нее может. В принципе, параметров конфигурации vsftpd очень много, и никто не запрещает установить chroot-ом, например, /var/www/uploads.

На данном этапе мы уже можем оперировать файлами по FTP (с помощью FileZilla, например). Но если понадобиться дать доступ стороннему человеку, заведем на всякий случай пользователя guest:

sudo adduser guest

После ответов на вопросы создадим группу ftpgroup и внесем в нее guest-а:

sudo addgroup ftpgroup

sudo usermod –G ftpgroup guest

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

ftpd_banner="This is yet another FTP server"

idle_session_timeout=600

data_connection_timeout=120

dirmessage_enable=YES

Перезапустим демон:

sudo systemctl restart vsftpd

Можно подключаться. Файлы, которые загрузит guest, будут лежать в /home/guest.

На этом минимальная настройка ftp окончена, более детальную можете найти в сети. Не забудьте пробросить 21 и 20-й порты на роутере.

rTorrent

По идее, поднимая домашний сервер, мы принимаем за должное то, что он будет работать круглосуточно (что, в случае, если в качестве железа выступает Raspberry Pi, вообще беспроблемно). А потому, что бы он не простаивал ночью, мы заставим его качать торренты. Самый функциональный торрент-клиент для Linux – это rTorrent. К тому же, он консольный. И третье – для него написано несколько отличных веб-интерфейсов. Установим его:

sudo apt-get install rtorrent

Свою конфигурацию rTorrent ищет по адресу ~/.rtorrent.rc. Создадим и заполним этот файл:

cd

nano .rtorrent.rc

#ограничение скорости закачки

download_rate = 0

#... и отдачи

upload_rate = 0

#разрить обмен пирами

peer_exchange = yes

#минимум ..

min_peers = 1

#... и максимум пиров

max_peers = 1000

#разрешаем использовать udp

use_udp_trackers = yes

#указываем предпочтительным шифрованный протокол

encryption = allow_incoming,enable_retry,prefer_plaintext

#отключаем случайный порт

port_random = no

#и устанавливаем конкретный диапазон

port_range = 49528-49528

#режим DHT

dht = auto

#порт DHT

dht_port = 6881

#разрешаем обмен пирами

peer_exchange = yes

#необязательный параметр, еще раз укажем, где rtorrent слушает веб-интерфейс

scgi_port = 127.0.0.1:5000

#куда будут сохранятся скачанные файлы

directory = /home/username/torrents

#и где будет лежать сессия

session = /home/username/torrents/.sessions

#сохраняем сессию

session_save = yes

#проверяем хэш после окончания закачки

check_hash = yes

#и самая классная опция – устанавливаем планировщик, который проверяет #директорию каждые 5 секунд, и если там лежит торрент – ставит его на закачку

schedule = watch_directory_1,5,5,"load_start=/home/username/torrents/*.torrent,d.set_directory=/home/username/torrents"

#чистим удаленные закачки

schedule = tied_directory,1,30,start_tied=

schedule = untied_directory,1,30,close_untied=

#останавливаем закачки, если на диске меньше 100Мб

schedule = low_diskspace,5,60,close_low_diskspace=100M

Теперь нужно прицепить к rTorrent веб-интерфейс. Для начала добавим к Apache модуль scgi и утилиту screen, что бы rTorrent висел в фоне:

sudo apt-get install libapache2-mod-scgi screen

Открываем apache2.conf и дописываем:

sudo nano /etc/apache2/apache2.conf

SCGIMount /RPC2 127.0.0.1:5000

Перезапускаемся и активируем модуль:

sudo a2enmod scgi

sudo systemctl restart apache2

Отличный веб-интерфейс ruTorrent, плюс, он поддерживает плагины. Его и установим:

sudo apt-get install subversion

cd /var/www/

sudo svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent

sudo chown -R www-data:www-data ./rutorrent/

Теперь ruTorrent доступен по адресу http://server-ip/rutorrent. Им уже можно пользоваться, только не забудьте пробросить порты, которые мы прописали в конфигурации. По поводу настройки rTorrent отлично написано в ArchWiki https://wiki.archlinux.org/index.php/RTorrent_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29. Что бы мы могли бросать торрент-файлы на автоматическую закачку в /home/username/torrents, поправим доступ к домашней директории в Samba:

sudo nano /etc/samba/smb.conf

В разделе Share Definitions, у ресурса Homes ставим read only = no. Перезапускаем самбу. Готово.

Резервное копирование

К сожалению, на этапе резервного копирования у меня произошел небольшой казус. Как система для бекапа была выбрана Bacula. Для домашнего использования она несколько избыточна, но тем не менее, настроить ее и забекапить как Windows так и Linux-пк мне удалось. Но вот восстановиться – только на линукс. На windows файлы упорно не возвращаются. А держать Bacula ради одной системы – это как из пушки по воробьям. В результате усилия трех дней пропали зря. Потому я не придумал ничего лучше, чем сделать на сервере папку backup:

sudo mkdir /var/backup

sudo chown username:smbgroup /var/backup

и добавить ее в список ресурсов Samba с доступом по паролю. В таком случае можно воспользоваться любой утилитой для бекапа из-под Windows (хоть стандартной Архивацией), а на linux-системе сделать скрипт, который rsync-ом копирует файлы на сервер, и запускать при помощи cron. В плюсы данного решения также можно занести то, что Bacula не умеет (либо я не дочитал документацию) делать бекап при старте клиента, а только по расписанию. Плюс, бакула хранит резервные копии в томах собственного формата, что для новичков будет немного сбивающим с толку. 

Outro

Материал получился огромным, пора уже заканчивать. Итак, у нас получился небольшой веб- и файловый сервер с разнообразными плюшками вроде торрентокачалки, веб-панели управления и т.д. Он не претендует на роль идеально настроенного в плане как безопасности, так и балансировки нагрузки, все это вы можете улучшить, следуя мануалам, которых в интернете просто бесчисленное множество. 

Как вариант последующего развития сервера, на него можно перенести с роутера функцию DHCP и NAT. Также установить прокси-сервер и каждый день с помощью cron в его исключения вносить обновленные списки AdBlock, например, что избавит от необходимости ставить его на все устройства, что актуально для Android- и iOS-девайсов. Возможно, почтовый сервер. А если перенести сервер на какой-либо высокопроизводительный аналог Raspberry Pi, типа Cubieboard, то его можно будет подключить к телевизору через HDMI, попутно установив медиацентр, вроде XBMC. 

Андрей Земский

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Просматривал и вспоминал, как всё это ставил. Работало. А потом всё похерил. :)

Просматривал и вспоминал, как всё это ставил. Работало. А потом всё похерил. :)

Ностальгия захлестнула)
Аватар пользователя mike

Ностальгия захлестнула)

Есть немного.

Аватар пользователя Al

Спасибо за труд! В очередной раз убедился, что, выбрав Windows,  сделал правильный выбор. 

Аватар пользователя mike

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

Аватар пользователя Al

Вот не надо этих сказок! Так может было раньше, а сейчас современный почтовик и прокси с периметром требуют не меньше ресурсов, чем виндовый сервер (кстати, в итоге не так уж и много). Да, возможно, линь будет запускаться на более слабом железе. Но комфортно и производительно работать - уже давно нет. Проверено лично. А уж сопровождение... Ну дальше вы знаете. ))

Аватар пользователя mike

Ну не буду спорить. Если доведётся еще раз для себя  сервер мастерить -- он будет линуксным. Так как прозрачнее, что ли.