Домашний медиа-сервер на основе Ubuntu Server 12.04 LTS

в 21:25, , рубрики: Настольные компьютеры

Домашний медиа-сервер на основе Ubuntu Server 12.04 LTSДомашний медиа сервер на основе Ubuntu Server 12.04 LTSПривет! В ходе обсуждения одной статьи про «идеальную» домашнюю сеть, возник спор, что лучше, аппаратный NAS или мини-компьютер с Linux дистрибутивом. Автор предлагал использовать аппаратный NAS, т. к. якобы он проще в администрировании, не требует знаний Linux, да и вообще NAS тихий. Но при этом, для просмотра на DLNA-телевизоре видео, который он не поддерживает, предлагал включать ноутбук с транскодирующим DLNA. Меня это, мягко говоря, удивило, т. к. в идеальной сети такого быть не должно. Поэтому хочу представить своё видение одного из ключевых компонентов домашней сети — централизованного хранилища данных, и основано оно будет на мини-ПК с ОС Ubuntu Server.

Что нам нужно?

В первую очередь от NAS требуется, конечно, надёжное хранение данных и удобный доступ ним. В первую очередь для надёжности необходим RAID, потому как потерять весь домашний медиа-архив из-за отказавшего жёсткого диска как минимум глупо. Для доступа к данным необходимо настроить FTP и Samba-доступ. Конечно потребности у каждого свои, поэтому если вы используете MacOS или Linux, то вам наверняка больше потребуются другие протоколы (NFS, AFP), я же опишу настройку так, как я её делал для себя.
Для доступа к медиа-данным со smart-телевизоров, нам потребуется DLNA-сервер. А для для удобства скачивания, нам нужен torrent-клиент. Ну и желательно всё это администрировать через веб-интерфейс.

Почему не аппаратный NAS?

Казалось бы, производители давно позаботились о пользователях, и давно выпускают готовые коробочки специально для домашнего применения. Но у них есть недостатки:
1) Они дорогие. Вы вряд ли найдёте дешевле 20000 руб. NAS c возможностью подключения 4-х жёстких дисков, с процессором Atom. Те, что стоят недорого, в них обычно применяется слабенький процессор, которого уже не хватет на тот же torrent при одновременном скачивании двух потоков данных (просмотр фильма по DLNA и копирование, например, фоток). Собрать же полноценный мини-ПК на основе mini-ITX материнской плате с Atom и 4 Гбайтами памяти у меня получилось всего за 6000 рублей!
2) Они ограничены. То есть в нём предусмотрены только те функции, которые заложил производитель. Чтобы расширить его возможности, обычно требуются «танцы с бубном», т. к. ядро в прошивке бывает сильно урезанным. Применяя же Ubuntu, вы практически ничем не ограничены — огромный репозитарий всевозможного софта позволит вам сделать из вашего сервера всё что угодно, вплоть до поднятия виртуальных машин.

Почему не FreeNAS или OpenFiler?

Спросите вы? Во-первых, смотри пункт №2 недостатков аппаратных NAS, то есть наращивание функционала данных дистрибутивов очень проблематично, тогда как у Ubuntu есть огромный репозитарий уже настроенного софта. Во-вторых, это огромные системные требования, в частности FreeNAS 8 требует минимум 2 Гб оперативной памяти, а новые версии OpenFiler вообще уже не выпускают под x86-архитектуру. Кроме того у FreeNAS как-то не гладко идёт развитие — версия 0.7 который имеет торрент клиент и DLNA-сервер давно устарела, в восьмой, коммерческой версии мне так и не удалось настроить DLNA, да и с предлагающейся файловой системой ZFS как то сложно, в случае отказа системы, как прикажете восстанавливать данные? Сложно.

Почему выбран дистрибутив Server 12.04 LTS?

LTS (Long Term Support) — это дистрибутив с длительным периодом поддержки и выпуском обновлений. Так как нам нужен сервер, который, по возможности, единожды настроив, мог бы спокойно работать в дальнейшем годами, то выбирать лучше именно эту версию дистрибутива.
Server версия выбрана очевидно, т. к. в идеале нам совершенно не нужно растрачивать ресурсы на графическую оболочку. Хотя если вы, пока только знакомитесь с linux, или уже работали с desktop-версией ubuntu, то в принципе можете выбрать и обычную версию дистрибутива, это не принципиально.

Начнём

Установка вполне прозрачна, поэтому особо подробно описывать её не буду. Подробнее лишь остановлюсь на разбивке жёстких дисков.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
Я взял бюджетную материнскую плату без поддержки аппаратного RAID, да и на моей практике аппаратный RAID встроенный в материнскую плату часто показывает себя не с лучшей стороны, поэтому организовывать мы будем так называемый «программный» RAID. Для хранения данных будут использоваться два новеньких жёстких диска. Лишних носителей информации у меня не оказалось, поэтому диск буду разбивать на два раздела, один из которых будет системным, а второй — для данных. Оба раздела на двух жёстких дисках будут объединены в RAID 1 (все операции для удобства я выполняю на виртуальной машине, так что не обращайте внимание на маленький размер разделов).
Сначала создаём таблицу разделов на первом диске и разбиваем его на две части. Помечаем их как «раздел для RAID», хотя это и не обязательно.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
Аналогично разбивается и второй диск. После чего выбираем пункт «Настройка программного RAID». Говорим «Создать MD-устройство», выбираем первые разделы на двух дисках. Аналогично с разделами для данных. К слову, RAID можно динамично менять и расширять, поэтому если у вас пока только один жёсткий, но планируете покупку второго — смело настраивайте, после покупки запросто сможете его подцепить.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
После создания RAID, помечаем их для использования. Выбираем файловую систему ext4, и назначаем точки монтирования: системный раздел как корень (/), а раздел данных в произвольное место (я предпочитаю монтировать в папку /mnt).
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
Дальше система известит, хотим ли мы загружать систему если RAID-массив отказал. Советую ответить «нет», т. к. если откажет жёсткий диск, вы это даже не заметите — система продолжит работать с одним диском, но если откажет и второй диск, то тут придётся нести их в фирму по восстановлению данных.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
Раздел подкачки создавать не буду, т. к. во-первых его можно сделать файлом, а во-вторых лично мне он не нужен — на моём мини-ПК установлено 4 Гб, при этом использование памяти никогда не превышало более 10% (400 Мбайт), а в обычном состоянии и того меньше (прямо сейчас используется всего 130 Мбайт). Хотя если вы планируете поднимать виртуальные машины, возможно, она вам и понадобится, поэтому после установки я опишу как создать файл подкачки, сейчас же на предложение создать swap-раздел отвечаем отрицательно.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
После непродолжительного процесса копирования файлов система начнёт обновлять данные с репозитариев, а после спросит, каким образом будут устанавливаться обновления. Так как у нас администрирование системы сводится к минимуму, выбираем автоматическое обновление. Затем система спросит, какие пакеты необходимо установить сразу же. Я выбрал OpenSSH (нам нужна удалённая командная строка), LAMP (понадобится для веб-интерфейса), Print server (в этой статье я не буду описывать подключение принтера), и конечно Samba file server для доступа с windows-машин.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS
Ну и в финальной стадии система запросит пароль для MySQL и запрос на установку GRUB. Перезагружаемся — система установлена! Залогинемся, чтобы посмотреть какой ip-адрес нам присвоил DHCP (также это можно сделать с помощью команды ifconfig), в моём случае был выдан адрес 192.168.1.180.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTSДомашний медиа сервер на основе Ubuntu Server 12.04 LTS
Всё, можно отключать монитор и убирать системник в удобное место, дальше будем работать с ним через SSH. Я использую для этого PUTTY.
Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Конфигурация

1) файл подкачки

В первую очередь опишу как настроить файл подкачки, если он вам действительно нужен, всё делается буквально в несколько строчек команд.
Создаём файл заполненый нулями:

> sudo dd if=/dev/zero of=/swap bs=1M count=2048

Подготавливаем его для использования как swap:

> sudo mkswap /swap

Добавляем в файл fstab наш созданный файл для использования как файл подкачки:

> sudo nano /etc/fstab
/swap none swap sw 0 0

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

> sudo shutdown -r now

2) обновление ПО

Сразу же обновляем все пакеты, делается это двумя командами:

> sudo apt-get update
> sudo apt-get upgrade

3) Веб-интерфейс

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

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

Для установки webim потребуются некоторые зависимые пакеты, в моём случае это такой список, возможно, вам потребуется включить ещё что-нибудь.

> sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl apt-show-versions

Ну и собственно установка:

> sudo dpkg --install webmin_1.580_all.deb

Всё, можно заходить в веб-интерфейс:

https://192.168.1.180:10000

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

4) Настраиваем ftp-доступ

Для ftp я использую pure-ftpd (хотя вы можете выбрать на свой вкус — proftpd и vsftpd)
Создадим публичную папку:

> sudo mkdir /mnt/data/public

Устанавливаем pure-ftpd из репозитария:

> sudo apt-get install pure-ftpd

В принципе можно уже заходить под системным аккаунтом, но это не совсем хорошо для повседневного использования. Сделаем виртуальный аккаунт с доступом только к публичной папке:

> sudo pure-pw useradd public -u local -g nogroup -d /mnt/data/public

Обновим базу данных:

> sudo pure-pw mkdb

Включим использование виртуальных пользователей:

> sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

Перезапускаем сервис:

> sudo service pure-ftpd restart

5) Samba

Настроим доступ к серверу с windows-машин, более того у меня лично дома семья большая и требуется разделение прав между несколькими пользователями. А для удобного редактирования прав на папки прямо из Windows (через вкладку «безопасность» в свойствах), будем использовать ACL.
Домена у нас нет, поэтому придётся создать пользователей таких же, как и на windows-машинах:

> sudo useradd -d /home/PaulZi -s /bin/true -g users PaulZi

Задаём пароль, такой же, как на windows:

> sudo passwd PaulZi

Добавляем созданного пользователя к Samba:

> sudo smbpasswd -a PaulZi

Для управления расширенными правами, можете установить утилиты (необязательно):

> sudo apt-get install acl
> sudo apt-get install attr

Для того, чтобы samba работала с ACL, необходима файловая система с поддержкой POSIX ACL, ext4 вполне подходит, но по умолчанию она примонтирована без этой поддержки. Для включения этой возможности добавим опцию «acl» в файл /etc/fstab. Но более того, в Windows реализована поддержка наследования прав, чтобы и это реализовать в linux, нужно чтобы samba где-то хранила дополнительные данные. Для этого необходимо включить расширенные атрибуты файлов, опция «user_xattr». Заодно запретим выполнение файлов на всём разделе с данными, с помощью опции «noexec» (для безопасности):

> sudo nano /etc/fstab
/dev/md0 /mnt/data       ext4    defaults,noexec,acl,user_xattr        0       2

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

> sudo shutdown -r now

Редактируем настройки samba (для краткости привожу только изменения и добавления):

> sudo nano /etc/samba/smb.conf
[global] 
   workgroup = Home
   netbios name = Server
   security = user

   # add settings
   admin users = PaulZi			# действие этих пользователей будут производиться от root 
   map acl inherit		= yes	# включаем наследование acl
   store dos attributes	= yes	# включаем хранение dos атрибутов
   # отключаем хранения windows атрибутов:
   map archive		= no
   map system		= no
   map hidden		= no
   map readonly		= no
   
# public share
[public]
   comment = Public
   path = /mnt/data/public
   browseable = yes				# шара видна
   read only = no				# включаем возможность записи
   guest ok = yes				# разрешаем гостевой доступ
   inherit permissions = yes	# включаем наследование прав
   inherit acls = yes			# включаем наследование windows-прав
   inherit owner = yes			# включаем наследование владельца
   hide unreadable = yes		# прятать файлы недоступные для чтения

Перезапускаем сервис:

> sudo service smbd restart

6) DLNA/UPnP — сервер

В качестве DLNA-сервера я выбрал minidlna. Выбрал его по одной просто причине, что он не тянет за собой кучу ненужных зависимостей, как MediaTomb и Serviio (они тянут Java либо графические библиотеки). Однако если вам необходим транскодинг, советую установить один из них, вместо minidlna.
Установка из репозитария:

> sudo apt-get install minidlna

Настраиваем:

> sudo nano /etc/minidlna.conf
media_dir=/mnt/data/public
friendly_name=Ubuntu

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

> sudo service minidlna restart

7) torrent

Ну и последний освещённый в данной статье сервис — torrent-клиент. Я использую Transmission, как успешно зарекомендовавший себя клиент с веб-интерфейсом.
Устанавливаем:

> sudo apt-get install transmission-daemon

Останавливаем сервис, иначе все изменения запишутся после завершения процесса:

> sudo service transmission-daemon stop

Настраиваем:

> sudo nano /etc/transmission-daemon/settings.json
"download-dir": "/mnt/data/public/torrents"
"rpc-password": "local"
"rpc-username": "local"
"rpc-whitelist-enabled": false

Тут меняем четыре настройки — задаём путь для загрузки, имя пользователя и пароль для веб-интерфейса, а также отключаем «белый» список доступа к интерфейсу — разрешаем для всех. Пароль указываем в открытом виде, после последующего запуска он будет зашифрован.
Запускаем сервис:

> sudo service transmission-daemon start

Заходим в веб-интерфейс, убеждаемся, что всё хорошо:

http://192.168.1.180:9091/

Домашний медиа сервер на основе Ubuntu Server 12.04 LTS

Послесловие

В итоге мы получили вполне себе полноценный домашний сервер. Конечно в статье указано лишь базовые настройки сервисов, и скорее всего вам нужно будет что-то настроить под себя. Да и возможно вам потребуется какие-то дополнительные сервисы, но как видно из статьи, всё это делается довольно просто, без особых «плясок с бубном», достаточно всего лишь обратиться к гуглу — по настройке сервисов в Ubuntu информации очень много.

Автор: PaulZi

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js