MAATRIX / Блог / Heimdall на Ubuntu 24.04: пошаговая установка

Heimdall на Ubuntu 24.04: пошаговая установка

MAATRIX

Если у вас на сервере крутится десяток сервисов — Nextcloud, Portainer, Grafana, парочка *arr-приложений — рано или поздно надоедает держать в голове или в закладках браузера, что и по какому адресу живёт. Heimdall решает эту задачу простым способом: одна страница с плитками-ссылками на все ваши приложения, с иконками, поиском и минимумом лишнего. Ниже — как поставить его на чистый Ubuntu 24.04 через Docker и довести до рабочего состояния с доменом и SSL.

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →

Что такое Heimdall и зачем он нужен

Heimdall Application Dashboard — open-source проект на PHP/Laravel, который существует ровно для одной цели: быть стартовой страницей вашей домашней лаборатории или личного сервера. У него нет амбиций мониторинга, RSS-лент или виджетов погоды — это осознанно простой инструмент, и в этом его сила: поднимается за пять минут, не требует внешней базы данных (использует SQLite из коробки) и не просит объяснений.

Ключевые возможности:

  • плитки-ссылки на ваши сервисы с иконками (можно взять из встроенной библиотеки или загрузить свою);
  • поисковая строка сверху с выбором поисковой системы (Google, DuckDuckGo, Bing и другие) — можно искать, не покидая дашборд;
  • группировка приложений по тегам;
  • «улучшенные» плитки для части популярных сервисов (Pi-hole, Sonarr, Radarr, PlexPy и ряд других) — при указании API-ключа плитка показывает статус или короткую сводку прямо на дашборде, без перехода;
  • поддержка HTTPS средствами самого контейнера (self-signed) — но для прод-домена правильнее вынести SSL на reverse-proxy, об этом ниже.

Если вам нужнее развитый мониторинг «жив/не жив» с виджетами, стоит посмотреть в сторону Homepage — он ближе к дашборду в духе Grafana, чем к чистому лаунчеру. Heimdall — вариант для тех, кому нужна именно быстрая и лёгкая точка входа, без лишней конфигурации в YAML.

Требования и подготовка сервера

Для Heimdall с запасом хватит минимальной конфигурации: 1 vCPU, 512 МБ — 1 ГБ RAM, 5-10 ГБ диска под систему и конфиг (сам Heimdall весит немного, но если на этом же сервере будут крутиться другие контейнеры — закладывайте ресурсы под них отдельно). Понадобится:

  • сервер на Ubuntu 24.04 LTS с доступом по SSH;
  • установленный Docker и Docker Compose plugin;
  • (опционально, но рекомендуется) домен, направленный на IP сервера, и открытые порты 80/443.

Обновите систему и поставьте базовые утилиты:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ca-certificates

Если Docker ещё не установлен, официальный скрипт ставит актуальную версию за пару минут:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

Подробный разбор установки Docker с нуля, включая настройку демона и типичные грабли, — в отдельной статье про установку Docker на Ubuntu 24.04. Если Docker уже стоит — проверьте версию и переходите к следующему шагу:

docker --version
docker compose version

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка Heimdall через Docker Compose

Официальный и наиболее поддерживаемый образ Heimdall выпускает команда LinuxServer.io — он собирается регулярно, покрывает несколько архитектур (amd64/arm64) и следует единому подходу с переменными PUID/PGID, который используют почти все образы этой команды.

Создайте директорию проекта и файл конфигурации:

mkdir -p ~/heimdall/config
cd ~/heimdall
nano docker-compose.yml

Содержимое docker-compose.yml:

services:
  heimdall:
    image: lscr.io/linuxserver/heimdall:latest
    container_name: heimdall
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
    volumes:
      - ./config:/config
    ports:
      - "8080:80"
      - "8443:443"
    restart: unless-stopped

Пара пояснений по переменным:

  • PUID и PGID — идентификаторы пользователя и группы, от имени которых процесс внутри контейнера будет писать файлы в /config. Узнать свои можно командой id $USER; если оставить 1000:1000 на однопользовательской системе — обычно совпадает с первым созданным пользователем.
  • TZ — часовой пояс, влияет на отметки времени в логах и на некоторых плитках.
  • Порты слева от двоеточия — те, что смотрят наружу; их можно менять по вкусу, справа — внутренние порты контейнера (не трогайте).

Поднимаем контейнер:

docker compose up -d

Проверить, что контейнер запустился и не падает в рестарт-луп:

docker compose ps
docker compose logs -f heimdall

Первый старт создаёт SQLite-базу и генерирует самоподписанный SSL-сертификат — это может занять 20-40 секунд, не спешите с выводами, если дашборд не открылся с первой попытки.

Первая настройка через веб-интерфейс

Откройте в браузере http://IP_сервера:8080. При первом заходе Heimdall попросит создать учётную запись администратора — логин, email и пароль. Это локальная авторизация самого приложения, никак не связанная с SSH-доступом к серверу, так что выбирайте пароль, который не совпадает с другими вашими паролями.

Дальше добавление плиток:

  1. На главной странице нажмите + (или пункт «Add Application»).
  2. Начните вводить название сервиса — Heimdall подтянет иконку и цвет из встроенной библиотеки для сотен популярных приложений (Portainer, Nextcloud, Grafana, Pi-hole и так далее). Для менее известных сервисов иконку можно загрузить вручную (SVG/PNG) или оставить заглушку с первой буквой названия.
  3. Укажите URL приложения — обычно это http://IP:порт или внутренний адрес контейнера, если сервисы в одной Docker-сети.
  4. При желании включите «Enhanced application» и впишите API-ключ сервиса — для поддерживаемых приложений плитка начнёт показывать живые данные (например, число активных загрузок в *arr-стеке).
  5. Сохраните — плитка появится на главном экране.

Приложения можно объединять тегами (раздел Settings → Tags) и потом фильтровать дашборд по тегу — удобно, если сервисов много и хочется разделить, скажем, «инфраструктура» и «медиа». В Settings → Search Providers настраивается список поисковых систем для строки поиска сверху — можно оставить только те, которыми реально пользуетесь.

Reverse-proxy и SSL: подключаем свой домен

Открывать дашборд по IP и порту 8080 неудобно и небезопасно для постоянного использования. Правильный вариант — направить домен (например, dash.example.com) на сервер и поставить перед Heimdall reverse-proxy с настоящим Let's Encrypt сертификатом, а порты 8080/8443 контейнера наружу вообще не открывать.

Если на сервере уже стоит nginx, добавьте отдельный конфиг сайта:

server {
    listen 80;
    server_name dash.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Дальше — сертификат через certbot:

sudo certbot --nginx -d dash.example.com

Подробный разбор настройки nginx как reverse-proxy — с обработкой WebSocket, таймаутами и частыми ошибками — в отдельной статье про nginx в роли reverse-proxy на Ubuntu 24.04. Если вы предпочитаете автоматический выпуск сертификатов без ручного certbot, посмотрите вариант с Caddy — там HTTPS настраивается практически без дополнительных шагов.

После того как домен с SSL заработал, закройте порты 8080/8443 в брандмауэре для внешнего доступа (оставьте только 127.0.0.1, если проброс идёт через reverse-proxy на этом же сервере), и в docker-compose.yml можно даже убрать проброс наружу, оставив порт только на loopback:

    ports:
      - "127.0.0.1:8080:80"

Резервное копирование и обновление

Вся конфигурация Heimdall — плитки, теги, настройки, SQLite-база — лежит в смонтированной директории ./config. Это значит, что бэкап дашборда сводится к копированию одной папки:

tar czf heimdall-backup-$(date +%F).tar.gz -C ~/heimdall config

Для регулярных копий разумно завести cron-задачу или использовать общий подход к бэкапам сервера — он подробно разобран в статье про автоматические бэкапы на Ubuntu 24.04, включая ротацию и выгрузку в удалённое хранилище.

Обновление до новой версии образа — стандартная для Docker Compose процедура:

cd ~/heimdall
docker compose pull
docker compose up -d

Старый контейнер останавливается, новый поднимается с той же смонтированной директорией config, так что настройки и плитки никуда не денутся. Если что-то пошло не так после обновления — откатитесь на конкретный тег образа (например, heimdall:2.6.1 вместо latest) и разберитесь с логами уже без спешки.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Нужна ли Heimdall отдельная база данных вроде MySQL?

Нет, по умолчанию используется встроенный SQLite, файл базы лежит в том же примонтированном /config. Для дашборда такого масштаба внешняя СУБД не нужна.

Можно ли поставить пароль на вход в дашборд для всех, а не только логин администратора?

Встроенной ролевой модели с гостевым доступом у Heimdall нет — либо вы залогинены под своей учёткой, либо видите форму входа. Если нужно закрыть доступ дополнительно (например, ограничить по IP или добавить Basic Auth), это делается уже на уровне reverse-proxy.

Что делать, если после docker compose up -d контейнер сразу падает?

В первую очередь смотрите docker compose logs heimdall — чаще всего причина в правах на директорию config (несовпадение PUID/PGID с владельцем папки на хосте). Проверьте владельца командой ls -la ~/heimdall/config и при необходимости выполните sudo chown -R 1000:1000 ~/heimdall/config.

Чем Heimdall отличается от Homepage и Dashy?

Все три — дашборды-лаунчеры, но с разным акцентом. Heimdall проще всего настраивается через UI без единого файла конфигурации, Homepage делает упор на YAML-конфиг и виджеты с метриками, Dashy — на визуальную кастомизацию и множество тем оформления. Если вы уже пробовали Homepage и он показался избыточным — Heimdall стоит попробовать как более лёгкую альтернативу.

Можно ли запустить несколько Heimdall на одном сервере под разные группы сервисов?

Технически да — достаточно поднять второй контейнер с другим внешним портом и отдельной директорией config. Но обычно проще решить задачу тегами внутри одного дашборда: пары минут в UI хватает, чтобы навести порядок без дублирования инфраструктуры.

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →