Домашний сервер. Первый гайд.

Расскажу про свой опыт создания домашнего сервера, опишу сервисы, который лично мне сильно пригодились, о том как их поднять.

Лонг слегка не тематический для DTF, но мало ли кому-нибудь зайдет. Рекламы телеграм-канала не будет, написано исключательно своими руками без участия жытипишек.

Домашний сервер. Первый гайд.

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

- блокировок и замедлений от ркн
- пропажи контента по желанию кого-попало.

Это для начала.

А еще ты станешь немного умнее и чуть ближе к IT. Но это не точно.

атмосфера домашнего уюта трушного айтишника.
атмосфера домашнего уюта трушного айтишника.

Делать будем всё по принципу "минимум усилий и денежных вложений", но всё же с балансом пользы и гибкости.

Так что, если кажется, что это может тебе пригодиться, то по традиции сохраняй пост в избранное, чтоб никогда в него не вернуться. Ну, или можешь просто сразу пойти в комментарии и рассказать мне и всем остальным, что это никому не нужно, и проще яндексу с гуглом заплатить. Велкам!

Что можно получить от домашнего сервера

Сейчас чуть конкретнее, что на него для начала можно поставить с примерами, начиная с самого, на мой взгляд, полезного и простого. Эти сервисы научимся поднимать в этом лонге.

Всё здесь приведенное являются бесплатным и опенсорсным, созданным для самостоятельного разворачивания бескорыстными и увлеченными идеей людьми, которые тебе за использование их труда только спасибо скажут. В этом, кстати, есть свой кайф, и может ты его даже прочувствуешь. У англоязычных этот подход называется "self hosted", и имеет довольно большое комьюнити, можно погуглить. У каждого сервиса в обязательном порядке есть альтернативы, можно похоливарить про них в комментах. Я выбрал для себя именно эти и расскажу тут только про них. Не нравится мой выбор - можно поискать, сравнить, выбрать и самостоятельно развернуть что-то другое.

Сейчас пока только описание для затравочки, конкретные инструкции по разворачиванию будут дальше.

Jellyfin

интерфейс для большого экрана
интерфейс для большого экрана

Домашний медиасервер/каталог фильмов. Замена всем на свете платным и бесплатным стриминговым сервисам. Кроме видео поддерживает музыку и даже книги, но все же заточен больше под видео, а для музыки у нас будет другое решение.

Позволяет смотреть всё своё заранее скачанное через браузер браузер, на мобилках, смартах и андроид-приставках. При наличии белого айпишника из любой точки земли.

Вместе с ним поставим всегда работающую серверную торрент-качалку и научимся пользоваться ей так, чтоб качать без физического доступа к серверу, в браузере, а скачанное появлялось в каталоге само собой. Буквально в пару тыков, прямо кайф. Качать, конечно, будем исключительно свободно распространяемые фильмы, бесплатные обучающие ролики и так далее. Нарушать закон - плохо, пнятненько?!

immich

Домашний сервер. Первый гайд.

Ставим его и шлем нахер гугл с его google photo. Лично меня основательно задолбала реклама его платного облака и постоянные напоминания, что место вот-вот закончится. При том, что он беспощадно пережимает фотки в облаке. И, в очередной раз перенося фотки с телефона на комп вручную, и освобождая место в облаке, у меня пригорело, и я озаботился своей фоткохранилкой.

Фактически, это полный и бесплатный аналог под собственным контролем и без каких-либо ограничений. После поднятия сервера ставим приложуху на телефон, один раз настраиваем и больше не вспоминаем про жадность корпораций добра. Можно поставить всей семье, вопрос в достатке места на жестких сервера. У каждого, разумеется, своя учётка, мама не увидит твоих дикпиков.

Navidrome

Домашний сервер. Первый гайд.

Каталог музыки со стримингом. Давно пользуюсь Яндекс Музыкой, но, как известно, есть там далеко не всё. Да и то, что есть, со временем пропадает. Мне надоело заниматься дрочем по загрузке в него редких треков, и постоянно наблюдать как давно и старательно добавленные треки красятся в серый и больше не включаются. Причем, если специально не обратишь внимание на это в интерфейсе браузера или приложухи, то и не узнаешь. Я решил забекапить свою любимую музыку в надежное место. Конечно, выбор тру-олдфага - Винамп с локальной библиотекой файлов, но теряется великое достижение интернетов - стриминг на что угодно и доступность до нужного тебе медиа везде, где есть просто смартфон. Навидром или его аналоги решают проблему. Со временем стал замечать, что мне лень париться с поиском и загрузкой нового трека в ЯМ, я просто гружу его на свой сервер и всегда уверен, что он там навечно. Со временем я стал пользоваться Яндекс Музыкой только в качестве фонового потока хрен пойми чего с учетом системы рекомендаций (в принципе неплохой). Типа, "Алиса, включи что-нибудь". А если я хочу послушать свою с любовью собранную музыку, то включаю её всегда с Навидрома, это с гарантией надежности. Кроме того, Навидром имеет одну киллер фичу по сравнению с альтернативами - возможность создания плейлиста из интернет-радио, для меня это было решающим фактором.

File Browser

Домашний сервер. Первый гайд.

Минималистичный web-интерфейс, предоставляющий доступ до любой заранее выбранной директории на сервере. Лично мне было излишне поднимать свою собственную полноценную облачную хранилку а-ля Гугл Драйв/Яндекс Диск, но иногда нужно было шарить кому-нибудь свои файлы, быстро сохранять на сервер новые, находясь, например, на работе. Позволяет создать прямую ссылку на любой файл, которую можно пошарить без авторизации. Или экстренно сохранить на сервер что-то полезное.

Этим я ограничусь конкретно в этом лонге. Но кроме перечисленного есть еще куча всего, что я использую на своем сервере. Или не использую, но используют другие, и может пригодиться тебе. Вот, например:

Vaultwarden - собственный ультразащищенный менеджер паролей, который доступен и в браузерах компов и на мобилках. Отучаемся использовать простые и везде одинаковые пароли и хранить их на серваках гугла или мозиллы.

Calibre-Web - своя облачная библиотека книг. Красиво, удобно, с возможностью конвертации форматов, чтения в браузере, отправки файлом на почту или даже сразу на Киндл. Читающим с электронных книжек может зайти.

FreshRSS - по дефолту это RSS-агент. Но я использую встроенную возможность парсить новости с любых ресурсов и выводить в минималистичный удобный единый интерфейс.

Nextcloud - для тех, кому все же мало immich + FileBrowser, и нужно полноценное собственное облачное хранилище с синхронизацией везде, где хочется.

Home Assistant - популярная нынче тема умного дома. Сам ей пока не пропёрся, но мало ли доберусь.

RustDesk - свой личный сервер удаленного управления, замена в край охреневшим и тимвьюерам энидескам и прочим. Ставим один раз, раскатываем всей родне на компы и админим без геморроя.

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

Если будет интерес, то проведем опрос, и я расскажу и помогу поднять что-то еще в следующих постах.

Что нужно, чтобы начать

Теперь ближе к делу. Начнем с твоих возможностей. Обязательный минимум, который тебе потребуется:

1. Не бояться напрягать мозги. Мы не будем стремиться стать красноглазиками и постараемся делать всё минимальными усилиями. Однако, в Linux придется слегка погрузиться.

ну по понял
ну по понял

Я постараюсь объяснить всё подробно, с конкретными инструкциями. Правда, разжевывать до мельчайшего шага и объяснять, что такое командная строка я не планирую. Поэтому, на деле чего-то базового в инструкции тебе может не хватить, и, возможно, временами тебе потребуется погуглить самостоятельно. Сюда же "инглиш, мазафака, ду ю спик ит?". Хотя бы просто не бояться искать на английском с последующим переводом.

2. Нужна подключенная у провайдера интернета услуга "Статический адрес"/"Белый IP", название может отличаться, но суть, надеюсь, понятна. Без него всё, что мы тут понаделаем будет доступно только внутри домашней сети, а это довольно уныло. У моего оператора эта услуга подключается бесплатно, начиная со средних по цене тарифов. Ну, и нужен управляемый домашний роутер со всеми открытыми настройками и умение ими пользоваться.

Это, в принципе, всё из того, что прямо маст-хэв, остальное опционально, даже покупка нового железа. Теперь как раз про это поподробнее.

Железо

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

Поэтому, нахер нам для этого дома не нужны реальные рэковые серверы на ксеонах и многопортовые коммутаторы, которые любят искать на авитах и впихивать себе в стойки очень серьезные дяди с хабра. Туда же гиковские приколы, типа серверов на пятидолларовых одноплатниках или роутерах от Микротика, отдельные экранчики с сочными дашбордами. Мы будем делать всё по возможности просто, понятно и максимально дешево.

"Но, ведь если хочешь просто - тогда купи готовый NAS" - скажет какой-то залётный продвинутый дтфер. Имхо, NAS - слишком унылый путь, где всё за вас прибили гвоздями, а если захочется что-то докрутить и поменять, то придется всё так же лезть внутрь системы и разбираться самостоятельно. Да и к тому же, NAS стоит приличных денег, а мы можем попробовать сделать всё своё вообще не тратясь.

Поэтому, вот мой месседж - попробовать поднять свой домашний сервер в качестве эксперимента можно прямо на чём угодно, что завалялось дома из старого железа. Старенький ПК в корпусе-башне, который пылится в кладовке, ненужный ноутбук с плохим экраном - всё это можно применить на первых порах. Возможно, и того хватит с головой, и ты оставишь всё как есть. Или позже ты втянешься и перетащишь всё на более подходящее железо. Но также может оказаться, что они слишком устаревшие и не тянут, например, транскодинг видео для Джеллифина. Ну, тогда всё же придется подумать о замене. Но попробовать бесплатно заиметь хоть что-то для себя полезное, потратив пару-тройку вечеров, это не помешает. Правда, надо иметь в виду, что сервер преполагает работу в постоянном режиме, без выключения на ночь. Поэтому постоянно работающее мощное или энергозатратное железо для дома может стать проблемой. А старое или сильно греющееся может просто крякнуть от усталости через пару месяцев, похоронив кучу усилий.

Если старьё найти не получилось или связываться с ним не хочется, то деньги понадобятся. И вот, что я бы рекомендовал в качестве начала, которого с гарантией хватит на описанный тут домашний сервер даже для 5-10 пользователей (а ты ведь можешь поделиться доступами с семьей и друзьями).

Открываем любой маркетплейс и ищем "мини ПК n150". Это очень доступные и компактные компуктеры, примерно такие:

Домашний сервер. Первый гайд.

На конкретного производителя и модель ссылку не даю специально, в целом они примерно все одинаковые, выбирай по скидкам, отзывам и интуиции. В режиме "не хочу думать" - бери любой, желательно все же с 16 ГБ оперативки. Разница в цене с 8 не критичная, а польза будет.

Для продвинутых, можно взять такой без оперативки и ssd, а то поговаривают, что китайцы ставят там ненадежный нонейм. Ну, и докупить своё с каким-то более-менее брендом и гарантией. Хотя, у меня такой трудится на родной памяти и диске 24/7 уже около двух лет и не кашляет.

Преимущества такого миника:

  • он более чем достаточен по производительности для наших потребностей
  • он очень энергоэффективен, жрет примерно как пара энергосберегающих ламп, и мамка скорее всего ничего не заметит в счетах за энергию
  • так как он мало жрет, значит мало греется и не требует хорошего охлаждения
  • так как не требует мощного охлаждения, то и не шумит
  • он очень компактный, его можно засунуть в любую щель (гусары, привет).

Короче, стоит где-то, слегка моргает лампочками и не привлекает лишнего внимания. Ну, а если тема с сервером по-какой то причине не зайдет, то его вполне можно использовать, например, отдать родителям под их потребности. Я такие прикрепил прям на мониторы сзади и поставил родителям, получился очень бюджетный моноблок.

Если же хочется поспорить, что я предлагаю какое-то говно, а надо вот что-то другое, ну так пожалуйста, покупай что хочешь. Я просто предложил самый оптимальный вариант под задачу на мой взгляд.

И в принципе, чтобы попробовать что-то поднять этого уже будет достаточно.

Другие рекомендации по железу

Ставь сервер с возможностью подключить его к сети проводом. Вай-Фай в предложенном мной минике есть и будет работать, но для сервера это плохой вариант. У меня он стоит прямо в 1 метре от висящего на стенке роутера.

Подключение к серверу монитора, клавиатуры и мыши потребуется только в начале при первой настройке, поэтому отдельно этого покапать и постоянно держать рядом с ним не нужно. Мы настроим удаленный доступ.

Под систему нужен SSD. Если покупать комплектом, то с 16 ГБ оперативки обычно китайцы ставят SSD реальным объемом около 450 ГБ. Этого вполне хватит и на систему с софтом и на некоторый объем контента на первых порах.

Ну, а дальше, если аппетиты разыграются, то под большую библиотеку фильмов и музыки, под хранилку фоток на несколько человек потребуются дополнительные накопители. Под всё это рекомендую брать именно HDD 3.5". Высокие скорости чтения как у SSD нам тут ни к чему, а надежность как раз нужна.

Дополнительный диск размера 2.5" часто можно воткнуть прямо в тот же миник (проверяй такую возможность до покупки). Если нужны бОльшие объемы, то можно докупить вместе с дисками док-станцию. Могу порекомендовать недорогие варианты.

Если есть желание и место, то потом к такому серверу можно добавить принтер, чтоб он не мешался рядом с основным компом и расшарить его по локальной сети через этот же сервер.

На этом вводные про железо всё. Переходим к настройке.

Установка OS

Ты нашел или купил железяку. Начнем превращать ее в уютненький личный сервачок.

Новичку я рекомендую ставить обычный десктопный дистрибутив с удобным окружением, будет проще вкатиться. Ставим на закачку Kubuntu 24.04.2 LTS:

Для Убунты накоплено достаточно много знаний на форумах, будет проще искать ответы на вопросы. LTS релиз не будут шатать еще несколько лет, это то, что нужно для сервера. А KDE лично мне просто нравится больше остальных.
Все инструкции далее будут заточены именно под эту ОС. Выберешь что-то другое - столкнешься с различиями, придется разбираться самостоятельно.

Теперь берем флешку качаем утилиту Rufus и создаем с ее помощью загрузочную флешку. Там ничего сложного нет.

Ищем удобное местечко, ставим сервер, подключаем на время к нему монитор, клавиатуру и мышь. В идеале подключить сразу кабельный интернет. Но пока и вай-фай сойдет.
Вставляем флешку, врубаем и сразу в настройках биоса выставляем порядок загрузки, чтоб флешка была первой.
После запуска выбираем Install Kubuntu, и проводим установку. В целом там ничего особенного, вот небольшие инструкции:
- выбрай сразу русский язык, подтянет сразу нужные раскладки и пакеты локализации.
- На 4 шаге поставь галку "Download and install updates...". Сэкономишь время на последующем обновлении.
- На шаге "Разделы", если дисков несколько внимательно выбирай на какой пойдет установка и на каком будет загрузочная область.
- Если на этом диске есть данные, или даже старая винда выбирай "Стереть диск". С ручной разметкой можешь не заморачиваться она для тех, кто понимает, что это такое и зачем. Ну и дуал-бутом мы тут тоже страдать не собираемся.
- Там же оставь "Файл подкачки" как он есть.
Примерно так должен будет выглядеть этот экран перед продолжением:

Домашний сервер. Первый гайд.

- Если планируешь шарить диски с сервера по локальной сети (а это полезно), то лучше создавай юзера с точно тем же именем и паролем, как и на основном домашнем компе, хоть там у тебя и винда. Потом будет меньше танцев с настройкой беспарольного доступа.
- На том же шаге, где создание пользователя сразу поставь галку на "автоматический вход, без запроса пароля". Иначе каждый раз при плановом или внеплановом ребуте сервера будешь иметь геморрой.

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

Настройка OS и удаленного доступа

Проверь настройку интернета и, для начала, можешь потыкать, посмотреть в целом на интерфейс. Обрати внимание, никто не задолбал тебя: "Уделите минутку чтобы анально продаться майкрософт - создать обязательную учетку, чисто формально разрешить слежку и согласиться всю жизнь смотреть рекламу OneDrive".
А вдруг, когда Десятка будет окончательно похоронена как и семерка, и Гейтс с Куком начнут всех ссаными тряпками загонять в 11, ты все же решишь выбрать другую сторону силы.Правда, Линукс не для игр. Хотя Стим ставится вполтыка и вполне себе работает. Поэтому подумай.

Что еще важно сделать при первом запуске:
- Проверяем, что нет обновлений пакетов, это находится в утилите Discover. Обновляем если есть, далее проделываем это хотя бы раз в несколько месяцев.
Далее в "Параметры системы":
- "Запуск и завершение" -> "Вход в систему" -> "Поведение". Включить автоматический вход для своего юзера, если не сделал этого при установке.
- "Запуск и завершение" -> "Управление сеансами". Выбрать "Начинать с пустого сеанса". Ну и можно убрать "Показывать" экран завершения.
- "Поведение рабочей среды" -> "Блокировка экрана" и "Управление питанием". Отключаем все опции блокировки, ухода в сон и выключения монитора по бездействию. И лучше проверить это, оставь сервер включенным на пару часиков и убедись, что все осталось как было.
- "Локализация" -> "Метод ввода" -> "Добавить метод ввода". Добавить русскую раскладку, если не добавилась при установке.

Теперь займемся удаленным доступом.
Запускаем Konsole. Пишем:

sudo apt update && sudo apt install x11vnc

Здесь и далее при наличии в команде sudo будет запрос пароля. И иногда во время выполнения будут нужны подтверждения на продолжение. Отдельно далее я это подсвечивать нигде не буду.

Затем заносим пароль для подключения дважды следующими последовательными командами.

x11vnc -storepasswd ... sudo x11vnc -storepasswd

Знакомимся с nano - консольным текстовым редактором:

sudo nano /etc/systemd/system/x11vnc.service

В открывшемся файле вставляем:

[Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/bin/bash -c "/usr/bin/x11vnc -rfbauth /root/.vnc/passwd -auth /var/run/sddm/* -forever -loop -repeat -noxdamage -shared -localhost -rfbport 5900 -display :0" Restart=always RestartSec=3 [Install] WantedBy=multi-user.target

Сохранить изменения Ctrl+S, выйти Ctrl+X.

Сейчас желательно забиндить IP-адрес сервера в локальной сети, чтобы он не изменился случайно при ребуте роутера. Лучше всего это сделать в интерфейсе роутера, и тут я помочь не смогу, так как в каждой модели название и расположение пункта меню будет отличаться. На моем TP-Link AX3000 это находится в "Расширенная" -> "Защита" -> "Привязка IP- и MAC-адресов".Если же найти такое в твоем роутере не удалось, то идем на сервер в "Параметры системы" -> "Соединения" и настраиваем статический адрес вручную. Если не справишься сам - гугл в помощь. Если и тут не справишься, оставь как есть, а если вдруг сервер станет недоступен даже по локальному IP, то ты знаешь куда копать.Узнать текущий адрес на сервере через консоль можно командой hostname -I.

Теперь записываем этот адрес себе на основной домашний компьютер и ставим на него любой vnc-клиент. Мне под винду больше всего нравится TightVNC. При установке сервер ставить нет необходимости, нужен только клиент.

Запускаем его и в строке адреса хоста пишем serverip:5900. Разумеется, вместо serverip будет адрес сервера, который ты узнал раньше.
После ввода пароля должно открыться окно с рабочим столом твоего сервера.
Если всё прошло хорошо, то теперь можно отключать от сервера монитор и клаву, ставить его на свое постоянное место и подключать к проводному интернету. Дальше продолжать можно через vnc- соединение. Один момент: при отключенном от сервера мониторе разрешение окна будет 800х600, что, в принципе, достаточно для консоли (в ней можно дополнительно уменьшить размер шрифта). При желании можно либо каждый раз после подключения вручную менять разрешение прямо в настройках экрана системы, либо попросить меня, и я накидаю инструкцию как это сделать сложнее, но один раз и навсегда.

Реальные пацаны не юзают десктопное окружение, а живут только в командной строке. Зачастую этого достаточно и не нужны дополнительные телодвижения с vnc. Настроим и мы. Выполняй по порядку команды, где нужно вводи пароль и подтверждения:

sudo apt install openssh-server ... sudo systemctl enable ssh ... sudo systemctl start ssh

Теперь в терминале любого компа локальной сети достаточно вбить ssh serverip и ты попадешь в командный интерфейс своего сервера. К примеру, так можно быстро ребутнуть его одной короткой командой sudo reboot.

Для удобства рекомендую пошарить некоторые директории с сервера на рабочую машину внутри домашней сети. На сервере это легче всего сделать в прямо файл-браузере Dolphin. Для этого правой кнопкой на нужную директорию -> Публикация. Сначала там нужно будет установить службу Samba и ребутнуть сервер, затем зайти туда же и создай пароль (используй тот, что что и админа сервера)

Теперь там появится интуитивный интерфейс шаринга сетевых ресурсов. В винде добавление расшаренныхс сервера каталогов делается так. В Проводнике правой кнопкой на "Сеть" -> "Добавить сетевой диск". В пути пропиши \\serverip\имя_каталога_на_сервере. Он станет доступен как просто папка в проводнике. Если имя и пароль юзеров на винде и сервере совпадают, то даже авторизации не потребуется.

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

Поднимаем Jellyfin и qBittorrent

И то и другое есть в магазине приложений Discover, но Jellyfin оттуда ставить нельзя, замучаешься потом с настройкой разрешений. Поэтому выполняем по порядку:

sudo apt install curl ... curl https://repo.jellyfin.org/install-debuntu.sh | sudo bash

Для того, чтобы можно было удалять фильмы прямо из интерфейса Jellyfin, пишем это, только вместо username вставляем имя своей учетки:

sudo usermod -a -G username jellyfin

Чтобы изменения применились, нужен ребут.

После установки открываем в браузере страничку serverip:8096.

Здесь и далее, если не уточняю где открывать, то имею в виду рабочий компьютер, если речь будет про сервер, отмечу это отдельно. Если браузер будет выпендриваться в попытке насильно перейти на https, прописываем вручную http://serverip:8096. Это актуально всегда.

Должен стартовать виззард первоначальной настройки. Если видишь экран с запросом адреса подключения к серверу, попробуй подождать минуту и перезагрузить страницу, возможно сервер не успел подняться. Если что, воспользуйся прямой ссылкой http://serverip:8096/web/index.html#!/wizardstart.html

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

Если язык интерфейса не стал русским, поправить это можно в настройках юзера.

Сейчас нужно настроить директорию, в которой будет хранится твоя медиатека. Туда будут качаться фильмы, а Jellyfin будет автоматически добавлять их к себе. Если дисков несколько, лучше, конечно, хранить библиотеку фильмов на каком-то отдельном HDD. Если диск один и он же с системой, то вот что важно знать. Домашний каталог, например, /home/username/Видео для этого не подойдет. Поэтому, если диск один, то создаем директорию с нужными правами в отдельном месте, например в с именем Movies в директории /media, и выдаем права всем и на всё:

sudo mkdir /media/Movies ... sudo chmod -R 777 /media

Если возникают проблемы со скачиванием/сканированием/удалением фильмов и на других примонтированных накопителях - делай для выбранной директории всё тот же sudo chmod -R 777 /pathtomediadir.

Теперь скачаем что-нибудь. qBittorrent можно установить через Discover. После установки запускаем его через меню приложений, идем в настройки и делаем следующее:
- "Поведение" -> "Состояние окна при запуске" в "Спрятано", чтоб не вылезало на весь экран каждый раз при включении сервера.
- "Загрузки". Выбираем директорией для загрузок ту, которую создали ранее.
- там же, "Состав содержимого торрента" выбираем "Создавать подпапку"
- "Веб-интерфейс". Отмечаем верхнюю галку и меняем порт на какой-то свой из диапазона 1024-65535 (если браузер потом ругнется, значит выбор неудачный). Вбиваем тут же логин и пароль для админа.

Так как в настройках qbit нет опции запуска при старте системы, то идем в "Параметры системы" -> "Запуск и завершение" -> "Автозапуск" и добавляем его в пару кликов.

Теперь открываем браузер и пишем с строку пути serverip:qbitPort. qbitPort - тот, который придумал раньше. Логинимся под админом и попадаем на веб-морду qbit, и дальше пользуемся ей, без необходимости поднимать vnc с сервером.

Теперь качаем какой-нибудь свободно распространяемый фильм, например, мультик Big Buck Bunny. Так как делаем мы это через веб-интерфейс, то чтобы не плюхаться с переносом файла на сервер, тыкаем в qbit на кнопку "Открыть ссылку" и вставляем туда magnet-ссылку торрента. Не мне тебя учить где её искать.

Возвращаемся в Jellyfin, идем в настройки в раздел "Медиатеки" и добавляем новую:
- тип "Фильмы", название любое
- тыкаем на + в "Папки" и прописываем путь до настроенной директории с медиатекой, например, /media/Movies/
- остальное оставляем по-дефолту

Возвращаемся на стартовый экран и видим нашу библиотеку и добавленный туда мультик.

Готово. Остальные настройки Jellyfin осилишь сам, если захочешь. Кроме тюнинга интерфейса и всяких субтитров, можно, например, настроить подтягивание меты с Кинопоиска, но тут нужно будет погуглить.

Всё. Теперь осталось настроить проброс порта, чтоб сервер был доступен не только в домашней сети и можно пользоваться. Об этом будет дальше.

Приложение Jellyfin лежит во всех официальных апп-маркетах мобилок и смартов. Ставь, и пользуйся на здоровье. А ставить на закачку через вебку qBit можно даже с мобильного браузера, если придрочиться слегка. Не спрашивай только у меня как открыть на нем рутрекер.

Теперь у тебя работает всё максимально просто и доступно. Нашел фильм, в том же браузере поставил его на закачку в qbit, когда скачалось, он сам появится в любом имеющемся jellyfin-клиенте ...Profit!

Поднимаем Navidrome

С видео разобрались, займемся музыкой.

Для установки Navidrome сначала обзаведемся великим изобретением взрослых разработчиков для маленьких маминых айтишников - Docker. По степени полезности его можно сравнить с изобретением коробки-автомата для женщин. Если вкратце, софт теперь очень часто распространяют в docker-образе, которые ставится в пару команд, снимает с пользователя весь головняк с добавлением репозиториев в пакетные менеджеры, нюансами установки под определенную систему, установкой тонны зависимостей, поиском конфигов, выдачей прав и так далее. Всем тем, чем нам так не хочется заниматься. Ставится один раз, а пригодится не только для Navidrome.

Выполняем последовательно в консоли, соглашаясь со всем подряд:

sudo apt-get update ... sudo apt-get install ca-certificates curl ... sudo install -m 0755 -d /etc/apt/keyrings ... sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc ... sudo chmod a+r /etc/apt/keyrings/docker.asc ... echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ... sudo apt-get update ... sudo systemctl enable docker ... sudo systemctl start docker

Затем еще одна команда, в которой вместо user, подставь свой юзернейм:

sudo usermod -a -G docker user

Теперь устанавливаем и запускаем образ Navidrome:

docker run -d \ --name navidrome \ --restart=unless-stopped \ -v /mnt/1TB/Share/Music:/music \ -v /home/user/Navidrome/:/data \ -p 65437:4533 \ -e ND_LOGLEVEL=info \ deluan/navidrome:latest

Здесь нужны пояснения:

-v /mnt/1TB/Music:/music \ - эта настройка указывает на каталог с твоей музыкой. Именно этот каталог Навидром будет сканировать и добавлять себе всю найденную музыку оттуда. Путь, как ты, надеюсь, догадался, указывается до :/music
-v /home/user/Navidrome/:/data -
аналогично, до : укажи путь где будут хранится служебные файлы и конфиги. Можно, как в примере, оставить домашнюю директорию, не забудь только поменять user на свой юзернейм.
-p 65432:4533 \ -
число до : это внешний порт, то есть последняя часть адреса, по которому будет доступен веб-интерфейс в браузере. придумай его сам. 4533 оставляй как есть

При первом запуске произойдет скачивание и установка образа, создание директорий и первый запуск, это займет немного времени, затем сервис будет жить без дополнительных действий, в том числе стартовать самостоятельно при перезапуске сервера.

Заходим на страничку http://serverip:65432/ (не забудь про свой номер порта). Попадаем на создание учетки админа, а затем и в интерфейс Навидрома. Там все достаточно очевидно. Он постоянно сканирует директорию с музыкой, и добавляет ее к себе. Для понимания, каталогизируется все по альбомам согласно ID3-метаданным в файлах. Для тех кто в теме, объяснять тут нечего, но если у тебя в медиатеке музыки полный бардак, и тегами ты никогда не занимался, то это не приговор, тут тоже можно приспособиться. Выход первый, для ленивых - создать вручную нужные плейлисты и добавить туда треки вручную.

Выход второй - трушный линукс-вей, то есть автоматизация. У Навидрома есть крайне полезная функция - называется Smart Playlists. Позволяет автоматически создавать плейлисты по определенным условиям, описанным в конфиг-файлах. Самый очевидный и эффективный способ применения, которым я пользуюсь. Вся музыка, надеюсь, у тебя хотя бы разложена по каталогам с понятными названиями. Например, у тебя есть каталог "Электрослабость" с композициями этого замечательного коллектива. Прямо внутри этого каталога тебе нужно создать файлик с расширением .nsp, например, Электрослабость.nsp, с таким вот содержимым:

{ "name": "Электрослабость", "all": [ {"contains": {"filepath": "Электрослабость/"}} ], "sort": "artist", "order": "asc", "limit": 200 }

комментарии к полям, думаю, излишни, тут все очевидно, если нужны подробности - гугли документацию.

Произойдет следующее. Сразу де после создания файла Навидром самостоятельно найдет его, создаст плейлист с указанным названием и добавит в него все треки, которые лежат в соответствующей директории. Причем, далее при добавлении новых файлов в нее, они сразу же будут добавляться и в плейлист.

Вот так, создав один раз в своей медиатеке понятную структуру каталогов и nsp-файлов, ты раз и навсегда автоматизируешь все плейлисты в Навидроме. Пользуйся.

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

sudo docker pull deluan/navidrome:latest docker stop navidrome docker rm navidrome

Затем нужно вновь выполнить команду docker run со всеми теми же параметрами, как было в начале.

Поднимаем Immich

Теперь пора расстаться с Гугл Фото. Находясь в домашнем каталоге, выполняй последовательно:

mkdir ./.immich-app ... cd ./.immich-app ... wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml ... wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Затем нужно внести изменения в созданный файл .env. Ты ведь уже познакомился с nano:

​nano .env

Если все еще боишься консоли, найди этот файл в директории /home/user/.immich-app и отредактирую в текстовом редакторе с гуем. Только имей в виду что она скрытая, настрой файл-браузер, чтоб стало видно.

В файле находим и изменяем значения у двух строк:

​UPLOAD_LOCATION=/yourpath/Immich/library DB_DATA_LOCATION=/yourpath/Immich/postgres

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

sudo docker compose up -d

Начнется скачивание и установка. После завершения можно открывать браузер и заходить на serverip:2283.

В стартовом виззарде создаем свою первую очетку, она же будет админской. А затем логинимся под ней же. Потом еще несколько настроек.

Важен шаг - "Шаблон Хранилища". Здесь нужно настроить в какую структуру каталогов будут сохраняться фотки. Если оставить все без изменений, то иммич будет плодить кучу директорий, чуть ли не отдельно под каждую фотку. В приложении это будет не важно, но если захочешь посмотреть фотки напрямую на сервере, то офигеешь.

Поэтому выбери шаблон из предустановленных заранее либо создай свой. Например с корнями в виде года/месяца, либо просто альбома.

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

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

Теперь ставим приложения immich на свой девайс, при первом запуске вбиваем свой белый_ip_адрес:2283 и логинимся под созданной учеткой. Там нужно будет проверить настройки синхронизации и обязательно вручную проверь все права на фоновую работу приложения, чтобы Андроид не душил его, иначе синхронизация будет сбоить.

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

Если же в гугл фото остались фотографии, которые есть только в облаке и нет на девайсе, то их можно легко перенести к себе. Для этого зайди с браузера в гугл, найди там опцию "Гугл Архиватор" (вот прямая ссылка https://takeout.google.com/?pli=1). Там выбери только раздел "Фото" и сделай однократный экспорт. Через некоторое время тебе на почту упадет ссылка на скачивание всего архива, который можно просто сохранить себе для спокойствия. Если хочется эти фотки загрузить в облако иммич и потом видеть в их приложении, то вот подсказка как сделать это одной командой:

sudo docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=http://yourip:2283/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest upload --album --recursive /yourpath/Photo/

Если коротко, это запуск официального cli-интерфейса immich с командой на импорт на твой иммич-сервер всего, что находится в каталоге /yourpath/Photo/. При этом будут созданы альбомы, согласно названиям каталогов на диске. Подробнее тут: https://immich.app/docs/features/command-line-interface/

Иногда приложение будет намекать на выход обновлений сервера. Советую не сильно тянуть с этим:

cd .immich-app sudo docker compose pull && docker compose up -d

Поднимаем File Browser

Опциональная вещь, особенно если уже настроен шаринг сетевых папок внутри домашней сети и не требуется обмен файлов с сервером извне дома. Но может пригодиться, если хочется иметь свой файлообменник или сохранять/загружать что-то на сервере, имея лишь браузер с интернетом. Например, хорошо работает в связке с Navidrome. Добавив каталог с музыкой, можно кидать новые треки прямо в веб-интерфейс File Browser, и они будут появляться в Навидроме.

docker run \ -v /home/user/fb/filebrowser_data:/srv \ -v /home/user/fb/filebrowser_database:/database \ -v /home/user/fb/filebrowser_config:/config \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -p 65436:80 \ filebrowser/filebrowser:s6

Пояснения к параметрам:
-v /home/user/fb/filebrowser_data:/srv - до :/srv - путь к директории, которая будет расшарена. У каждого созданного в file browser юзера внутри нее будет создан свой именной подкаталог. Можешь указать любую уже существующую, (но только при условии наличия прав на редактирование, системные не подойдет), либо указать путь к новой, она создастся при первом запуске.
- Два следующих похожих параметра - пути к директориям с базой данных и конфиг файлом.
-p 65436:80 - уже знакомый параметр с указанием порта. :80 не трогай, а до : напиши свой.

Теперь, внимание. Ты запустил образ в интерактивном режиме, то есть он работает, пока работает сеанс консоли, и выводит все результаты выполнения в неё же. Это нужно сделать однократно при первом запуске, чтобы найти там строчку с автоматически сгенерированным паролем admin-юзера. Найди её и сохрани себе. Теперь жми Ctrl+C, процесс контейнера завершится. Теперь раз и навсегда запускаем его снова той же командой, но с параметром -d:

docker run -d \ -v /home/user/fb/filebrowser_data:/srv \ -v /home/user/fb/filebrowser_database:/database \ -v /home/user/fb/filebrowser_config:/config \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -p 65436:80 \ filebrowser/filebrowser:s6

Как и в предыдущих случаях контейнер запустится в фоне и будет стартовать каждый раз при включении сервера самостоятельно.

Заходим в интерйфейс по serverip:port, и логинимся под сохраненной админской учеткой. Если что-то пошло не так и пароль админа просран, то его уже не узнать, но можно создать заново. Удаляем директорию, отвечающую за хранение базы данных FB (с правами su), и перезапускаем контейнер заново. Пароль и имя учетки админа теперь можно поменять в настройках.

Готово, теперь всё, что попадет в расшаренную директорию отобразится в веб интерфейсе. И в обратную сторону, все что загружено в интерфейсе браузера, появляется на сервере. Можно качать и загружать что хочешь пачками, создавать юзеров с доступом только к выбранным или личным каталогам, редактировать текстовые файлы прямо в веб-интерфейсе.

А каким файлообменником ТЫ пользуешься? Ну конечно же Скайпом!

Доступ до сервера извне

Теперь научимся делать так, чтобы все поднятое было доступно из внешнего интернета. Я надеюсь ты уже настроил себе на тарифе домашнего интернета услугу Белого IP. Если сделал это только что, то перезагрузи роутер.

Как ты понял, без этого Навидром и Джеллифин еще можно использовать просто внутри домашней сети, но вот Иммич и Файл Браузер вообще иметь бессмысленно.

Тут всё снова осложняется тем, что все зависит от твоего роутера. В целом алгоритм следующий:

1. Найти в свойствах соединения что то типа "Интернет IP-адрес". Это и есть твой внешний, он же "белый" адрес в сети. Запиши его.

2. Найти где-то в расширенных настройках функцию проброса портов. Называть она может по-разному, тем более с учетом языка интерфейса и запрятана обычно уже в расширенных гиковских настройках. Варианты следующие - "Port forwarding", "NAT-переадресация", "Перенаправление портов", "Проброс портов" и т.п.

3. Создать для всех своих сервисов новые строчки. Общий принцип такой. Нужно указать внешний порт, соединения по которому извне домашней сети будут перенаправляться на локальный адрес твоего сервера. Пример:
- Имя сервиса: Navidrome [не важно для работы]
- IP-адрес устройства: 192.168.0.50 [тот самый айпишник, по которому ты ходишь на сервер в локальной сети]
- Внешний порт: 65432 [номер порта твоего сервиса, по которому он будет доступен из внешней сети, может не совпадать с локальным портом по которому ты ходишь в локальной сети, но лучше все же оставить тот же самый, чтоб не запутаться]
- Внутренний порт: 65432 [собственно, настроенный в сервисе внутренний порт]
- Протокол: Все доступные, или как минимум TCP.

Обычно ребут роутера после создания не нужен. Проверяем входом на настроенный сервис по адресу белый_ip:порт_сервиса. Должно работать точно так же, как в случае с заходом по локальному адресу, залогинится только придется заново. И, как ты понимаешь, доступно это теперь хоть где и хоть кому при наличии созданных тобой учеток.

Настраиваем так все сервисы, которые хотим видеть извне. Иммич-приложение на клиентском устройстве, разумеется без этого даже не настроить.

Если что-то не работает, проверяй настройки фаерволла и прочих защит на роутере, возможно там-что то есть.

Совет прошаренным, которые захотят настроить себе доступ по ssh или vnc из внешки аналогичным образом. Делать это крайне не рекомендую, это будет огромная дырень в безопасности. Если всё же хочется, настраивай сначала вход по ключу и отключай парольный вход для ssh с нестандартным портом, а для vnc нужно сделать ssh-туннелирование.

Ну вот и все, что хотел рассказать для начала. Если кому-то тут это будет интересно и сподвигнет попробовать - тогда все не зря. За скобками осталось еще много чего важного, но это темы для других логнов, если вдруг они еще будут. А это будет зависеть от вас, если что - проведем опрос. Например, из важного, что не влезло тут, но можно засунуть в новый лонг:
1. Надо обязательно научиться резервному копированию всего ценного по схеме "3-2-1". Фотки, музыку, пароли - проклянешь все на свете, когда крякнет диск, где все это лежало в единственной копии. Заодно можно настроить собственную бесплатную синхронизацию офигенного инструмента Obsidian, в котором я, например, документирую всё связанное со своим сервером, да и вообще всю свою серую жизнь.
2. Можно по-дешевке купить доменное имя, настроить его и ходить на свои сервисы не по скучному цифровому адресу, а по крутому с буковками, типа gabedan-prime-beer-master.ru
3. Можно очень занедорого приобрести, поставить и настроить сетевой принтер+сканер. Могу рассказать где и как его выбрать, чтобы сильно сэкономить, и как настроить в связке с сервером.
4. Ну, и в начале я рассказывал про другие полезные сервисы, можно найчиться поднимать еще что-то.

На этом, пожалуй, всё. Если решил пробовать - удачи. Можно задавать вопросы в комментариях, плюса у меня нет, а телегу свою не дам.
Хочешь навалить мне в панамку в комментах свое ценное мнение о ненужности написанного - тоже ю велкам! Всем мир, всем пока!

Домашний сервер. Первый гайд.
819
117
49
16
9
4
3
1
1
1
1
1
1
534 комментария