Бесшумный NAS для дома и собственное файловое облако на Linux. Часть 1
21 июля 2019 г. linux server self-hosted
Из-за очередного приступа параноии, я решил сменить Google Drive на собственное решение, и хранить свои файлики поближе к телу. Выбор был между: поднимать в каком-нибудь DigitalOcean виртуалку и хранить там; или собрать дома свое хардварное решение. Подсчитав сколько будет стоить виртуалка с нужным объемом диска, выбор был сделан в пользу домашнего NAS-сервера.
Это первая часть статьи, с тех пор мой сетап изменился. Вторая часть здесь
Выбор
У меня было примерно 100 ГБ данных на момент съезда из Google Drive. Виртуалка в DigitalOcean на 160ГБ стоит 40$ в месяц, то есть в год будет выходить ~500$. Дорого. За эти деньги можно дома собрать NAS на терабайт с SSD дисками. Есть ещё вариант брать маленькую виртуалку, и к нему подключить S3 хранилище, но софт, который я планировал использовать, не умеет работать с S3.
Итак, вариант с виртуалкой в облаке я отмёл, и пошел смотреть что нынче есть на рынке домашних NAS серверов. Так как я живу в маленькой квартире, NAS я планировал ставить в жилой комнате, и, если он будет шуметь вентиляторами и вибрировать HDD-дисками, то житья в комнате не будет. Поэтому я хотел найти NAS с пассивным охлаждением, и вставить туда SSD диски. Не самое дешевое решение, но за тишину приходится платить.
Как выяснилось, на рынке практически нет NAS с пассивным охлаждением. Почему так — я не понимаю. По опыту использования — максимальная температура дисков за год использования у меня была 47.0 C (наверно когда я переносил все данные), в покое — 36.0 C, крышка NAS-а чуть теплая. 90% времени диски простаивают, и зачем им вентилятор я не понимаю.
Вот модели с пассивным охлаждением которые я смог найти — QNAP HS-210
, QNAP HS-251
, QNAP HS-251+
(он же QNAP S2
), QNAP HS-453
. У всех моделей обычный x64-процессор, не ARM. Получается маленькая такая desktop-тачка с местом для двух HDD.
HS-210
- 512 МБ ОЗУ мало.HS-251
- 1ГБ ОЗУ малоHS-251+
- 2ГБ ОЗУ нормHS-453
- 4 или 8 ГБ ОЗУ. Ultimate решение, но не продается в России и стоит космос.
У Synology бесшумных решений я не нашел. Собирать системник тоже не хотелось — он не получится таким же маленьким и бесшумным как QNAP. В общем выбрал золотую середину — QNAP HS-251+
(QNAP S2).
Из дисков я выбрал WD BLUE 3D NAND SATA SSD 1 TB (WDS100T2B0A). Взял две штуки. Они без проблем заходят в NAS. Итого вышло:
NAS x 1шт. - 25 т.р
SSD x 2шт. - 2x8 т.р = 16 т.р
----
Тотал: 41 т.р.
Не самое дешевое решение для NAS, но самое дешевое из подходящих под требования. Кроме этого, чтобы создать свое облако потребуется статический “белый” IP-адрес дома, чтобы подключаться из интернета к домашнему серверу. Обычно такая услуга есть у любого провайдера.
Программная часть
После покупки и установки самого NAS-а, решил попробовать использовать софт от самого QNAP. Стоит сказать, что он очень разнообразный — полностью заменяет публичные облака, и даже умеет запускать виртуальные машины. Из себя он представляет некую ОС (на основе Debian, кажется), с веб-интерфейсом а-ля iPad и проприетарными приложениями.
К сожалению все работает довольно медленно, да и менять один проприетарный продукт на другой внутренний параноик мне не позволил, поэтому я установил на NAS обыкновенный чистый Linux.
Так как это обычный x86_64 ПК, я записал на флешку свежий дистрибутив, зашел в BIOS и загрузился с нее:
В этом NAS-е есть постоянная память размером 512 МБ куда установлена дефолтная прошивка. Ее я не перезаписывал (при желании можно будет вернуться на нее), и поставил Ubuntu 18.04 на software RAID, собранный из двух установленных дисков. На каждом диске создается по партиции одинакового размера, и они объединяются в RAID1. На одном диске также раздел для загузчика и /boot:
Домашнее облако
Для замены Google Drive (Яндекс.Диск, Dropbox и тд.) я выбрал Seafile — https://www.seafile.com/en/home/
Выбор был между ним и Nextcloud/ownCloud, но после тестовых установок выбрал Seafile. До 3-х пользователей можно использовать Enterprise версию — её и взял. В ней есть поиск по файлам и еще несколько полезных функций, вот здесь есть сравнение бесплатной и enterprise версий. Разворачивал с помощью Docker — очень просто и быстро, на сайте есть подробный мануал
У Seafile есть веб-интерфейс, desktop-приложение для всех ОС и мобильный клиент.
Nextcloud/ownCloud гораздо богаче по функционалу, и они хранят файлы в открытом виде, то есть их можно интегрировать в другие серверные приложения, но жуткие тормоза при аплоаде файлов и на веб-интерфейсе делают их неработопригодными.
Seafile тоже не идеален, всё что он умеет — просто хранить файлы. Особенности использования:
-
хранит данные в бинарных файлах. То есть их нельзя просматривать на диске. Получаем высокую скорость при доступе к данным, но теряем в гибкости. Вот так выглядят данные на ФС:
-rw------- 1 root root 97 Apr 16 01:26 1d46b8b3d59365589abaaa77876c4b1fe068ec -rw------- 1 root root 99 Apr 16 01:33 23d9d311068642954648cf44a624ba1ad21c38 -rw------- 1 root root 128 Apr 17 00:19 2a418556a5823aff2ec8b2932e6f5f8d2a2fde -rw------- 1 root root 99 Apr 16 01:32 2c3b2a380588778aa74dd6298980b91051dfb6 -rw------- 1 root root 128 Apr 13 11:52 37f31bc96a32526574d82331aeeff229804ec8
-
есть возможность создавать несколько библиотек и разделять доступ пользователей к ним
-
можно создавать шифрованные библиотеки с защитой по паролю
-
есть приложение для Android/iOS. Довольно скромное, но заливать фотки с телефона и просматривать файлы умеет.
После трех лет использования Seafile, я перешел на Nextcloud и не жалею. Про это написал вторую часть этой статьи
Домашний NAS и медиа-плеер
Так как в NAS-е есть HDMI выход, я его подключил к телевизору и сделал из него медиа-плеер. В комплекте также есть пульт ДУ:
С помощью очень классной программы Kodi (https://kodi.tv/) можно полностью заменить smartTV, онлайн-кинотеатр и приставку для проигрывания IPTV. Он устанавливается на linux и на экран выводит свой интерфейс. Навигация пультом ДУ или приложением Kore. С пультом были проблемы, не заводился из коробки, пришлось немного потанцевать с бубном.
Вот так выглядит интерфейс Kodi на телевизоре:
Как я использую Kodi:
- плеер фильмов, которые лежат на NAS-диске
- плеер IPTV вместо MAG-250. Умеет показывать multicast-потоки
- проигрыватель YouTube (приложение не очень удобное, но юзабельное)
- в поездках с помощью приложения Kodi для Android подключаюсь к своему NAS и смотрю с него фильмы. Получается такой self-hosted онлайн-кинотеатр
- для скачивания новых фильмов на NAS установил Transmission + web-интерфейс
Также на NAS поставил FTP и Samba, чтобы подключаться с девайсов в локальной сети и NFS для монтирования сетевого диска.
Такой схемой я пользуюсь около года и вот какие выводы сделал:
- приложения Яндекс.Диск/Google Photo удобнее и быстрее. Да, opensource-аналоги не дают такого удобства использования — то тут, то там встречаются мелкие косяки (например в android-приложении seafile фотки при просмотре скачиваются полностью, т.е. не превью сжатое, а фото если весит 5МБ — оно все полетит на телефон, это медленно и занимает место на телефоне; хотя в веб-морде есть превьюхи). Ну и поиск в Гугл.фото по содержанию фотографий (когда в поиске вводишь “горы”, и он показывает все фотографии гор из вашей библиотеки) — это вообще киллер фича, такого в бесплатные аналоги не знаю когда завезут.
- скорость загрузки файлов в Seafile гораздо выше, чем в публичные облака
- смотреть фильмы теперь супер удобно. Особенно в поездках. 4G есть практически везде в России, и теперь не надо закачивать кучу фильмов на телефон — смотрю онлайн, подключаясь с телефона к домашнему серверу. В случае отсутствия связи, например в поезде, подключаюсь по FTP и скачиваю перед отправлением.
- Kodi — супер комбайн, но хотелось бы научиться стримить телевизионный сигнал на телефон, чтобы смотреть ТВ не из дома. Этого еще не понял как сделать.
- чтобы все это настроить пришлось покурить мануалы и подзаморочиться с установкой и наладкой.
Хочу ли я вернуться в публичные облака (Google Drive, Яндекс.Диск)? Нет, не хочу. На мой взгляд, плюсов в такой схеме все же больше, чем минусов. А внутренний параноик теперь спит сладким сном.
Продолжение во второй части