Введение
Если не слишком углубляться в технические детали, то ZFS представляет собой продвинутую файловую систему с упором на обеспечение отказоустойчивости и поддержку больших объемов данных (формальные ограничения на размеры файлов и т.д. на данный момент, можно сказать, недостижимы). А если все же углубиться, то можно добавить, что ZFS заменяет собой технологии RAID, менеджера логических томов (LVM) и ряда других, а также использует принцип copy-on-write (CoW). Сильно упрощая, это означает, что при изменении файла создается его новая копия вместо перезаписи, как в «традиционных» файловых системах. Это в свою очередь обеспечивает различные «плюшки» типа быстрого создания снимков, но и сопутствующие проблемы конечно тоже возникают... Давайте наверное уже «выныривать» обратно.
Даром, конечно, все эти технологии не обходятся, в результате мы имеем очень четкое системное требование в виде 8 гигабайт ОЗУ, а также «настоятельные рекомендации» применять память ECC (хотя такая память для любой файловой системы предпочтительнее) и мощные процессоры (с упором на производительность на ядро). Из «потребительского» сегмента это получается что-то типа AMD Ryzen (не самые дешевые процессоры так то), ну а цены на Intel Xeon сейчас стартуют от 20 тысяч рублей (в смысле один только процессор и по крайней мере там где я смотрел).
Есть еще нюансы с программной реализацией; считается, что во FreeBSD она лучше (а может быть и наилучшая), хотя под Linux тоже конечно есть. Таким образом, TrueNAS основывается именно на FreeBSD. Впрочем под Linux у ZFS есть конкурент в виде Btrfs, которая хоть и проще, но и работает вроде как быстрее. Однако Btrfs – тот еще холивар, так что сюда тоже предлагаю особо не лезть.
Хотя все же немного влезу. Одним из недостатков ZFS является невозможность добавить диск к пулу RAID-Z (в отличие от конкурента, хотя там, в свою очередь raid56 не готов к использованию на «производстве» ). Пул, если честно, довольно самоочевидное понятие… Опять же «на пальцах» – берем нечто физическое (диск, раздел диска, файл (!?), из него (или них) делаем виртуальное устройство (vdev), например обычное для хранения данных, и наконец эти все vdev образуют пул, что в конечном итоге выглядит как файловая система. Как-то так.
Что такое RAID-Z? Это аналог RAID5 или RAID6, что, в свою очередь, можно представить следующим образом: берется три диска (для RAID5 или RAID-Z1), а данные на них распределяются таким образом, что выход из строя одного из дисков не влечет за собой потерю этих самых данных, т.е. как бы спокойно заменяем вышедший из строя диск и работаем дальше. Допустим я вижу, что место заканчивается (а в случае CoW за этим надо особенно тщательно следить), покупаю четвертый диск… И тут приходится решать: то ли каким-то образом куда-то копировать все содержимое пула и пересобирать его «с нуля» на четырех дисках, либо покупать не один, а сразу три (!!!) диска на замену. Что-то по-моему лучше уж тогда еще один пул сделать!
Я все же решил немного прикинуть по времени, допустим мы все же хотим скопировать наш гипотетический RAID-Z1 «в интернет» (Amazon S3? Mega? Backblaze вряд ли, там на первый взгляд непонятно, как сразу все забрать), 5 ТБ для ровного счета (три диска по 3 ТБ в RAID-Z1 дают где-то до 6 ТБ места – объем одного диска уходит на контроль четности) и условно-стандартный 100-мегабитный интернет, т.е. примем скорость передачи данных в 10 мегабайт в секунду. 5 терабайт, грубо, 5000000 (пять миллионов) мегабайт, итого в лучшем случае на передачу данных (в одну сторону!) уйдет округленно 139 часов или почти 6 суток. Обратно — еще 6, а если скорость брать ближе к 5 мегабитам, так вообще, на все про все почти месяц. Так себе развлечение… Нужен, конечно, гигабит, да еще чтобы этот самый гигабит «облако» поддерживало.
Есть еще один недостаток, характерный непосредственно для TrueNAS – это невозможность самостоятельной разметки загрузочного диска. Поскольку сама по себе операционная система занимает довольно мало места, получается, что надо или искать какой-то крайне небольшой диск (16-32 гигабайт, такие SSD сейчас наверное только у китайцев можно заказать), или сначала устанавливать систему на флешку и «клонировать» ее на «большой» диск с последующим созданием дополнительного пула на свободном месте. Второй способ я детально рассмотрел отдельно (хотя, разумеется, все это никоим образом официально не поддерживается и вообще говоря опасно в случае ошибки при вводе команд).
Что ж, надеюсь указанные недостатки вас не отпугнули, а может быть и преимущества ZFS их перевешивают. Но в любом случае систему TrueNAS CORE я считаю очень достойным кандидатом на ознакомление хотя бы в виртуальной машине, созданием которой мы сейчас и займемся.
Создание виртуальной машины
Я использовал VirtualBox 6.1.20, а актуальной версией TrueNAS CORE при написании статьи была 12.0-U3 на основе FreeBSD 12.2. Для скачивания образа со страницы загрузки нужно нажать малозаметную ссылку «No Thank You, I have already signed up» (если, конечно, вы не хотите оставлять им свой e-mail или иным способом регистрироваться).
В VirtualBox я пользуюсь «экспертными» режимами, так как-то быстрее. При создании машины зададим следующие параметры: тип – BSD, версия – FreeBSD (x64), объем памяти – не менее 8192 МБ (об этом явно говорит документация по TrueNAS).
Объем диска предлагается равным 16 ГБ, так и оставим.
Переходим в настройки машины, раздел «Система». Я предлагаю поменять чипсет на ICH9 и поставить флаг «Часы в системе UTC». Манипулятор курсора оставляем в значении «PS/2 мышь», поскольку установщик системы текстовый, в отличие от всяких модных linux’ов.
Вкладку «Дисплей» пропускаем и переходим к носителям. Созданный диск оказался подключенным к IDE-контроллеру, в рамках знакомства можно так и оставить. Добавим еще один контроллер, пусть наверное все же будет LsiLogic (Default SCSI), чтобы имена дисков отличались. Я позволю себе на скриншоте отметить кнопки, где добавляется контроллер, а где – диск к контроллеру, сделано возможно не самым очевидным образом.
Добавляем два (зеркалирование) или три (пресловутый RAID-Z1) диска к контроллеру. Теоретически можно и один, но в этом случае при создании пула веб-интерфейс TrueNAS ругается на чем свет стоит. Объем желательно указать отличающийся от системного, и главное чтобы он был одинаковый для всех добавляемых дисков. Диск добавляется с помощью окна выбора (как видите, я уже насоздавал всяких дисков изрядное количество):
По одноименной кнопке создаем новый диск, например на 60 гигабайт, и выбираем его. Поскольку используется «динамический» формат хранения, за место на реальном жестком диске (хоста) переживать не стоит.
По аналогии создаем еще два диска (для определенности, чтобы сделать RAID-Z1), в итоге должно получиться следующее:
Аудио отключаем и переходим в «Сеть». Проще всего использовать режим сетевого моста, однако есть важный нюанс: чтобы работал DHCP для клеток (которые jail, что можно для краткости представить как собственный механизм виртуализации FreeBSD) необходимо разрешить так называемый неразборчивый режим в дополнительных настройках.
USB также отключаем. Таким образом, конфигурация виртуальной машины получается следующей:
Установка TrueNAS CORE
Запускаем виртуальную машину, нажимаем F12 и монтируем установочный образ на виртуальный оптический привод, после чего клавишей c загружаемся с него.
Через пару мгновений появится загрузочное меню, в котором по сути можно ничего не делать или нажать Enter для экономии нескольких секунд времени.
Далее загрузится консольное меню. Нам нужна именно установка, поэтому нажимаем Enter.
На втором шаге выбираем (стрелками и пробелом) загрузочный диск (в нашем случае – ada0). Дисковые устройства во FreeBSD именуются иначе, чем в Linux. IDE (и, к слову, SATA) называются ada, SCSI – просто da. Enter для перехода к следующему шагу.
На следующем шаге запрашивается подтверждение установки операционной системы на выбранный диск, поскольку с него будет предварительно удалена таблица разделов и, как следствие, данные (при наличии). Также здесь как раз говорится о том, что загрузочный диск нельзя использовать для пользовательских данных, о чем я упоминал во введении.
Далее задаем пароль root (это unix’овый суперпользователь, как я когда-то его охарактеризовал).
Подтверждаем «старомодный» режим загрузки (Boot via BIOS). Пользуясь случаем, еще раз анонсирую статью про установку TrueNAS на флешку с последующим переносом – там-то как раз используется загрузка UEFI.
Начинается установка TrueNAS. Как видим, процесс установки весьма прост, пожалуй главное в нем не ошибиться с выбором загрузочного диска и запомнить пароль root. Через некоторое время вы увидите сообщение об успешном окончании установки:
По нажатию Enter осуществляется возврат к консольному меню, на этот раз выберем перезагрузку.
При перезагрузке нажмите F12, чтобы в спокойной обстановке «изъять диск из привода», и загрузитесь с Primary Master (1). Стоит отметить, что первая загрузка TrueNAS длится довольно долго в частности из-за генерации неких параметров DH. Когда же процесс закончится, появится консольное меню и нам любезно подскажут текущий IP для веб-интерфейса.
На этом установка завершена.
Базовая настройка
Открываем веб-интерфейс по IP-адресу, полученному виртуальной машиной и входим под root (используя указанный на этапе установки пароль). Нас встречает весьма красивый дашборд (а точнее даже некое приветственное окно), правда в нем пока нет пулов.
Get Started и сразу же переходим в System – General. Укажем правильную временную зону (Timezone) и отключим сбор телеметрии (куда ж без нее, родимой), сняв флаги Crash reporting и Usage collection. Теоретически можно выбрать заодно и русский язык, но перевод не полный, так что на мой взгляд лучше оставить английский.
Обратите внимание на настройки почты (General – Email). Можно указать как произвольный SMTP-сервер, так и воспользоваться учетной записью Google (GMail OAuth).
На виртуальной машине, впрочем, особого смысла настраивать почту нет, хотя в реальности такая настройка нужна для работы оповещений (Alert Services и Alert Setting, последний раздел, кстати, весьма обширный).
Создадим наконец основной пул для данных. Перейдем в Storage – Pools и добавим пул (Add). На первом шаге у нас пока выбора-то и нет, поскольку импортировать нечего. Оставляем Create new pool (создать новый пул) и нажимаем соответственно Create pool.
Появится окно Pool Manager. Можно нажать Suggest Layout, на трех дисках создастся Raid-z (что и предполагалось), останется лишь ввести имя. В документации к TrueNAS почему-то предлагают tank, видимо от первоначального значения этого слова – бак, цистерна. Должно получится примерно так:
По нажатию Create пул, соответственно, создается, только сначала необходимо подтвердить свои намерения. Смысл в том, что в общем случае при наличии каких-то данных на дисках они будут безвозвратно утеряны.
Теперь, когда пул создан, можно приступать к делу.
Samba
И первым делом организуем общую сетевую папку для Windows. Для начала нам потребуется создать пользователя, поскольку под root «шара» не работает. Переходим в раздел Accounts – Users. Нас однократно предупредят о том, что по умолчанию в списке из системных пользователей (коих во FreeBSD, как и Linux, достаточно много) отображается только root (собственно они наверное если и потребуются, то только в крайне специфическом случае). Добавляем пользователя (Add), появляется довольно длинное окно, которое для скриншотов я даже разбил на две части.
Впрочем, несмотря на казалось бы значительное количество параметров, большинство значений по умолчанию нас на данном этапе вполне устраивают. Заполняем Full Name (полное имя, например Samba Share), Username (имя пользователя, он же логин – smbshare), задаем пароль (Password и Confirm Password).
В оставшейся части окна по сути нечего заполнять, хотел лишь обратить внимание на параметр Home Directory, значение которого по умолчанию /nonexistent. Это означает, что домашний каталог для пользователя не будет создан. Флаг Samba Authentication уже установлен, что нам и требуется.
Теперь нужно создать так называемый датасет, или файловую систему ZFS, как это названо в руководстве по FreeBSD. Возвращаемся в Storage – Pools и в меню пула выбираем Add Dataset.
В появившемся окне заполняем имя (пусть будет как и пользователь – smbshare), а в Share Type выберем SMB. Параметр Case Sensitivity (чувствительность к регистру) должен автоматически поменяться на Insensitive (нечувствителен) и заблокироваться. Остальные опции «наследуются» от самого пула.
Наконец переходим в Sharing – Windows Shares (SMB). Опять же у нас пока никаких «шар» нет, добавляем. Выбираем путь – /mnt/tank/smbshare. Назначение (Purpose) оставим по умолчанию (Default share parameters), хотя там есть к примеру весьма интересный вариант «SMB WORM», когда файлы переходят в режим «только чтение» через 5 минут.
Если раскрыть Advanced Options, можно увидеть флаг Allow Guest Access (разрешить гостевой доступ). В подсказке к этому параметру говорится, что гостевой доступ отключен в Windows 10 версии 1709, но у меня-то 20H2! Давайте включим.
Поскольку сервис SMB по умолчанию не запущен, система предложит его включить. Мы, естественно, согласимся. Вот только наша «гостевая шара» пока что работать не будет, так как гость не сопоставлен с пользователем системы. Переходим в раздел Services, «редактируем» сервис SMB, раскрываем Advanced options и выбираем в поле Guest Account нашего пользователя smbshare. Вот теперь (после сохранения), все должно заработать.
Проверяем:
Кстати если не устраивает имя компьютера (truenas) или рабочая группа, то это меняется как раз в настройках сервиса SMB.
Торренты
Одной из типовых задач домашнего сервера является «качалка». Вообще говоря, мы плавно переходим к тем самым клеткам, которые FreeBSD jail и плагинам, которые суть преднастроенные jail. Итак, при первом переходе в один из этих разделов (Plugins или Jails), система запрашивает пул для их хранения. В нашем случае выбор очевиден.
Для информации – в результате будет создан датасет iocage и несколько вложенных.
Возвращаемся к плагинам. Торренты находятся в коллекции (Browse a Collection) Community, соответствующих плагинов как минимум два (если я какие-то не пропустил): qbittorrent и Transmission. Воспользуемся последним.
Нажимаем Install и соглашаемся с предупреждением (поскольку плагин неофициальный). Открывается окно настройки плагина, в принципе пока достаточно лишь ввести имя соответствующей клетки. Пусть будет transmission:
Осталось набраться терпения, пока создается клетка, ведь в немалой степени разворачивается отдельная установка FreeBSD. После установки будет выведена краткая сводка, где чего что.
В общем-то уже что-то можно качать – адрес веб-интерфейса transmission нам вывели, либо можно нажать Manage, если раскрыть плагин.
Качать-то он может что-то и скачает, а нам-то как потом этим добром воспользоваться? Общая идея – с помощью mount points (точек монтирования) сопоставить указанную директорию загрузки с общей папкой.
Возвращаемся в Storage – Pools и создаем новый датасет, для определенности назовем его Downloads, Share Type – SMB. Переходим в Sharing – Windows Shares (SMB) и добавляем общую папку для вновь созданного датасета. Allow Guest Access на сей раз предлагаю не взводить (как оно и есть по умолчанию).
Переходим в Plugins (или Jails), останавливаем transmission (кнопка Stop) и открываем точки монтирования (Mount points). Добавим точку (Actions – Add), исходный путь (Source) – /mnt/tank/Downloads (датасет общей папки), назначение (Destination) – /mnt/tank/iocage/jails/transmission/root/usr/local/etc/transmission/home/Downloads (именно так выглядит полный путь к папке загрузок, согласитесь, спрятался весьма глубоко).
Давайте наконец-то попробуем что-нибудь скачать, например GIMP. Стартуем плагин, переходим в веб-интерфейс Transmission и добавляем торрент:
Скачал!
Проверяем из Windows. При попытке открытия Downloads, как и ожидается, появляется запрос имени пользователя и пароля, а в самой папке нас ждет установщик GIMP.
На всякий случай скажу, что при настройках по умолчанию файлы можно удалить по сети, что для действующих торрентов нежелательно. Лучше после копирования файлов в нужное место удалить торрент вместе с загруженными данными из веб-интерфейса (или программой удаленного управления, например Transmission Remote GUI).
Медиатека и DLNA
Для организации медиатеки есть официальный плагин Plex Media Server и неофициальный Emby Server. Сам-то я пользуюсь Emby; от использования Plex’а в немалой степени отталкивает необходимость регистрации. Поэтому пойдем по второму варианту. Кстати плагинов два: один просто Emby, а другой – Emby Server. Первый работает под NAT, другой – под DHCP, выберу второй.
На сей раз сводка какая-то не слишком информативная, разве что адрес веб-интерфейса показывают.
Переходим, собственно… Запускается мастер установки. Выберем язык (английский).
Создаем пользователя (к счастью, локального).
На следующем шаге предлагается добавить библиотеки, и это своего рода попандос, поскольку настроек у библиотек — куча. Сначала вообще-то надо было датасеты определить, поэтому пока создание библиотек пропустим.
Укажем русский язык и Россию для метаданных (к примеру информации о фильмах). Отключаем удаленный доступ. Принимаем пользовательское соглашение.
Фух. Вроде бы готово. Входим под созданным пользователем (emby):
И поскольку библиотеки еще не созданы, главный экран практически пуст.
Закроем пока Emby, остановим плагин и создадим соответствующие датасеты. С точки зрения банальной эрудиции нам скорее всего нужен один «общий» датасет (emby) и по одному вложенному для каждой библиотеки (чтобы достаточно жестко зафиксировать структуру), к примеру movies. И чтобы это все вновь было доступно по сети, а иначе как заливать-то.
При создании основного датасета предлагаю поменять режим сжатия на ZLE (т.е. сжатие только последовательностей нулей), поскольку содержимое медиатеки и так уже все пожато алгоритмами типа AVC (а может быть у кого-то и HEVC, хотя в браузерах такая страсть вроде бы пока еще не воспроизводится). Поскольку при создании датасета emby я указал Share type – SMB, то при создании вложенного датасета (кстати не забудьте установить нечувствительность к регистру) система предложила сразу включить ACL. Поставлю «открытую» предустановку.
Хотя вообще-то права модификации «для всех» наверное чересчур. Исправим положение: изменим на read и добавим права модификации пользователю smbshare. По логике по крайней мере как-то так должно быть.
«Проторенной дорогой» добавляем очередную общую папку emby с настройками по умолчанию. Я сделал именно целиком на /mnt/tank/emby; не исключено, что лучше было бы «шарить» не общий датасет, а каждый «библиотечный» по отдельности.
Теперь надо туда какой-нибудь фильмец закатать, пусть будет «Чудо-женщина». Я купил в свое время Blu-Ray и сделал BDRip с дополнительными материалами. Даже форсированные субтитры в текстовом формате подготовил.
Кстати я поэкспериментировал с удалением всей папки movies (из Windows). При текущей настройке она как бы удаляется, но при обновлении опять появляется, правда без своего содержимого. Так что датасет как таковой вы таким способом не удалите, но вот данные внутри – запросто. То есть с этой точки зрения наверное отдельные общие папки для каждой библиотеки могут быть предпочтительнее, так что будьте внимательны!
Добавляем точку монтирования для клетки emby. Точнее это придется делать для каждого созданного датасета для библиотек, с одной общей точкой монтирования «не прокатило». Думаю на этот раз в качестве пути назначения идеально подходит media, вручную подпишем /movies (если вы выбрали /media щелчком). Иными словами, я предлагаю путь назначения /mnt/tank/iocage/jails/emby/root/media/movies
Коротко обсудим структуру файлов для хранения фильмов. Базовым вариантом являются файлы с названием фильма и годом выпуска, например это мог быть просто отдельный файл Чудо-женщина (2017).mkv
Фактически можно и без года, только тогда возрастает вероятность перепутать фильмы, если существует несколько фильмов с одинаковым названием. Кстати «е» и «ё» с точки зрения поиска по базе разные буквы, я на этом периодически попадаюсь.
Можно достаточно произвольным образом группировать файлы в папки, например на реальном сервере я их разбил на жанры для samba-совместимости, а внутри жанров у меня и франшизы периодически встречаются. Если же фильм представлен не одиночным файлом, а набором, то соответственно создается папка с названием фильма и годом выпуска и туда все «складывается». По идее-то имя основного файла фильма должно совпадать с названием папки, но в принципе Emby определяет фильм и так.
Как вы видели на скриншоте, я создал различные подпапки – deleted scenes, extras и featurettes. В общем-то такое деление опять же больше для меня, поскольку Emby это все объединит в раздел Extras на странице фильма. В руководстве описано намного больше возможностей, например фильм может быть разбит на части (как когда-то разбивали по 700 мегабайт, чтобы можно было записать по частям на CD), иметь несколько версий (допустим театральную и режиссерскую, или несколько разрешений), можно добавлять субтитры, поддерживается структура DVD (VIDEO_TS) и Blu-Ray (BDMV, разумеется только незащищенных от копирования) и т.д. и т.п.
Итак, запускаемся и переходим в панель управления сервером («шестеренка» в меню Emby). Открываем раздел Server – Library и добавляем библиотеку. Наконец-то стала доступной наша Чудо-женщина (в смысле /media/movies с точки зрения сервера Emby).
При создании библиотек я предпочитаю отключать отслеживание изменений (флаг Enable real time monitoring) и самостоятельно обновлять библиотеки после загрузки новых файлов.
В остальные настройки углубляться не будем, хотя там конечно много интересного (и это при скрытых расширенных настройках!). После добавления библиотеки Emby проводит ее сканирование, в результате мы должны увидеть фильм на главной.
Вроде все на месте… Да вот только в моем случае почему-то ничего не воспроизводилось:
Смотрим логи (Advanced – Logs), открываем основной (embyserver.txt).
И обнаруживаем в нем кучу ошибок, связанных с ffmpeg. Например такую:
2021-04-28 09:20:10.177 Error FfmpegManager: ProcessRun 'ffmpeg -hide_banner -version': Error starting Ffmpeg
Стыдно, товарищи! ffmpeg забыли установить! Впрочем это дело поправимое, открываем консоль клетки emby и, собственно говоря, доустанавливаем (pkg – пакетный менеджер FreeBSD):
# pkg install ffmpeg
Пример вывода (нужно подтвердить, естественно):
На всякий пожарный перезапускаем плагин, а также нужно заново просканировать библиотеку (Scan Library Files, можно прямо с главной страницы, у библиотек в правом нижнем углу есть кнопка меню).
Вот теперь все отлично.
Осталось разобраться с DLNA, которое на самом деле уже включено по умолчанию (Devices – Dlna).
Единственный момент, в обзоре сети Windows этот самый DLNA не проявляется (в отличие от MiniDLNA, установленного на моем реальном сервере), но, к примеру, в мобильном VLC вот она, зеленеет (вопрос, конечно, почему там не сереет TRUENAS, но позволю себе оставить эту проблему нерешенной).
Личное облако Nextcloud
Такого, кстати, на моем реальном сервере (пока?) нет, однако поскольку разработчики TrueNAS предоставляют официальный плагин, давайте им воспользуемся.
По умолчанию предлагается режим NAT, что на мой взгляд несколько странно. Будем надеяться, разработчикам виднее, так что менять не будем. Как обычно, задаем имя клетки (nextcloud).
На сей раз сводка весьма длинная, хотя из полезной информации там пожалуй опять же только адрес веб-панели.
Куда более важно открыть заметки (Post Install Notes), где можно посмотреть параметры доступа (в частности пароль админа). На всякий случай замазал пароли, хотя на вид они скорее всего генерируются для каждой установки.
Что ж, давайте перейдем в панель Nextcloud и войдем под указанным логином (ncadmin) с соответствующим паролем. Сначала конечно же открывается некий вводный тур. Когда мы его прощелкаем (хотя я ни в коем случае не отговариваю вас от его внимательно изучения), то увидим, что некий стартовый набор файлов в облаке уже присутствует, а в уведомлениях предлагается установить несколько приложений.
Фактически у нас открылась страница виджетов. Быстренько пробежимся по остальным разделам веб-интерфейса (это, откровенно говоря, малозаметные иконки слева вверху). «Файлы» предоставляют достаточно типичный, как мне кажется, интерфейс работы с ними, похожий на тот же Dropbox.
Фотографии – соответствующий специализированный раздел, изначально они выводятся с группировкой по месяцам.
Наконец, в разделе «События» отображаются… Они и отображаются. На начальном этапе события в основном связаны с созданием файлов.
Установим десктоп-клиент (автозамена «пророчески» мне тут предложила вариант «дефектоскоп-клиент» ) для Windows. Переходим в настройки (пункт в меню пользователя), раздел «Клиенты для ПК и мобильных устройств», там есть ссылки на скачивание.
Хм, установщик для Windows занимает 85 «метров». Многовато, как по мне, но что не сделаешь ради искусства. Установка в принципе стандартная (Next, Next…), в конце попросят перезагрузиться. Надо так надо, после перезагрузки запускаем клиент:
Сервер уже вроде как настроен, поэтому таки Log in to your Nextcloud (входим в наше облако), указав ссылку на веб-интерфейс. Происходит переход на сайт, где нужно подтвердить добавление устройства входом в систему.
Вообще-то мы уже вроде как под админом зашли, скорее всего поэтому сразу же появляется кнопка «Разрешить доступ». Должно отобразиться сообщение «Аккаунт подключен» и через несколько секунд активизируется клиент:
И вот тут есть интересная возможность, которой вроде бы нет у «обычных» облаков: «Использовать виртуальные файлы вместо загрузки». В локальной сети теоретически можно было бы так и поступить, однако скажем на ноутбуке, который вы можете куда-то брать с собой, лучше синхронизировать все (Synchronize everything from server).
Справедливости ради, когда я выбрал «виртуальные файлы», получил кучу ошибок. Например если зайти в параметры приложения:
Так что пришлось поддержку виртуальных файлов отключить. Кстати по умолчанию папка синхронизации создается в профиле пользователя (C:\Users\...\Nextcloud), что на мой взгляд не совсем (или даже совсем не) хорошо. Так что предлагаю отключить синхронизацию этой папки совсем и создать новую папку (команды изменения местоположения я не обнаружил), хотя бы D:\Nextcloud какой-нибудь.
Сопоставляем, естественно, с корнем (/). Наученный горьким опытом, виртуальные файлы отключил.
Так, давайте что-нибудь создадим для контроля. В «проводнике» прямо в левой колонке появляется Nextcloud; я добавил «Новый текстовый документ» и папку «Новая папка».
Галки, отображающие успешный статус синхронизации, появились, проверяем в веб-интерфейсе:
Есть такая партия! Для контроля создадим новую папку и файл в веб-интерфейсе и проверим на локальном компьютере. Кстати при создании текстовых файлов можно выбрать шаблон, к тому же поддерживается форматирование с использованием markdown. На компьютер, естественно, «прилетело», так что все работает (не стал делать скриншот).
Что хотелось бы добавить. Разумеется, дело банальной синхронизацией файлов не ограничивается, ведь для Nextcloud разработано большое количество приложений – одних только рекомендуемых несколько десятков.
Справедливости ради, должен отметить, что хотя плагин (в смысле Nextcloud для TrueNAS) и официальный, со стороны Nextcloud (уже как сервиса) есть замечания (если, к примеру, зайти в «Общие сведения» в разделе «Параметры сервера» настроек). Ладно бы HTTPS, но вот например MySQL – устаревший. Так что для реального использования облака, особенно вне локальной сети, нужно его еще долго и упорно настраивать, но пожалуй для знакомства это уже будет чересчур.
Что осталось за кадром
Как пропатчить установить KDE под FreeBSD. Я конечно же не мог не пройти мимо известного мема и таки «накатил» теперь уже 5-ю KDE на FreeBSD 13 (разумеется в VirtualBox). Делается это в принципе за несколько команд, поскольку данное окружение рабочего стола присутствует в виде пакетов. Результат, впрочем, получился на мой взгляд достаточно сомнительным, да и кое-какие вопросы у меня остались, так что вряд-ли я буду делать об этом статью. Опять же, в современных условиях FreeBSD да еще и ZFS на рабочей станции (или даже домашнем компьютере)… Если не возникнет проблем с железом (в первую очередь с видеокартой в данном случае), то все равно наверное получится нечто специфическое, уж если даже Linux пока толком в этом сегменте не прижился.
Организацию веб-сервера я планирую рассмотреть в отдельной статье. В двух словах идея состоит в том, чтобы создать клетку под DHCP и далее воспользоваться инструкциями по поднятию веб-сервера под FreeBSD. В принципе все необходимые программы имеются в пакетах.
Либо воспользоваться виртуализацией. TrueNAS CORE предоставляет возможность создания виртуальных машин под Windows, Linux и даже FreeBSD зачем-то (клетки по идее проще и быстрее). Я, если честно, немного боялся «поделить на 0» и без того виртуальную систему. Но все-таки попытался, без особого успеха впрочем.
Оставим за кадром и различные задачи (Tasks), такие как репликацию (Replication Tasks, которую я рассмотрел в «соседней» статье), Rsync и облачную синхронизацию (Cloud Sync Tasks). Имеется возможность подключения к Active Directory и ему подобным. Разумеется, помимо вскользь упомянутых уведомлений, имеется раздел отчетов (Reporting) для онлайн-мониторинга почти всего, чего только можно (CPU, дисков, памяти, ZFS и т.д. и т.п.). Возможностей очень много!
Заключение
Безусловной заслугой разработчиков TrueNAS является создание мощного веб-интерфейса над FreeBSD. Подавляющее большинство функций, которые он предоставляет, весьма муторно настраивать самостоятельно из командной строки.
Достоинства:
- ZFS. Хорошо зарекомендовавшая себя система с точки зрения надежности, а также своими сопутствующими функциями и характеристиками;
- простота настройки хранилища;
- система плагинов, позволяющая легко добавлять новые функции к NAS (которых и без плагинов в TrueNAS весьма много);
- клетки и виртуальные машины, что также позволяет расширять функционал вашего NAS «до бесконечности».
Недостатки:
- ZFS. Повышенные системные требования, невозможность на данном этапе изменения пулов RAID-Z;
- невозможность штатно задействовать излишки свободного места на загрузочном диске;
- при настройке хранилища можно оперировать только дисками целиком, хотелось бы большей гибкости (впрочем командную строку никто не отменял);
- даже официальные плагины могут требовать «обработки напильником» (на примере Nextcloud), не говоря уже о неофициальных (Emby Server).
Лично для меня камнем преткновения является неизменность RAID-Z (уж 8 гигов-то поставить легко, хоть и без ECC), что приводит к необходимости решать вопрос с дисками «раз и навсегда». На практике же я в свой домашний сервер добавлял диски постепенно, посему мой реальный домашний сервер скорее всего продолжит работать под linux.