Вступление#

Не так давно с идеей приобретения статического IP-адреса появилось желание наконец-то отпустить свой 15-летний слабенький локальный сервер (не все так просто, [статья об этом](“draft.Минимальный Linux для недо-сервера”)) и сделать что-то более серьезное, учитывая все возможности современного open-source на Linux. К тому времени как раз удачно сложились обстоятельства приобретения ПК в интересном формате корпуса (точно SFF, но ни к какому из известных его не отнести)

Нет, серьезно, какой это форм-фактор?

Обнаружил, что сама плата работает, а неисправны только блок-питания и кулер. Купил новые на замену, в довесок поставил 16 ГБ оперативки. Процессор совсем не мощный, для офисных решений скорее, но с низким энергопотреблением.

Ставим систему#

Ну, конечно же, Arch Linux! Какие еще могут быть варианты? На самом деле этому даже есть объяснение (и даже два):

  1. Самое свежее ядро, все “ванильные” пакеты
  2. Наиболее подробная и завершенная (среди прочих дистрибутивов) документация по всем пакетам и самая масштабная поддержка (ну ладно, еще Gentoo).

В серверном исполнении, Arch опционально ставится с nginx, docker, mySQL и Cockpit из коробки. Это ли не прекрасно?

Что я в итоге подключил на сервер#

Итак, здесь сразу с места в карьер: я не буду рассказывать про SSH, git, nginx и прочее, всем известное.

В таблице приведены self-hosted решения с открытым исходным кодом, которые я разместил на своём сервере и, тем самым, заменил вообще все облачные сервисы

Что храню Где храню
Фотографии Immich
Задачи Vikunja
Файловое хранилище Nextcloud
Музыка Jellyfin
Фильмы, сериалы Jellyfin
Книги Jellyfin

Для каталогизации статей, документов и книг я также использую Zotero, но это не open-source, да и не серверное решение.

Администрирование: Cockpit#

Здесь я, признаться честно, даже не рассматривал другие варианты (хотя они существуют, например Webmin и Ajenti), т.к. уже долгое время работаю с этим приложением для мониторинга серверов. Достоинства использования Cockpit:

  1. Легковесный, не требует много ресурсов для работы.
  2. Осуществляет мониторинг в реальном времени.
  3. Большое количество возможностей и совместимость с множеством пакетов и сервисов (масштабируемость).
  4. Удобный, понятный интерфейс.

Хранилище фото: Immich#

В целом, приложений для селф-хостинга фотографий существует великое множество решений. Я попробовал, практически, каждое из списка, но больше всего мне понравился Immich.

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

  1. Удобный, интуитивно понятный интерфейс.
  2. Шикарный AI с распознаванием лиц, интеллектуальным поиском.
  3. Обнаружение дубликатов (даже при условии, что у одинаковых файлов разные названия).
  4. Поддержка большого количества форматов (работает и с RAW).
  5. Отыскивает несколько похожих фотографий (когда делается сразу несколько снимков) и предлагает оставить одно, самое лучшее.
  6. Наличие мобильного приложения.
  7. Хоть разработчики и пишут про стадию “активной разработки”, никаких багов или ошибок я не наблюдал. С другой стороны, у меня есть ограничения его применения на моём сервере: у меня весьма слабый процессор (зато низкое энергопотребление!) на котором задачи AI даются с большим скрипом. На моменте поиска лиц (после загрузки новых изображений) и интеллектуального поиска фотографий, все ядра процессора заняты на 100%. В остальное время всё нормально.

Ламповый планировщик задач: Vikunja#

Раньше я пользовался локальным task-менеджером ToDoList от AbstractSpoon.

Несмотря на свой интерфейс в стиле “Office 2007”, это максимально удобное приложение для планировки задач как для одного человека, так и на всю команду. Единственным недостатком являлось только то, что ToDoList сделан только под Windows (хоть и прекрасно себя чувствует при запуске через Wine), но и это решение только для одного компьютера, а мне хочется хранить всё на своем сервере.

В итоге я снова попробовал разные решения, в результате чего остановился на Vikunja:

  1. Красивый, современный интерфейс.
  2. Есть возможность разделять задачи по проектам, добавлять теги и всё это удобно и без костылей.
  3. Есть мобильное приложение (хоть и, пока что, не с полным функционалом, но уже работает).
  4. Ну это же альпака викунья! Почти что альпака!

Вот бы почаще видеть планировщик таким, ха-ха

Jellyfin. Хранилище книг, музыки, кино и сериалов#

Перед тем, как импортировать в Jellyfin все свои аудиозаписи, я конвертировал их все в .mp3 (не вижу разницу с .flac на своей технике) с использованием ffmpeg и затем выполнил их сортировку и каталогизацию с использованием beets, приложения, которое автоматически каталогизирует файлы, добавляет теги, обложки и тексты песен. Сначала настраивается конфигурационный файл, который можно найти следующей командой:

$ beet config -p

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

$ beet -v import -A ~/path_2_files

, где -v это verbose mode (меня напрягает, что в командной строке долгое время ничего не меняется) -A (опционально) выключает автоматическое создание тэгов при импорте. Это можно сделать потом, уже после импорта. В результате, импорт займёт какое-то время. В моём случае, СПУСТЯ ДВА ДНЯ, импорт завершился. На самом деле, оно того стоило: все файлы отсортированы, дубликаты удалены, обложки загружены, тексты на месте. Теперь можно и теги добавить и загружать в Jellyfin.

То же самое я проделал с видео: конвертировал все имеющиеся видеофайлы в формат mp4 1080p, чтобы хранилище занимало как можно меньше места.

Про NextCloud напишу уже когда-нибудь потом.

Итоги#

В итоге все решения вместились на сервере и даже (в простое) не требуют много ресурсов от процессора. Всё работает стабильно, чего я и добивался. Посмотрим, как всё это будет работать на больших дистанциях.