mysurik.ru

Homepage — статичный дашборд для сервера, который я пожалел что не поставил раньше

Дашборд Homepage для мониторинга сервера

Я перепробовал кучу панелей для сервера. Начинал с Webmin — страшно, медленно, непонятно. Потом перешёл на Cockpit — уже лучше, но вебсокеты жрали память, и на слабом сервере он тормозил. Пробовал даже самописный скрипт на PHP — выкинул после первого же обновления.

Homepage — это статичный дашборд: HTML, CSS, немного JS. Без баз данных. Без PHP. Без демонов. Просто страница, которая показывает всё, что тебе нужно.

Ставится за две минуты. Docker образ содержит nginx и готовый конфиг. Я смонтировал директорию с конфигами и через пять минут уже видел все свои сервисы на одном экране.

Главное — виджеты. Homepage поддерживает поиск Docker контейнеров, ping, uptime, погоду, календарь. Ты просто пишешь YAML конфиг и получаешь красивую карточку с сервисом. Кликнул — открылся сервис.

Что мне особенно зашло:
— Виджет Docker — сам подхватывает запущенные контейнеры
— Status-бар — CPU, RAM, диск прямо сверху
— Кастомные иконки — я добавил иконки для каждого сервиса
— Поиск — мгновенный поиск по всем сервисам
— Темы — быстро переключил на тёмную

Я настроил Homepage на порту 8080, прикрутил через nginx reverse proxy, повесил SSL — и теперь это моя стартовая страница в браузере.

Единственное, о чём жалею — что не поставил его раньше. Полгода прыгал между панелями, а решение оказалось простым. Одна HTML-страница, которая работает годами без обновлений. Теперь я захожу на сервер через Homepage и не вспоминаю про консоль для базовых вещей.

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

Начну с контекста, чтобы было понятно, откуда я шёл. У меня на сервере живут десятки сервисов: WordPress, аналитика, мониторинг, файловые хранилища, пара домашних автоматизаций. Когда их стало больше десяти, я поймал себя на том, что постоянно забываю адреса и порты. Что-то на 3001, что-то на 8080, что-то на поддомене. В браузере — куча закладок, в голове — каша. Именно в этот момент я понял, что мне нужен единый вход, стартовая страница, с которой можно попасть куда угодно одним кликом. Так я и вышел на Homepage.

Почему именно Homepage, а не очередная панель. Я честно перепробовал разные варианты. Webmin — это мощно, но для моих задач избыточно: там сотни настроек, которые я никогда не трону, а интерфейс ощущается тяжёлым и запутанным. Cockpit — современнее и красивее, но на моём слабом сервере он заметно ел память из-за вебсокетов, и при нехватке ресурсов это было ощутимо. Самописный скрипт на PHP я выкинул после первого же обновления системы — всё сломалось. Homepage же оказался тем самым простым решением: статичная страница, ничего не крутит в фоне, ничего не потребляет.

Про архитектуру Homepage скажу пару слов, потому что это его главное преимущество. Это не приложение с базой данных и демоном, а статический HTML с CSS и немного JavaScript. Он читает YAML-конфиг и отрисовывает карточки сервисов. Нет ни базы данных, ни PHP, ни тяжёлого рантайма. Он работает в Docker-контейнере, внутри которого nginx раздаёт файлы. Такой подход означает: ему почти нечего ломать, его не нужно «чинить», и он не будет жрать ресурсы. Это именно то, что нужно для стартовой страницы, которая должна просто работать.

Установка действительно заняла у меня пару минут. Образ контейнера тянет всё необходимое: nginx и сам Homepage. Я смонтировал папку с конфигами, указал порт, поднял контейнер — и через пять минут на экране была сетка с моими сервисами. Без регистраций, без настроек БД, без миграций. Для сравнения: ту же задачу я когда-то решал через самодельный PHP-скрипт, и на его поддержку уходило больше времени, чем на всё обновление Homepage.

Теперь про самое вкусное — виджеты и интеграции. Homepage умеет подхватывать Docker-контейнеры автоматически: если контейнер запущен, он появляется на дашборде. Для этого нужно указать socket Docker, но это делается парой строк в конфиге. Дальше — ping, проверка доступности, отображение uptime, погода, календарь. Всё через YAML: описал сервис, указал иконку, ссылку, и он появился на дашборде карточкой. Клик — и ты внутри сервиса. Это именно тот уровень простоты, который мне был нужен.

Разберу подробнее, что я настроил у себя, чтобы было наглядно. Виджет Docker — он сканирует контейнеры и показывает их статус: запущен, остановлен, перезапускается. Плюс один клик по контейнеру — и можно смотреть логи или перезапустить его. Status-бар сверху — CPU, память, нагрузка на диск. Для сервера это важные цифры, и видеть их на стартовой странице удобно. Иконки — я навёл порядок: каждый сервис со своей иконкой, чтобы находить глазами, а не читать. Поиск — набрал буквы — и нашёл нужный сервис, даже если их много.

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

Про reverse proxy и SSL расскажу, потому что это важный шаг. Я не хотел открывать порт 8080 наружу — это и некрасиво, и небезопасно. Поэтому я завернул Homepage за nginx: сделал поддомен, выпустил сертификат, проксировал запросы с 443 на внутренний порт. Теперь дашборд доступен по нормальному https-адресу, без портов в URL. Это стандартная практика для любых внутренних сервисов, и Homepage в этом смысле ничем не отличается от остальных. Настроил один раз — и забыл.

Какие ещё плюсы я заметил за время использования. Обновления происходят просто: пересоздал контейнер с новым образом — и всё. Конфиг у меня лежит отдельно, так что при пересоздании ничего не теряется. Никаких миграций, никаких «после обновления всё сломалось». Это редкость для панелей управления. Плюс Homepage полностью в моей власти: никаких облачных сервисов, все данные локально. Для приватности и независимости это большой плюс.

Что бы я сделал иначе, зная всё заранее. Во-первых, поставил бы Homepage в самом начале, а не через полгода экспериментов с другими панелями. Во-вторых, сразу бы настроил иконки и группы, чтобы дашборд был наведён с первого дня. В-третьих, продумал бы структуру сервисов по группам: рабочие, домашние, мониторинг. Это экономит время при поиске. Но главное — сам подход «статика вместо тяжёлой панели» оказался правильным, и я бы его рекомендовал всем.

Ещё один момент, который стоит упомянуть — это то, что Homepage не заменяет нормальный мониторинг. Он показывает статусы, но не предупреждает активно, как Uptime Kuma или Zabbix. Для себя я решил так: Homepage — это вход и визуальная карта сервисов, а за мониторингом и уведомлениями отвечает отдельный инструмент. Это разделение ролей избавляет от путаницы: каждый инструмент делает своё дело.

Кстати, про кастомизацию под себя. YAML-конфиг Homepage довольно гибкий: можно менять раскладку, добавлять группы, настраивать виджеты, указывать свои ссылки. Я сделал несколько групп: «Сервисы», «Мониторинг», «Полезное». В «Полезном» — ссылки на почту, календарь, погоду. Так дашборд стал не просто списком сервисов, а полноценной стартовой страницей на каждый день. Именно этого мне не хватало в других панелях — они показывали, но не были удобным стартом.

Скажу пару слов и про производительность. На моём сервере Homepage потребляет совсем немного: пара десятков мегабайт памяти на контейнер, и то по большей части из-за nginx. По сравнению с Cockpit, который ел заметно больше — это огромная разница. На слабых машинах эта экономия ощущается. Для тех, кто крутит сервер на старом железе или бюджетном VPS, это весомый аргумент в пользу Homepage.

Итог подведу так. Homepage решил мою проблему «где что лежит» полностью. Теперь я захожу на сервер, открываю одну страницу и вижу всё: статусы, сервисы, ресурсы. Никакого метания между вкладками и закладками. Ставится за минуты, работает годами, почти не ест ресурсов. Если ты до сих пор живёшь с десятком закладок на внутренние сервисы — очень советую попробовать. Может быть, как и я, ты пожалеешь только об одном: что не сделал этого раньше.

Расскажу ещё про несколько практических деталей, которые могут пригодиться. Первое — безопасность доступа. Раз дашборд показывает статусы всех сервисов, я не хотел, чтобы он был открыт для всех. Я закрыл его паролем через базовую авторизацию на уровне nginx. Для внутреннего использования этого достаточно. Если бы дашборд был публичным, я бы включил встроенную аутентификацию Homepage, которая поддерживает проверку пароля. Но для личного использования базовая авторизация проще.

Второе — бэкап конфига. Мой YAML-файл с настройками Homepage я копирую в общий бэкап сервера. Это пять секунд работы, но если контейнер когда-нибудь потеряется — я восстановлю весь дашборд за минуту. Конфиг — это единственное, что нужно бэкапить, потому что сам Homepage не хранит данных. Ещё раз подчеркну: отсутствие базы данных — это огромный плюс в плане резервного копирования.

Третье — версии и обновления. Я подписан на релизы проекта, и раз в несколько месяцев обновляю образ. Процесс тривиальный: остановил контейнер, пересоздал с новым образом, запустил. Никаких сюрпризов. Если сравнивать с обновлениями тех же Webmin или Cockpit, где иногда ломается конфигурация, — здесь этого просто нет. Статика не умеет ломаться.

Четвёртое — не забывай про группы. Когда у тебя 20+ сервисов, одна сплошная сетка превращается в кашу. Группы решают эту проблему: сгруппировал по смыслу и видишь только нужное. Я сделал группы под свои задачи, и дашборд стал читаемым. Это, пожалуй, самая недооценённая фича, которую я включаю теперь с первого дня.

И пятое — маленькая деталь: Homepage умеет показывать не только сервисы, но и просто ссылки. Для меня это стало заменой папки с закладками. Почта, календарь, погода, панель хостинга — всё на одной странице. Один раз настроил, а пользуюсь каждый день. Именно такие мелочи делают инструмент действительно полезным, а не «ещё одной панелью для галочки».

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *