Мой Awesome self-hosted
Рассказываю, какие self-hosted проекты я пробовал, с какими проблемами столкнулся. Личные рекомендации, если кто-то решит повторить мой путь
Заметка про мир self-hosted девайсов
Все статьи я пишу самостоятельно: совершаю ошибки, очепятки. LLM не пользуюсь даже для редакции и проверки текста.
Всё началось…
Шёл далёкий и прекрасный 2024 год. В поисках нового хобби, я начал интересоваться DevOps и в целом появилась острая необходимость в собственной инфраструктуре: начиная от VPN, заканчивая хранением семейных фото. И вот, в один прекрасный день, мне подарили мини-пк с скромными характеристиками:
- intel n150
- 8 GB RAM
- 256 GB SSD
Это самый обычный китайский mini-pc (SOYO) не самой производительной конфигурации. На тот момент я планировал запустить только immich и NextCloud. Для файлопомойки я также прикупил 4 TB HDD диск.
Но что-то пошло не туда
Заимев сервер, и убедившись, что не зря плачу кровные за белый IP адрес, я принялся мучать роутер. Роутер довольно старый: d-link dir-842, и чуда я от него не ждал, а зря. Да, он не даст поднять новые версии OpenWrt и сделать из сети комбайн. Я не стал испытывать судьбу и пытаться его перепрошить. Все функции по пробросам портов, настройки реверс DNS для локальных проектов, и дефолтные скорости/частоты у него на месте, потому по сей день он верой и правдой трудится несмотря на нагрузку. Признаюсь, смотрю на CUDY TR3000, думаю, рано или поздно старичка нужно будет заменить на что-то более хайповое, производительно и удобное.
Далее, я приступил к моей любимой части: первоначальной настройке Debian 12 (Жалею что не 13, оказывается, на этой версии есть поддержка видеоядра для n150, но об этом чуть позже), окружения, SSH, и начальной схемы-документации как и что я буду настраивать и разворачивать. Спустя недолгие 1-2 часа у меня был настроенный, но пустой сервер, далее начались
Муки выбора - hCloud
Сообщество self-hosted проектов просто невероятно. Проектов много, они закрывают разные цели, и делают это также по разному. Сначала, я решил подобрать замену для гугл диска и облачного хранилища. Вот примерный список что я попробовал:
- owncloud
- Seafile
- NextCloud
С первых минут я склонялся к NextCloud, но меня настораживали комментарии сообщества про плохую производительность, избыточность, тормознутость. Потому, я попробовал первым делом owncloud, далее Seafile, и только в конце NextCloud, когда мыслями уже принял Seafile как основное хранилище данных. Немного почему не owncloud и Seafile: у owncloud довольно устаревший интерфейс и ограниченный функционал, хотя если вы ищите только webDAW и облачные папки - оно зайдёт. У Seafile был редактор файлов (к нему были вопросы если честно), webDAW, нормальный дизайн. НО. У них было ужасное приложение для синхронизации файлов, неудобный формат хранения данных (по-умолчанию они зашифрованы на диске, это конечно хорошо, но не всем подходит). Добивал всё редактор файлов, который завёлся спустя пол суток чтения мануала и молитве Матрёне небесной, а после свежего обновления умер без объяснения причин. Меня это достало, и я решил протестировать NextCloud.
NextCloud зацепил более продуманным интерфейсом, мессенджером, модулями в AIO, благодаря которым избыточный функционал оказалось что можно отключать или включать. За два года не было ни одного инцидента с потерей данных или кривыми обновлениями. При этом потребляет он в среднем 1-2 GB RAM, с выключенным антивирусом и полноконтекстным поиском. Отдельно скажу, что синхронизация файлов, черновиков и документов между устройствами манна небесная, привет Яндекс.Диску, где этот функционал стал платным. Есть приложения на все системы, в т.ч на линукс, за что жирный плюс.
hPhoto
Практически каждая современная семья имеет гигабайты фото с отпусков, поездок, радостных событий и мероприятий. Наши любимые корпорации это знают, и дают небольшие лимиты для хранения фото. На дату написания статьи 5 TB в гугл фото обойдутся в 199$ в год, примерно 15 000 рублей. Если с диском выбор был сделан, то с хранением фото и удобством галереи у NextCloud есть вопросы. Потому, недолгим поиском я наткнулся на Immich. Что я могу сказать? Мои потребности как аналог гугл фото он закрыл на 100%, а именно:
- Умный контекстный поиск;
- Разделение доступов;
- Квоты;
- Хранение любых форматов видео и фото;
- Удобная и быстрая галерея.
Беда пришла откуда и ждали. 8GB RAM начало не хватать при загрузке моделей immich для поиска и сервер регулярно “подвисал”. В целом, были проблемы с скоростью загрузки фото, из-за их нахождения на HDD диске. В итоге, я выбрал самую консервативную модель с поддержкой русского языка, перенёс все базы и образы докера на SSD диск, фото и видео при этом остались на HDD, настроил докер конфиг, включив обновлениями Debian видеоядро процессора для обработки видео и моделей. Тут как раз понадобились пакеты из 13 дебиана. Это помогло, immich стал заметно быстрее грузить фото и видео, и поиск заработал шустрее, но не идеально, так как приходилось ждать выгрузки модели в память, что занимает время. На данный момент в иммичи у меня практически 1 TB занимают домашние фото/видео, и им пользуется вся моя семья. Как и всякий инженер, мне нужно где-то хранить и версировать проекты. Git в России это уже скучно, не модно и не молодёжно, когда есть Gitea.
hGit
В выборе проекта для гита вопрос вообще не стоял, сразу было принято решение использовать Gitea. У него есть масса плюсов, из которых я выделю:
- Runners - да, можно выстраивать CI/CD;
- Проекты - канбан, задачи, вики. Если вы это не использовали в проектах, то пожалуйста, just do it;
- Ну и то, за что и ставят гит - версирование для проектов.
Я считаю плохим тоном мешать рабочее и личное, в целом, в нестабильное время живём. Потому давно проекты храню на собственном гите. Боли после переезда от майков не почувствовал.
Docmost Outline
И вот, начинается “экзотика”. Я очень любил Notion. Работа обязывает записывать и систематизировать знания. Но, всем известна судьба Notion в России + хотелось хранить временные секреты и чувствительную информацию без страха в один день всё потерять.
До 2026 года, заметки я хранил в Obsidian и синхронизировал папку через NextCloud. Схема, честно сказать, не самая удобная. Особенно, когда нужно делиться записками и пространствами. Потому, я выбрал Docmost, немного им попользовался и понял что это не то что мне нужно: продукт отличный, но навязывание платных функций, закрытое API и MCP (что входит в платные функции) добило моё желание им пользоваться. На замену я развернул Outline. Он тоже не без минусов, например отсутствие русской локализации многих отталкивает. Для моих задач, он полностью подходит. Удалось подключить его по MCP чтобы передавать контекст записок агентам, что радует.
Всё остальное:
SeaweedFS
Иногда нужно нормальное тестовое S3, без страха потерять тысячи рублей на запросах, потребляет минимум ресурсов, удовольствия максимум.
n8n
Инструмент классный, но как оказалось, для домашних нужд малоприменим.
hommenest.ru
Проекты, сайты, боты, также хостятся на минисервере.
Итого
- Средняя нагрузка в час на процессор - 1.5 по данным htop (по моим наблюдениям процессор не занят на 100%), памяти занято 7 GB RAM и 1 GB SWAP, больше упираюсь в ресурсы памяти, что меня удивляет.
- За электроэнергию счёт не вырос, совсем.
- Одна из самых полезных трат в моей жизни до 30 000 рублей на дату написания статьи.
Постскриптум
Расскажу, что ломалось и какие возникали проблемы:
- Полетела RAM: она была от китайского ноунейма, заменил сразу на 16 GB, жить стало веселее.
- Свич в роутере поддерживает только один гигабитный порт, сервер втыкается в обычный 100 мб/c, из-за чего провоцирует сетевую карту иногда творить странные вещи, не думал, не гадал что такое бывает, но ядро иногда из-за этого паникует, что вызывает на моих настройках перезагрузку. Если не перезагрузка, сеть недоступна и приходится вручную ребутать девайс - геморрой не иначе.
- Выключение электричества. В моём регионе случается примерно раза 2 в год, если совсем уйти в безотказную систему, нужно прикупить БП чтобы не переживать за систему и диски.
Что-бы я ещё хотел сделать:
- Попробовать портейнер, сейчас конфиги и обновления я ставлю ручными заходами по SSH на сервер. Меня это не утомляет, портейнер в теории может дать для этих задач интерфейс. Хотя, и даст некоторую нагрузку на и так скромный сервер. Тут спорно.
- RAID 1 - Никогда не знаешь когда диски умрут, особенно больно умирают SSD, несмотря на то, что все “тяжёлые” данные на HDD. Регулярно провожу healthcheck дисков, но страх что что-то деградирует присутствует.