↓ Перейти к основному содержимому
  1. Posts/
  2. Docker UI/

Dockhand - веб-интерфейс для Docker с интеграцией Traefik

Stilicho2011
Автор
Stilicho2011
Пишу о homelab, self-hosting, автоматизации и open-source решениях
Оглавление
Docker-панели управления - This article is part of a series.
Part : This Article

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

Много их - заменителей Portainer я видел. Но большинство из них так и не дотягивают до его функционала. Реальных конкурентов на самом деле немного:

  • Komodo - полностью open source, но разработчики сразу целятся в enterprise-сектор.
  • Arcane - лично не пробовал, поэтому мнения не имею.
  • Dockge - не полноценная замена: целевая группа исключительно хоумлабберы, а функционал заметно упрощен, если сравнивать с решениями для профессиональной среды.

И герой сегодняшнего обзора - Dockhand, легкий и минималистичный веб-интерфейс для Docker, который отлично вписывается в любой homelab и особенно хорошо работает в связке с обратным прокси Traefik.

Возможности Dockhand
#

Dockhand - не просто веб-интерфейс для Docker, а полноценный инструмент управления контейнерной инфраструктурой с упором на удобство, автоматизацию и безопасность. Пройдусь по тому, что показалось важным при знакомстве - не все подряд, а то, что реально пригодится в homelab.

Управление контейнерами
#

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

Docker Compose и Stacks
#

Работа с multi-container приложениями сделана удобно: поддержка Compose и стеков, причем можно управлять и стеками, созданными за пределами самого приложения (как этого добиться - показываю в видео). Есть визуальный редактор Compose, чтобы не писать YAML руками, деплой стеков прямо из Git-репозиториев с автосинхронизацией по push через webhooks, повторная загрузка образов и принудительный redeploy, импорт проектов из других менеджеров контейнеров и планировщик обновлений. Для GitOps-подхода в homelab - отличный вариант.

Мониторинг (Observability)
#

Live-метрики CPU и памяти по каждому контейнеру, потоковые логи в реальном времени с ANSI-цветами, журнал активности, мониторинг диска, уведомления через email и webhooks - и все это без необходимости отдельно поднимать Prometheus с Grafana (о том, как разворачивать такой стек целиком - LGTM, Loki + Grafana + Tempo + Mimir - расскажу в отдельной статье, скоро). Для домашнего сервера, где разворачивать полноценный стек мониторинга ради пары контейнеров избыточно, это ровно тот уровень наблюдаемости, который нужен.

Безопасность
#

OIDC/SSO с любым провайдером есть бесплатно, а вот интеграция с LDAP/Active Directory и полноценный RBAC - уже платные функции. Отдельно есть сканирование уязвимостей через Grype/Trivy (о нем чуть ниже - на практике все не так однозначно, как звучит на бумаге). Встроить в существующую IAM-инфраструктуру можно без проблем.

Multi-host управление
#

Dockhand не ограничен одним Docker-хостом: подключение через локальный сокет, поддержка удаленных хостов по TCP+TLS, отдельный Hawser-агент для обхода NAT и firewall, быстрое переключение между окружениями и своя dashboard-плитка под каждое. Удобно, если серверов несколько и не хочется держать открытыми полдесятка вкладок.

Кастомизация интерфейса
#

Светлая/темная тема, настраиваемый размер шрифта, управление колонками (скрыть/показать/переставить порядок), изменяемые размеры плиток дашборда, сохранение личных настроек. Интерфейс реально гибкий, а не “как есть, привыкайте”.

Прозрачность и лицензия
#

Исходники полностью открыты на GitHub, переход на Apache 2.0 запланирован на 2029 год (сейчас - Business Source License, подробнее о ее нюансах я разбирал в статье про сравнение с Arcane и Komodo). Подход “доверяй, но проверяй” здесь реально работает - код можно почитать.

Системные требования
#

КомпонентТребования
Docker Engine20.10 или новее
Docker API1.41 или новее
Память512 MB минимум, 1 GB рекомендовано
БраузерChrome, Firefox, Safari, Edge
База данныхSQLite (по умолчанию) или PostgreSQL 14+

Важно перед установкой
#

Warning

Dockhand использует /var/run/docker.sock, а значит контейнер получает полный доступ к Docker - фактически это root-доступ к системе. Используйте только в доверенной сети и закрывайте доступ через reverse proxy с аутентификацией (например, Traefik + Authelia/Authentik).

Вариант docker-compose файла, который использовался в видео:

services:
  dockhand:
    image: fnsys/dockhand:latest
    container_name: dockhand
    restart: unless-stopped
    #ports:
    #  - 3000:3000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/stilicho/docker/dockhand/data:/app/data
    networks:
      proxy:
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dockhand.entrypoints=web"
      - "traefik.http.routers.dockhand.rule=Host(`dockhand.stilicho.ru`)"
      - "traefik.http.routers.dockhand.middlewares=dockhand-https-redirect"
      - "traefik.http.middlewares.dockhand-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.dockhand-secure.entrypoints=websecure"
      - "traefik.http.routers.dockhand-secure.rule=Host(`dockhand.stilicho.ru`)"
      - "traefik.http.routers.dockhand-secure.tls=true"
      - "traefik.http.routers.dockhand-secure.service=dockhand"
      - "traefik.http.services.dockhand.loadbalancer.server.port=3000"
      - "traefik.docker.network=proxy"

networks:
  proxy:
    external: true

Разбор по пунктам:

  • /var/run/docker.sock - тот самый доступ к Docker API, о котором предупреждение выше; без него приложение не сможет управлять контейнерами.
  • ports закомментирован - если раскомментировать, получите прямой доступ по порту без Traefik, для теста это иногда быстрее, но постоянно так лучше не оставлять.
  • HTTP/HTTPS роутеры - обычная связка редиректа на HTTPS и TLS-терминации, тот же паттерн, что и в остальных статьях сайта с Traefik.
  • loadbalancer.server.port=3000 - Traefik берет IP контейнера в сети proxy и стучится на этот порт внутри Docker-сети, а не через localhost или проброшенные ports.

Я использую встроенную SQLite, но приложение спокойно работает и с Postgres. Более детально с вариантами установки - на официальном сайте.

Первый запуск
#

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

В итоге встречает пустая панель - потому что первое окружение (environment) еще не подключено.

Панель управления (Dashboard)
#

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

Плитки окружений (Environment Tiles)
#

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

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

Отдельно - индикаторы состояния (Health Status): предупреждения о проблемах и явные метки для контейнеров в unhealthy или restarting. Помогает быстро выявить сбои, не открывая логи каждого контейнера по очереди.

Проверка обновлений
#

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

Сканирование уязвимостей
#

В Dockhand встроена проверка уязвимостей контейнеров. На бумаге звучит привлекательно, но по факту пользы немного: встроенные сканеры почти всегда что-нибудь найдут (это тема для отдельной статьи), что приводит либо к панике у новичков, либо к тому, что система блокирует работу абсолютно здорового контейнера. Функция скорее для галочки в списке возможностей, чем реальный инструмент безопасности - но, справедливости ради, и Grype, и Trivy под капотом реальные, просто их выводу для чужих Docker-образов доверять на 100% не стоит без ручной проверки.

Скриншоты
#

Окно обновления Dockhand с changelog
Добавление нового environment через Unix socket
Общие настройки Dockhand
Список контейнеров в Dockhand
Список compose-стеков в Dockhand

Итог
#

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

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

Docker-панели управления - This article is part of a series.
Part : This Article

Related

Arcane - современный менеджер Docker, обзор, установка и настройка

·1649 слов·8 минут· loading · loading
Обзор Arcane - молодое, но быстро развивающиеся приложение - веб-интерфейс для Docker - и пошаговая инструкция по установке, настройке секретов, подключению существующих compose-проектов и базовой защите сокета.

Переезжаем с Portainer на Komodo - полная установка и настройка

··5396 слов·26 минут· loading · loading
Пошаговая инструкция по установке Komodo как альтернативы Portainer: docker-compose, MongoDB, bind mount вместо volumes, вход через Authentik (OIDC) и подключение дополнительных хостов через Periphery.