Настраиваем бесплатное микро-облако на примере Terramaster F2-423
Примерно с 2015 года в наших обзорах NAS мы делали упор на то, что современный файловый сервер для небольшой компании – это прежде всего сервисы, которые он предоставляет: расширенные функции совместной работы, файлообмен через интернет, видеонаблюдение, галерея и т.д. Пришло время пересмотреть эту парадигму и принять за истину, что начиная с 2023 года NAS – это всего лишь платформа для файлов с какими-то базовыми функциями хранилища и настройки уровней доступа пользователя и поддержкой Docker. Любые сервисы, которые нужны пользователю, можно установить бесплатно из GitHub и не зависеть от производителя NAS.
Что поменялось за прошлые 2-3 года?
Самое главное – рынок бесплатного ПО с открытым исходным кодом за последние годы сделал потрясающий скачок вперёд, и прежде всего, за счёт привлечения коммерческих клиентов, которые переходили на FOSS (Free Open Source Software) по требованиям безопасности. Открытый софт не просто вырос в качестве кода, но и обрёл качественную документацию и привлёк новых членов сообщества. И то что ещё год-два назад работало кое-как и через пень колоду, сегодня заткнёт за пояс коммерческие платные продукты. Большая часть свободного софта сегодня поставляется в Docker-контейнерах, что кардинально упрощает настройку и запуск, и это стало причиной появления нового движения: "self-hosted".
Что такое Self-Hosted и почему это так модно?
Как можно понять из названия, это - установка различных сервисов на своём оборудовании. Вместо того, чтобы пользоваться платными сервисами, любители "самохоста" устанавливают их аналоги на свои купленны ес рук серверы, на NAS-ы и Raspberry Pi. Нетребовательность к ресурсам и относительная дешевизна HDD/SSD позволяет полностью перенести всё то облачное, чем мы сегодня пользуемся, себе на стол, уже с совершенно иным уровнем приватности и надёжности. Как говорится, вы управляете своими данными только когда они - на вашем сервере. Сегодня Self-Hosted стал особенно модным из-за многочисленных скандалов, связанных с утечками данных и взломами крупных облачных ресурсов.
Есть, правда, кое-какая проблема: как ни крути, но для настройки сторонних приложений надо хоть немного в этом разбираться и крайне желательно знать английский язык. Но ничего, мы вам покажем как это делается, чтобы вы поняли, что даже на маленьком компактненьком NAS-ике можно поднять свой аналог Google Docs, Dropbox, Google Photos и прочих сервисов, к которым мы привыкли.
Платформа: Terramaster F2-423
Как я уже сказал, от NAS нам нужно немногое: компактный корпус и программная платформа, которая сделает всю работу с дисковым хранилищем за нас и позволит установить Docker из милого Web-интерфейса. В большинстве случаев, сегодняшний софт не требователен к процессору, поэтому даже 4-ядерный Celeron N5095, если его не загрузить транскодингом видео, скорее всего большую часть времени будет простаивать без дела. А вот к памяти современный софт достаточно требователен, потому что активно использует базы данных Redis для кэширования в ОЗУ. К счастью, Terramaster F2-423 хоть и поставляется с 4 ГБ памяти, но поддерживает до 32 ГБ DDR4 SoDIMM. Я считаю, что под наши задачи 8 ГБ ОЗУ было бы оптимально, а 16 ГБ хватит с лихвой.
В том, что касается SSD кэширования, ситуация неоднозначная. Многие программы, использующие базы данных для хранения файлов, например SQLite, даже при загрузке крупных файлов пишут на диск маленькими блоками до 64 КБ. Для жёстких дисков это очень плохая нагрузка, поэтому конечно SSD кэш может помочь. На этот случай у Terramaster F2-423 есть 2 слота M.2 2280 PCIe 3.0 (до 1 ГБ/c). С другой стороны, всё зависит от конкретного ПО, с которым ты работаешь – SSD кэширование может и не потребоваться, но я считаю, что пусть лучше у нас будет возможность использовать кэш, если что - всегда сможем ею воспользоваться.
Ещё одна отличительная особенность Terramaster F2-423 – пара 2.5-гигабитных сетевых интерфейсов, дающих суммарную скорость около 550 МБ/с. С точки зрения залива на NAS файлов по SMB/CIFS или через iSCSI – это несомненный плюс перед 1-гигабитными аналогами. Но что с точки зрения приложений? Они все сегодня рассчитаны на работу по HTTPs через интернет, а там скорости загрузки файлов 200-300 Мбит/с считаются большой удачей. В локальной же сети по незашифрованному протоколу HTTP – да, можно ожидать скоростей на уровне 600-900 Мбит/с, хороший мощный сервер покажет и 1.5-2 Гбит/c.
Файловое хранилище
Вообще, TerraMaster не балует пользователя новейшим ПО в своей операционной системе: на момент написания обзора новейшая версия прошивки TOS 5.1.67-00214 использовала ядро Kernel 5.15.59. Почему я обращаю на это внимание? Потому что TerraMaster поддерживает не только файловую систему EXT4, про которую нечего сказать кроме того, что она быстрая и удобная, но и более прогрессивную BTRFS, которая в своё время вызвала много споров в профессиональном сообществе. Так вот, начиная с BTRFS 6-й версии, в этой файловой системе произошла мини-революция, в результате чего BTRFS выбилась в лидеры по скорости работы с мелкими файлами и в некоторых других тестах, обойдя даже EXT4. В прошивке TerraMaster используется BTRFS более ранней версии, 5.6, но я всё равно рекомендую использовать именно эту файловую систему, потому что когда/если Terramaster перейдёт на BTRFS 6.2, вам не нужно будет менять конфигурацию дисков, и вы получите «ракету» на ровном месте.
Кстати, если вы «что-то слышали» про проблемы BTRFS с RAID, то спешу заметить, что во-первых, все они касались BTRFS RAID5/6, и к нашему NAS не имеют отношения, во-вторых – давно были исправлены, а в-третьих для построения RAID массива Terramaster использует LVM версии 2.03.14, то есть BTRFS тут работает только как файловая система.
«Бутерброд» из LVM+mdadm+файловые системы считается общепринятой нормой в мире NAS для малого бизнеса и дома: эта технология отработана годами, но достаточно сложна в построении и обслуживании, поэтому то, что производитель держит её «под капотом», а нам для управления даёт миленький Web-интерфейс с рычажками в виде кнопочек – это первый ответ на вопрос, почему фирменный NAS стоит дороже самосборного ПК.
Собственное ПО Terramaster
Я принципиально не хочу заострять внимание на собственном ПО Terramaster – вы найдёте много других обзоров, где его тестируют авторы. Для меня важно иметь на слое файлохранилища современные протоколы SMB/CIFS, AFP, FTP, SFTP, Rsync, WebDAV – всё это есть. Встроенная поддержка ИБП – есть, а значит мы не потеряем данные при резком блэкауте.
Файловый менеджер (моя слабость) тоже есть, и вполне неплохой, а главное – есть менеджер пакетов, запустив который мы устанавливаем сначала Docker, а затем Portainer. Добро пожаловать в огромный мир бесплатного софта!
В силу своей архитектуры, Docker не хранит данные постоянно в контейнерах: ему либо нужно настроить использование встроенной системы томов Docker Volume, либо пробросить в контейнер папку с СХД. Мы можем создавать отдельные папки для разных стеков прямо в интерфейсе Terramaster TOS, но учтите, что оболочка не показывает абсолютный путь папки, который нам потребуется, так что для уточнения можете подключиться к NAS по SSH и проверить. Обычно имя папки имеет следующий путь относительно корня: /Volume1/имя_папки (обратите внимание – Volume1 пишется с большой буквы. Я не рекомендую вам использовать встроенные средства шифрования папок в Terramaster для использования с Docker, поскольку контейнеры запускаются автоматически при старте системы, а зашифрованные папки монтируются вручную, и если контейнер запустится с неподмонтированной папкой – будет глюк.
Шаг 1 – установка Nextcloud AIO
Я считаю, что Nextcloud сегодня стал стандартом де-факто для синхронизации, совместного доступа и хостинга файлов. Косвенно это подтверждает и то, что этот софт в качестве приложений есть во всех современных NAS-ах, но чтобы установить самую новую версию, придётся ставить его самостоятельно. Кликаем в веб-интерфейсе Terramaster TOS на иконку Portainer, вводим логин и пароль, выбираем локальную установку Docker и в левой колонке выбираем Stacks. Жмём на кнопку Add Stack и в открываем соседнюю вкладку браузера, где переходим по ссылке https://github.com/nextcloud/all-in-one/blob/main/compose.yaml, копируем содержимое файла в основное поле и раскомментируем строки
environment
APACHE_PORT=11000
после чего жмём кнопку Deploy.
Nextcloud закрывает наверное процентов 70 потребностей в работе через облако. Многие устанавливают его и на этом успокаиваются, потому что в нём и правда «есть всё». Без транскодинга и AI-функций типа тегирования и распознавания лиц, он не требователен к процессору, но такие пакеты как полнотекстовый поиск и антивирус, потребуют лишние 2 ГБ памяти. Правда, надо быть готовым к тому, что Nextcloud работает медленно, и тут дело не в серверной части, а в огромном объёме JS кода, который загружает ваш браузер.
После установки с базовыми параметрами и офисным пакетом Collabora, инсталляция Nextcloud почти не потребляет ресурсов процессора, но требует около 2 ГБ ОЗУ, так что и базовых 4 ГБ у нас остаётся меньше 1 ГБ. Данные на сервере хранятся в открытом виде, так что при необходимости вы можете установить плагин E2E Encryption или зашифровать папку средствами Terramaster OS, хотя я уже высказался на эту тему выше.
Шаг 2 – устанавливаем собственный менеджер паролей Vaultwarden
Когда Chrome или Firefox хранит пароли – это удобно, но если вы одновременно пользуетесь и тем и другим браузером, то уже возникают трудности. Поэтому удобнее настроить собственное хранилище паролей, скачать расширение на все браузеры (в том числе мобильные) и получить ещё одну степень свободы от корпораций. Менеджер паролей есть у Nextcloud, но как это заведено в индустрии, специализированное решение работает лучше.
Vaultwarden не потребляет заметных ресурсов памяти и процессора, так что считаем эту установку «бесплатной». Обратите внимание – все данные, направляемые в Vaultwarden из клиентского приложения, шифруются на стороне клиента и хранятся в зашифрованном виде, поэтому применять дополнительное шифрование папки не имеет смысла.
Шаг 3 (опционально) – устанавливаем собственный облачный «офис» Onlyoffice Docs
Microsoft в любой момент может перестать поддерживать Office 365 для клиентов из недружественных стран, Google с его Google Docs тоже от этого не застрахован. Крупные предприятия уже столкнулись с невозможностью продлить сертификаты доступа к MS Exchange, так что лучше перебдеть. OnlyOffice Docs – это Backend, который не имеет собственного интерфейса, а к чему-то подключается. Он легко интегрируется в Nextcloud и позволяет редактировать одни и те же документы как из Web-интерфейса Nextcloud, так и из оффлайн-редактора под Windows/Linux/смартфоны. Бесплатная версия имеет ограничение на количество одновременных подключений, но для небольших компаний это незаметно.
OnlyOffice Docs достаточно требователен к ресурсам и может не установиться на NAS с объёмом памяти меньше 8 ГБ – вот тут и вспоминаем, о чём мы говорили выше – Terramaster F2-423 легко даст вам расширить объём ОЗУ.
Шаг 4 – устанавливаем Immich
В NextCloud уже есть два типа фотогалереи, но самое красивое и эффектное, что есть сегодня в мире бесплатных фотохостингов – это Immich. Если вам нужно дать ссылку на галерею клиенту, например, для просмотра фотографий – удобнее это делать через Nextcloud, но при просмотре через Immich клиент будет прыгать от счастья.
Фотографии, загруженные в Immich, хранятся в незашифрованном виде, отсортированные по дате. Встроенные AI-функции включают распознавание лиц и объектов, и поскольку в Terramaster F2-423 процессор слабоват для этих задач, рекомендуем вам в настройках приложения выбрать обработку этих функций в 1 поток: оно будет работать медленнее, но не станет загружать процессор на 100%.
Шаг 5 – настраиваем прокси через белый IP или CloudFlare Tunnel
Ваши сервисы будут использовать внутреннюю сеть Docker с пробросом открытых портов на IP-адрес самого NAS-а. Для того, чтобы все они работали через защищённый HTTPs канал, нужно настроить проксирование для домена. Есть два способа это сделать: первый – купить у провайдера «белый IP» и на роутере в настройках NAT пробросить 443 и 80 порты на IP-адрес Terramaster F2-423, а на самом устройстве в Docker установить Nginx Proxy Manager. Порты по умолчанию можно переназначить, например 80-й порт NGINX форвардить на 8082 хоста, а в роутере уже при трансляции входящего запроса на 80-й порт, перенаправлять его на 8082-й, и аналогично входящий 443-й порт перенаправлять например на 8443 порт Nginx.
Проще всего каждый сервис вешать на свой поддомен, например на nextcloud.example.com, immich.example.com, password.example.com и уже из веб-интерфейса панели управления Nginx выбирать соответствующий порт хоста, к которому привязан контейнер. Например, для nextcloud.example.com мы выбираем 192.168.1.164 (IP-адрес Terramaster F2-423) и порт 11000 (тот, на котором висит Apache стека).
Есть и ещё один вариант – использование Cloudflare Tunnel. Он позволяет подключаться к вашим серверам по HTTPs, даже если у вас нет «белого» IP-адреса, и поскольку это бесплатно, можно лишь порадоваться и пожелать им здравия. Суть технологии простая – в вашем облаке запускается контейнер, который устанавливает соединение с серверами Cloudflare, и уже при доступе по HTTPs, Cloudflare соединяет клиента с вашим сервисом, посылая ответные сетевые пакеты. Благодаря этому, технология работает даже за самыми серыми IP провайдера, не требует от вас мороки с получением и обновлением сертификатов Let’s Encrypt, но правда есть ограничения по скорости и такая неприятная мелочь, что при регистрации от вас потребуют номер действующей кредитной карты VISA/Mastercard. Национальные платежные системы типа карт «Мир» не поддерживаются, так что подробно останавливаться на этом методе не будем: если у вас есть нужная карточка, вы без труда найдёте пошаговую документацию как всё настроить, установив клиент Cloudflare в Docker и прописав ему токен доступа.
В плане надёжности, скорости и безопасности, я вам рекомендую использовать белый IP и собственный reverse proxy, будь то Nginx Proxy manager или другой.
Временные затраты:
На установку Nextcloud + Immich + Vaultwarden + OnlyOffice + Nginx Proxy Manager уходит примерно 1 день, если вы знаете, что делаете, и примерно 1 неделя, если для вас всё это в новинку. Если вам нужно настроить регистрацию через LDAP, то практически везде она будет платной, но никаких иных препятствий для установки контроллера LDAP в Docker нету.
Миграция на другой NAS
В случае если вы решили перейти на другой NAS с сохранением всех ваших сервисов, вам нужно скопировать данные стеков Docker из редактора Portainer в Notepad, остановить все контейнеры и просто скопировать папки с Docker-томами на новое устройство. При запуске сервисов на новом NAS вам нужно будет всего лишь поменять пути к этим папкам в редакторе Portainer и поправить IP-адрес устройства в Nginx Proxy Manager и в разделе NAT на роутере.
Данная схема не привязывает вас к одному какому-то производителю оборудования, так что вы можете легко мигрировать данные с Terramaster на QNAP, Synology, Asustor или самосборный сервер под Ubuntu/Centos Linux.
Выводы
Я не ставил своей целью рассмотреть весь бесконечный мир бесплатных приложений для создания своего микро-облака, я лишь хотел показать, что сегодня даже на таких маленьких и компактненьких платформах, как Terramaster F2-423, мы можем запускать самые свежие версии полезного ПО, не дожидаясь, пока производитель NAS адаптирует их под свою платформу или напишет что-то своё. Как вы можете понять, требования к NAS в этом случае снижаются, а степень нашей свободы – растёт. Мы можем мигрировать наши данные между устройствами разных производителей, и это легче, чем когда-либо. Мы защищены от разного рода санкций, наш дисковый массив защищён с помощью RAID, у нас одна из самых прогрессивных файловых систем, BTRFS, и что самое главное – теперь производитель NAS ну никак не может «подсадить нас на крючок» своим встроенным софтом, а потом разориться или красиво уйти в закат.
Ссылки на ресурсы по теме self-hosted:
- awesome-selfhosted - отсортированная подборка сервисов и ПО
- r/selfhosted - сообщество в Reddit
Terramaster F2-423 идеально подходит для такого старта, если всё это делаете вы впервые: расширяемая память, два слота NVME M2.SSD, поддержка SSD-кэширования и удобный интерфейс. Встроенного процессора хватает для большинства задач, не связанных с искусственным интеллектом, память устанавливается легко, девайс не сильно дорогой и сильно компактный.
Михаил Дегтярёв (aka LIKE OFF)
17/10.2023