Самохостинг: Як Створити Власний Сервер для Домашнього Використання
Є чудовий термін self hosted
, який дуже популярний в англомовному інтернеті. Але він погано перекладається, майже як open source - хоча Вікіпедія і намагається дати жахливо звучащий термін “самохостинг”…
Самохостинг - це коли ви вирішуєте, що якісь речі краще зберігати у себе, а не віддавати великим корпораціям - фотографії, пошту, розумний дім, книги і так далі. І збираєте під це якийсь сервер, повноцінним хазяїном якого єте тільки ви.
Цю статтю я пишу для кількох друзів, які вирішили приєднатися до цього тренду. Тут буде огляд мого особистого самохостингу - про різні штуки, які здалися корисними особисто мені, і які зайняли своє місце на моєму домашньому сервері.
Залізо
Напевно, ви почнете з питання - “і куди мені все це ставити?” Варіантів багато, і у всіх є плюси і мінуси.
- Raspberry Pi. На мою думку - неоправдано дороге, слабке і не масштабується рішення. Але якщо у вас мало місця і хочеться трохи поекспериментувати - хороший варіант.
- Міні-ПК, наприклад Intel NUC, або будь-який інший. Не сильно більше за розміром, зате повноцінне залізо з купою оперативки і SSD. Мінус - я не дуже уявляю, як це добро ремонтувати.
- Старий ноутбук. Відмінний спосіб безкоштовного переиспользування того, що і так припадає пилом у шафі.
- Готовий брендований NAS. Мені дуже подобаються Synology. Вони виглядають довговічно, ремонтопридатно і в них зазвичай є купа корисного софту і бекапів у хмару виробника. Мінус тільки один - дорого.
- PC. Ідеальний варіант, якщо у вас є місце, куди його можна поставити. Завжди можна модернізувати, і легко замінити померлий диск\кулер\материнську плату. Мінуси - великий розмір, більше енергоспоживання і весь софт потрібно ставити самому.
Як встановлювати софт?
Починав я з класичної установки всього софту в пакетах, але приблизно рік потому перейшов на Docker контейнери:
- Це безпечніше.
- Це надійніше, так як менше залежить від версії дистрибутива Linux.
- Можна легко видалити якийсь сервіс без залишків.
- Легко резервувати дані сервісу.
- Це банально швидше - достатньо скопіювати compose файл - і сервіс піднято.
Якщо у вас дорогий NAS, то в ньому часто є свої засоби роботи з контейнерами. Якщо ні - зручно поставити якийсь UI для роботи з контейнерами, наприклад, Portainer.
Що встановлювати?
Розумний дім
Звичайно, не ще одна стаття про розумний дім! Про це вже сказано тисячу разів, і є багато хороших статей. У мене стоїть Home Assistant.
Крім самого Home Assistant, у мене є:
- ESPHome - дозволяє програмувати на YAML мікроконтролери і легко інтегрувати їх в Home Assistant.
- Zigbee2Mqtt - дозволяє інтегрувати будь-який Zigbee девайс.
- Mosquitto - потрібен для Zigbee2Mqtt.
- Hass-dbstats - сервіс для контролю за розміром СУБД Home Assistant.
- Frigate - для запису відео і передачі подій в Home Assistant.
Торренти
Після 2022 року актуалізувалася потреба передавати друзям великі файли. Наприклад, фотоархіви з свят. І якщо ви не користуєтеся великим і дорогим хмарним сховищем, то роздавати їх через торренти - відмінний варіант.
Ось що тут є цікавого:
- Transmission - найбільш економний по ресурсах клієнт.
- Qbittorrent - використовуваний мною торрент клієнт.
- Opentracker - домашній трекер для роздачі друзям.
Перегляд відео
Вирішили ви… Подивитися запис сімейного свята. Найпростіший варіант - зробити на сервері, де лежить відео, samba share з дозволом на читання, і відкривати відео по мережі через VLC. Але іноді відео не проходить через мережу, і зручніше використовувати медіа сервери.
Мій вибір - Jellyfin. Він простий і зручний. З альтернатив можна ще подивитися на Kodi і Emby.
Паролі та безпека
Довгий час для зберігання паролів я використовував KeePass, але було незручно ділитися базою паролів між телефоном і комп’ютером. Тому мій вибір впав на Vaultwarden - відкритий бекенд сервер для Bitwarden.
Захист
В якийсь момент виникає питання - як захистити всі ці сервіси?
Більшість сервісів мають якусь авторизацію, але не факт що не діряву. І відкривати їх в інтернет просто страшно. Тут допомагають сервіси, які закривають собою всі ваші сервіси, не дозволяючи відкрити їх без авторизації.
Я вибрав Authentik - авторизаційний провайдер з зручним інтерфейсом.
Бази даних
Більшість додатків пропонують кілька СУБД на вибір. Мій особистий вибір - Postgres. Він швидкий, зручний, не споживає зайву пам’ять.
Як об’єднувати всі ці сервіси
Якщо ви ставите все як аддони Home Assistant, то він вирішує задачу об’єднання сервісів. Але мені не подобається ця модель. Тому потрібно щось, що буде об’єднувати і проксувати сервіси назовні.
Я використовую Nginx:
- Легко і зручно налаштовувати.
- Налаштування можна зберігати в гіт.
- Гранулярний контроль над поведінкою проксі.
Але це не дуже user-friendly підхід. Тому багато хто використовує Traefik або Nginx Proxy Manager.
Моніторинг
Коли весь цей зоопарк розростається, дуже хочеться автоматично спостерігати стан серверів і сервісів. Я вибрав Zabbix. Він краще підходить для “загальних метрик з коробки”.
Також:
- Для швидкої діагностики я використовую glances.
- За дисками я дивлюся за допомогою scrutiny.
- Перевіряю оновлення моїх образів за допомогою whats-up-docker.
- Дивлюся логи контейнерів за допомогою dozzle.
Бекапи
Бекап жорсткого диска
Я використовую хмару для резервування. У мене є двостороння синхронізація з хмарою, де я можу все переглядати, редагувати і ділитися з іншими людьми. Але також важливо мати холодний бекап - періодично підключаємо диск, на який копіюю важливу інформацію.
Бекап СУБД
Для “гарячого” бекапу потрібно використовувати відповідні інструменти. Мені дуже сподобався контейнер для гарячих бекапів Postgres.
Чого у мене немає (поки?)
- Своєї бібліотеки книжок.
- Своєї поштової сервера, так як я звик до певного сервісу.
- Своєї файлового сервера.
- Своєї гіт сервера.
- Красивої домашньої странички для сервера.
- Менеджера задач.
- CompreFace і Double Take для розпізнавання з відео.
Ноу хау
Ну і наостанок - кілька забавних неочевидних речей.
- Яндекс станція. Вона відмінно вбудовується в екосистему Home Assistant.
- Хмарний self hosted. Частина інфраструктури можна перенести в хмарний або зовнішній сервер.
Посилання
- Велика кількість цікавого є в сабреддіті selfhosted
- Гігантський список сервісів - awesome-selfhosted
- Інший список - awesome-sysadmin
- Чудовий і відзивчивий чат про Home Assistant
- Відмінний чат про залізо для розумного дому
- І ще один - про ESPHome
Замість висновку
Говорити про selfhosted можна безкінечно, але я стільки не зможу написати, а ви - прочитати. Але якщо цікаво розвернути якусь тему - можемо зробити це в коментарях. Також було б цікаво дізнатися, які ще корисні інструменти використовуєте ви на своїх домашніх серверах.