На что можно заменить Synology в условиях санкций. Часть 2: выбираем сервисы

Установка приложений, настройка сервисов

Спланировав хранилище, перехожу к установке программного обеспечения. Docker уже установлен, и теперь я установлю поддержку файловой системы MergerFS и SnapRAID для архивного массива данных. Для примера возьмём 8 HDD, на которых будут располагаться файлы. С помощью WebUI Proxmox я форматирую их в EXT4, но не добавляю в качестве хранилища для гипервизора. На этом этапе я выбираю точку монтирования в отдельном каталоге /mnt/pve, и для 7 жёстких дисков задаю созвучные имена media-disk-1 media-disk-2 … media-disk-7, а 8-й жёсткий диск отдам под хранение чётности для SnapRAID и смонтирую его с именем disk-parity-1 в ту же директорию. Хочу обратить внимание, что Proxmox VE не записывает точки монтирования в /etc/fstab, поэтому если вытащить один из этих дисков на выключенном сервере, машина всё равно загрузится и продолжит работать, архивный том будет доступен, а информация на оставшихся дисках сохранится.

Пакет MergerFS я устанавливаю не из репозитория, а со страницы разработчика на Github, поскольку эта версия лучше работает под Debian. Да, в отличии от Synology, где всё сделали за нас, здесь приходится заморачиваться с версиями пакетов.

Файловая система MergerFS имеет несколько алгоритмов распределения записываемых файлов по директориям дисков. Например, она может распределять файлы случайным порядком по дискам, а может сначала заполнять один носитель, а потом переходить к следующему. Сами файлы на части она не разбивает, поэтому если массив собран из 1 Тб жёстких дисков, будь их хоть 10, вы не сможете записать туда файл объёмом 1.5 Тб. Все параметры, с которыми MergerFS объединяет физические диски в логический том, задаются на этапе монтирования в /etc/fstab, поэтому из командной строки выполняю следующую команду:

nano /etc/fstab

в открытый файл добавляю строку

/mnt/pve/media-disk* /storage/media-merger fuse.mergerfs defaults,nonempty,allow_other,use_ino,cache.files=partial,moveonenospc=true,cache.statfs=60,cache.readdir=true,category.create=msplfs,dropcacheonclose=true,minfreespace=5G,fsname=mergerfs 0 0

как вы видите, в самом начале параметр /mnt/pve/media-disk* указывает, что в общую файловую систему монтируются все доступные диски с именами, начинающимися с media-disk. И не важно сколько их будет при загрузке: 5, 6 или 10: при вылете любого из них, система загрузится и общий том смонтируется в папку /storage/media-merger. Обратите внимание - диск disk-parity-1 сюда не входит. Выполняем команду mount -a и проверяем, что в папке /storage/media-merger свободное место равняется сумме всех включённых в массив дисков.

Рекомендации по настройке связки MergerFS + Snapraid и подробное описание, как всё работает, вы найдёте здесь.

Контейнеры: LXC и Docker, в чём на самом деле разница?

Proxmox, в отличии от Synology DSM, поддерживает контейнерную виртуализацию LXC, но не имеет нативной поддержки Docker. Второй вопрос мы уже решили двумя абзацами сверху, а теперь позвольте пару слов об LXC, если вы ещё не сталкивались с этим типом виртуализации. В интернете есть много статей на тему LXC, из которых вообще не понятно, для чего они нужны, если есть Docker. Конкретно для нашего случая всё совершенно просто.

Docker предлагает вам контейнер как готовое приложение, с готовым набором предустановок и пакетов. Далеко не все полезные программы упакованы в Docker, и вообще могут в нём полноценно работать, а некоторым вообще Docker виртуализация противопоказана, а инструкции для установки есть только для веток Debian и Red Hat. Любые изменения внутри образа контейнера теряются после его перезагрузки, поэтому изменить установочные пакеты не то чтобы нельзя, а муторно.

Куда проще запустить LXC контейнер, и через 10 секунд получить аналог виртуалки, зайти по SSH и установить нужный тебе софт вручную. Контейнер имеет собственный IP-адрес, поэтому вы не заморачиваетесь с доступностью внешних портов и настройкой обратного прокси. LXC контейнеры можно снэпшотить и бэкапить, сохраняя состояние и быстро откатываясь к предыдущим версиям, и в общем-то, какие-то программы можно быстренько тестировать в LXC, чтобы потом либо удалить, либо переупаковать в Docker, либо оставить в LXC как они есть. А общие папки файловых систем хоста можно пробрасывать в LXC контейнер так же, как в Docker (теряя при этом функцию снапшотов).

Вот например, если нужно установить Samba, NFS и iSCSI серверы, то из всех возможных способов, для меня самым простым оказался LXC контейнер с Debian + Webmin. В настройках контейнера в Proxmox даже есть опции Samba и NFS, которые нужно отметить при создании контейнера.

При настройке я перепробовал пару сотен программ, чтобы заменить встроенные сервисы Synology DSM, и я не стану описывать процесс установки, а лишь тезисно опишу что выбрал и почему.

Почему не OwnCloud/NextCloud?

Вообще, пожалуй, Nextcloud способен в большей мере заменить сервисы Synology по принципу «всё-в-одном», и если ваша направленность - настройка пространства для совместной работы с документами, то начать стоит с него. Вы получите весьма нагромождённый софт, но с единой авторизацией пользователей, хорошей поддержкой и приятным интерфейсом. Но, как и любой другой «швейцарский нож», NextCloud изобилует недоделками и отсутствием функций, которые должны быть по умолчанию. Ну вот, например, NextCloud хранит заметки пользователей в чистом .txt файле, без какой-либо защиты, а родного мобильного клиента для них нет и вовсе. И такое на каждом шагу, поэтому я придерживаюсь мнения, что лучше не скатываться к решению «всё-в-одном», а гранулярно подбирать сервисы под задачу.

Что и почему я выбираю на замену сервисам Synology?

Samba/NFS/iSCSI: не мудрствуя лукаво, проще всего установить CentOS LXC контейнере и настроить файловые сервисы через эту платформу, пробрасывая в контейнер тома дисковых устройств и настраивая в виртуалке права доступа для пользователей.

Для управления через WebUI можно использовать Webmin.

Файловый браузер: для меня является определяющим, потому что мне нужен прямой доступ к содержимому общих папок. Внимания достойны Filebrowser из-за своей простоты и Filerun из-за своей навороченности (он поддерживает даже интеграцию c Elasticsearch для поиска по файлам). Второй имеет сложности с лицензированием и неотключаемую корзину при удалении файлов и папок, из-за чего процесс удаления ненужного хлама проходит в два этапа: удаляем сам файл, а затем чистим корзину.

Это может вызвать проблемы переполнения тома, поэтому от Filerun я отказался. Filebrowser устанавливается через Docker, а общие папки в него лучше пробрасывать через символические ссылки symlinks. В этом случае если папка недоступна при загрузке сервера (например, она зашифрована паролем), то после разблокировки вам не нужно будет перезапускать контейнер с Filebrowser.

Стриминг медиатеки на ТВ: здесь проблема, так как основные ветки медиа-серверов представляют собой каталоги по жанрам, рейтингу и т.д. Если просто нужно вывести содержимое папок с фильмами на ТВ, то выбирать приходится между глючным Gerbera и прожорливым Serviio. Второй имеет платную и бесплатную версии, причём фриварная вполне себе способна заменить Synology Media Server. Для каталогизации медиатеки лучше использовать Emby. И Serviio и Emby можно запустить через Docker одновременно и получить два представления одной и той же домашней медиатеки: попроще и посложнее. Plex я не воспринимаю, как ни пытался его начать использовать - не понравился.

Бэкапы самого сервера в облако или на сторонний сервер. Вы удивитесь, но такая простая вещь, как бэкапы, это боль в современном мире свободного ПО. Ближе всего к Synology Hyper Backup подходит программа Duplicati, находящаяся в вечной бета-стадии. Написанная под MacOS, - она запускается через эмулятор, из-за чего дико жрёт ресурсы CPU, и чтобы этого избежать, надо ставить Canary-версии, которые подаются даже не как альфа, а ещё сырее.

В активах программы огромный список поддерживаемых back-end-ов, более-менее нормальный Web-интерфейс и поддержка всех возможных протоколов, в том числе FTP для бэкапа на роутеры с внешними HDD, и S3 для распределённых файловых хранилищ типа Storj. Как и Hyper Backup, она не может делать два бэкапа одновременно.

Бэкапы компьютеров в сети на NAS. Здесь ещё большая проблема, чем в предыдущем случае. Какого-то аналога Active Backup for Business нет и в помине, и более-менее закрыть тему резервирования Windows-машин в том числе через интернет помогает UrBackup, мало известная, но активно разрабатываемая софтина. Эта программа сама не умеет делать дедупликацию и компрессию, но при наличии ZFS на сервере это не проблема: мы можем выбрать и самый современный тип компрессии ZSTD и включить дедупликацию на томе, который пробросим в Docker-контейнер с URBackup.

Этот том нужно шифровать средствами ZFS, поскольку UrBackup хранит данные в открытом виде. Программа поддерживает резервирование томов, файлов и папок, имеет браузер данных и Rescue-диск для восстановления клиентов.

Бэкапы виртуальных машин хоста: здесь очень всё хорошо, у Proxmox есть собственный продукт Backup Server с дедупликацией и инкрементальными копиями ВМ и контейнеров. Восстановлению подлежат как целиком виртуалки, так и какие-то файлы из них через Web-интерфейс. Устанавливается непосредственно на хост или в виртуалку.

Бэкапы виртуалок VMware, Hyper-V и QEMU Linux: здесь всё очень плохо: за бэкапы VMware все хотят денег, и только Vincin Backup в бесплатной версии максимально приближается к Active Backup for Business, но лишь для трёх виртуалок. Да плюс ещё бесплатная версия требует лицензионный ключ, который имеет особенность слетать. Но в целом, этот софт выглядит очень многообещающе, он не такой нагруженный функционалом, как Bacula и не такой примитивный, как Borg. Его проблема в том, что он не поддерживает резервирование с Proxmox и восстановление в него. То есть, перенести виртуалки из ESXi в Proxmox через бэкап на данный момент через него нельзя. Устанавливается в отдельную виртуалку.

Общее рабочее пространство: здесь всё очень хорошо: у Synology эта ветка не развита, а Pydio способна полностью закрыть вопрос общей работы с файлами и шаринга данных между рабочими группами. Устанавливается через Docker.

Сервис заметок: здесь для меня было шоком, что такое развитое направление не породило никакого ultimate-решения, которым можно было бы заменить Synology Notes. Более-менее близко подходит Standard Notes, но в бесплатной версии функционал такой, что не даёт даже загружать фотки, а установка очень сложна, и требует работы через обратный прокси с SSL, то есть через домен, доступный из интернета. Остальные сервисы, либо не заточены на безопасность и шифрование, либо не устанавливаются на локальный сервер… Очень неплохо выглядит Joplin, но он не имеет Web-интерфейса, а локальный клиент хранит пароли шифрования в открытом виде в SQLite базе. Для Web-доступа шикарно выглядит Trilium, но он одно-пользовательский и без мобильного клиента. В итоге я остановился на Bitwarden в версии Vaultwarden, оптимизированной для Docker-установки, который использовал для защищённых заметок и паролей. Простые же заметки, не содержащие важных данных, отдал на откуп Joplin.

VPN и Firewall - здесь всё прекрасно: я уже несколько лет работаю с PFSense, и эта операционная система в виртуалке работает на Proxmox без проблем. Если в сервере один ETH порт, то трафик можно разделять через VLAN. Установка PFSense позволит отказаться от встроенного Firewall в Proxmox, который кстати доступен индивидуально для каждой виртуалки или контейнера, а можно использовать и то и другое.

Доступ через облако (аналог Quickconnect). Я считаю, что если сегодня можно купить 1-ядерную виртуалку в облаке с выделенным IP адресом менее чем за 1$ в месяц, чтобы поставить туда PFsense, подключаясь к нему через VPN или проксируя трафик через NGINX, то при таких ценах искать и настраивать аналог Quickconnect с глюками, присущими бесплатному Linux-ПО я даже не стану.

Мониторинг S.M.A.R.T., температур и вентиляторов и различных метрик. Здесь всё прекрасно: во-первых, у Proxmox есть встроенный экспортер в InfluxDB и Graphite, во-вторых сбор метрик и логов очень хорошо развит на стеке Prometheus + Grafana + Loki + Promtail, и без проблем можно получить и впечатляющие графики, и быстрый поиск по логам и оповещения по алертам. Сюда же можно интегрировать InfluxDB + Telegraf, быстрый SyslogNG, сборщик SNMP метрик и IPMI. Всё нативно доступно через Docker с тоннами документации по настройке и установке, и на выходе можно получить исчерпывающий анализ работоспособности системы с гранулярностью до каждого контейнера, каждого тома на диске, каждого параметра S.M.A.R.T и анализировать как во встроенных, так и в сторонних программах.

У Synology ничего подобного нет, и сравнивать не с чем.

Видеонаблюдение - провал. Я не смог найти достойной замены для Surveillance Station среди свободно распространяемого ПО.

Торрентокачалка - ну куда же без любимых торрентов. Здесь я выбрал qBitTorrent с Vue интерфейсом - выглядит он очень современно, доступен в Docker, активно разрабатывается и поддерживается сообществом. Имеет очень удобную функцию тегов и категорий, благодаря чему не нужно каждый раз бегать по каталогам в поисках, куда скачать фильм или сериал. Этот проект имеет существенную проблему: он потребляет около 2 Гб ОЗУ, и спокойно может скушать и 7 и 8 Гб памяти. Уплотнение на уровне Proxmox весьма помогает, но полностью проблему не решает. На фоне transmission, потребляющего 200-250 Мб памяти, это конечно, ужасная особенность, исправлять которую разработчики не собираются.

Сейчас в интернете модны так называемые arr-стеки, сочетающие автоматические поисковики сериалов, фильмов, музыки и иного контента с торрентокачалками. Я попробовал - мне «не зашло», но ставится всё из Docker и настраивается весьма несложно.

Снапшоты - здесь не всё так гладко, как хотелось бы. Для виртуальных машин функция мгновенных снимков хорошо интегрирована на уровне Proxmox, но вот во всём, что касается файловой системы, вам придётся полагаться на возможности ZFS, и лучше всего использовать сторонние скрипты, настраивающиеся через CLI, такие как Sanoid и Syncoid.

Наводим красоту

Эту часть я пишу уже спустя несколько месяцев после того, как обкатал NAS на себе. Поначалу мне казалось важным иметь единую точку входа в пространство веб-сервисов, каждый из которых представляет собой отдельную программу. Для этой цели лучше всего подходит Organizr, который умеет поддерживать авторизацию в сторонних сервисах, так что единожды введя пароль в файловый браузер, вы в дальнейшем избавляетесь от необходимости вводить его заново. Плюс, Organizr поддерживает вставки HTML блоков, а это даёт возможность наполнить его интерфейс графиками, которые рисует нам Grafana из стека мониторинга.

Как бы не так. Во-первых, сразу возникает проблема с httpS протоколом, поскольку помешанные на безопасности браузеры типа Firefox не дают открывать web-сайты через iFrame. Во-вторых, ну надо понимать, что Web-морда здесь - в основном для таких простых задач, как копирование файлов или добавление торрента, а покуда львиная часть настроек СХД осуществляется через CLI, то в командную строку вам и дорога. В итоге, какую-то более-менее современную красоту через Organizr я, конечно, навести смог, но вот пользоваться ей так и не привык.

И ещё раз акцентирую внимание читателя на том, что абсолютно все настройки я делаю без особой оглядки на безопасность. Такие шаги как использование https или 2-факторной аутентификации значительно усложнят интеграцию в режиме одного окна.

Собственные впечатления после нескольких месяцев работы

Технологически созданная машина значительно обгоняет NAS-ы Synology, и даёт безграничные возможности для роста и расширения - это приятно. Во всём, что касается хранения данных, снэпшотов, запуска сервисов и виртуалок мы ушли далеко вперёд от DSM, но упустили из виду два момента, которые абсолютно важны для любого современного программно-аппаратного комплекса.

Первый, как уже было сказано выше, это безопасность. Выбирая сборную солянку из сторонних пакетов, мы несоизмеримо увеличиваем площадь возможной атаки за счёт уязвимостей в непроверенных дистрибутивах. В принципе, и Docker и LXC и KVM дают нам дополнительные слои изоляции, используя которые мы можем запереть наши сервисы в специально созданных сетях и дисковых томах. Как простой пример - можно вынести всё управление в отдельную сеть, а сервисы - в открытую сеть. На Synology это сделать проблематично.

Второй момент - это потенциальная нестабильность устанавливаемых пакетов. Самый простой пример: я три месяца использовал SMB-сервер в LXC контейнере на Ubuntu, а на четвёртый месяц столкнулся с ситуацией, когда у него происходит утечка памяти и процесс убивается OOM-менеджером. Пришлось перенастраивать контейнер на дистрибутив Centos 8, где утечек памяти нет, но по умолчанию отключена возможность service discovery для SMB, и её нужно включать вручную. И вот такие моменты проявляются на каждом шагу: чем больше ты делаешь, тем больше внимания требует машина. Какие-то сервисы могут начать жрать память или диск, кому-то нужно вручную прописывать ротацию логов… настройка ACL - это боль, ограничить объём созданной папки… да легче разбить диск на разные разделы и ограничивать уже их.

Что касается дисковой подсистемы, то ZFS даёт потрясающие возможности по настройке, но как и любая другая FUSE, как и BTRFS в Synology, при определённых условиях она может «замолчать» на пару минут, отключив доступ сразу ко всем ZFS ресурсам для всех сервисов на хосте. Эта проблема есть и у TrueNAS и у Synology, и обходится она только одним методом - использованием аппаратного RAID контроллера там, где дисковая нагрузка способна положить FUSE на лопатки.

Поскольку мы не заморачиваемся оптимизацией ресурсов, нужно быть готовым к тому, что каким-то сервисам проще выделить больше памяти и ядер CPU, чем искать способы снизить их прожорливость, и там где Synology обходится 4-х ядерными процессорами с 8 Гб ОЗУ, нам потребуются 8-ядерные с 16, 32 Гб памяти или даже больше.

Выводы

С точки зрения компании, замена Synology потребует привлечение специалиста с глубокими знаниями Linux, виртуализации и файловых систем. Обычный сисадмин уровня «почистить мышку, перегрузить принтер, настроить домен» - не справится. Наибольший экономический эффект даст замена многодисковых топовых решений с последующей консолидацией ресурсов на новом узле. Здесь имеет смысл собирать большие СХД на десятки и сотни жёстких дисков, смешивая ZFS и аппаратный RAID, и вы никогда не упрётесь в ограничения железной платформы. Чем сложнее, чем требовательнее ваша инфраструктура, тем больше плюсов вы получите, отказываясь от брендового решения в пользу Proxmox. В дальнейшем можно планово выводить из эксплуатации VMware, Veeam и Hyper-V, снижая ежегодные траты на лицензии.

Однако, заменить Synology на 100% бесплатным софтом не удастся, и что-то скорее всего придётся покупать или пиратить. При нарастающих рисках назавтра остаться без гарантии, без обновлений пакетов и без возможности купить и привезти новое устройство, вы должны сами для себя решить, нужно ли это…

Михаил Дегтярёв (aka LIKE OFF)
07/01.2023


Похожие статьи:

Коротко и ясно: какой тип установки Nextcloud выбрать - LXC, VM или Docker?

Nextcloud является популярным решением для создания собственного облачного хранилища данных. В статье мы рассмотрим различные способы установки Nextcloud, их плюсы и минусы. Для начала, есть несколько способов установки Nextclou...

5 бесплатных сервисов для вашего docker сервера

В этой статье мы рассмотрим 5 программных сервисов, которые вы можете установить через Docker для облегчения обслуживания ваших серверов. Этот программный стек - Must Have для небольшой инфраструктуры, использующей Docker (Swar...

На что можно заменить Synology в условиях санкций. Часть 1: выбираем устойчивую платформу.

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

Эксклюзивное интервью c генеральным директором Synology GmbH, Джеффри Хуаном

Внедрит ли компания Vendor Lock, как компания пережила майнинговую лихорадку, как смотрит на Web3 и децентрализацию, на ZFS и RAID 2.0+, будет ли DSM продаваться отдельно? Об этом и других темах беседуем с генеральным директором...

Неприступный NAS: настраиваем безопасность и защищаем Synology

Современный NAS вполне способен защитить себя от большинства атак и гарантировать не только непрерывность сервиса, но и неприкосновенность хранимых данных. Даже при осуществлении минимальных настроек и следованию рекомендаций производителя, ...