LOADING
1380 words
7 minutes
Dockhand: удобное управление Docker через веб-интерфейс с Traefik

Dockhand — простой веб-интерфейс для управления Docker

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

Много их - заменителей Portainer, я видел. Но все они так и дотягивались до его функционала.

Фактически реальных конкурентов у Portainer не так и много:

  • Komodo - полностью open source решение, но разработчики сразу целятся в enterprise сектор.

  • Arcane - лично не пробовал, поэтому мнения не имею.

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

И герой сегодняшнего обзора

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


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

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

Ниже — обзор только некоторые возможностей.


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

Dockhand предоставляет полный контроль над контейнерами без необходимости использовать CLI:

  • Запуск, остановка, перезапуск и удаление контейнеров

  • Создание контейнеров с расширенной конфигурацией

  • Просмотр процессов внутри контейнера

  • Доступ к переменным окружения (env vars)

  • Встроенный веб-терминал (без необходимости SSH)

  • Просмотр и передача файлов внутри контейнера

Это делает Dockhand отличной заменой базовым CLI-операциям.


Docker Compose и Stacks

Работа с multi-container приложениями реализована максимально удобно:

  • Поддержка Docker Compose и стеков. Причем можно управлять и стеками, созданными за пределами приложения (как этого добиться я рассказываю в видео)

  • Визуальный редактор Compose (без необходимости писать YAML вручную)

  • Деплой стеков напрямую из Git-репозиториев

  • Автоматическая синхронизация при push (через webhooks)

  • Повторная загрузка образов (re-pull) и принудительный redeploy

  • Импорт проектов из других менеджеров контейнеров

  • Планировщик обновлений и деплоев

Отличный вариант для GitOps-подхода в homelab.


Возможности по мониторингу (Observability)

Dockhand даёт полный контроль над состоянием контейнеров в реальном времени:

  • Live-метрики CPU и памяти для каждого контейнера

  • Потоковое отображение логов в реальном времени (с ANSI-цветами)

  • Журнал активности контейнеров

  • Мониторинг использования диска

  • Уведомления через email и webhooks

Всё это без необходимости настраивать Prometheus и Grafana.


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

Dockhand предлагает мощные встроенные механизмы безопасности:

  • Поддержка OIDC / SSO (любой провайдер)

  • Интеграция с LDAP / Active Directory (платная функция)

  • Role-Based Access Control (RBAC) (платная функция)

  • Сканирование уязвимостей (Grype / Trivy)

Можно легко встроить в существующую IAM-инфраструктуру.


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

Dockhand не ограничивается одним Docker-хостом:

  • Подключение через локальный Docker socket

  • Поддержка удалённых Docker-хостов (TCP + TLS)

  • Hawser-агент для обхода NAT и firewall

  • Быстрое переключение между окружениями

  • Отдельные dashboard-плитки для каждого окружения

Удобно для управления несколькими серверами из одного интерфейса.


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

Dockhand можно адаптировать под себя:

  • Светлая и тёмная темы

  • Настраиваемый размер шрифта

  • Управление колонками (скрытие, отображение, порядок)

  • Изменяемые размеры dashboard-плиток

  • Сохранение пользовательских настроек

Интерфейс реально гибкий, а не “как есть”.


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

Dockhand делает ставку на открытость:

  • Полный исходный код доступен на GitHub

  • Код полностью открыт для изучения

  • Переход на Apache 2.0 запланирован в 2029 году

Подход: «Доверяй, но проверяй» — и здесь это возможно


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

System requirements

КомпонентТребования
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 + auth)

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

services:  # Секция описания сервисов (контейнеров)
  dockhand:  # Имя сервиса (используется внутри compose)
    image: fnsys/dockhand:latest  # Docker-образ (берётся из Docker Hub, тег latest = последняя версия)
    container_name: dockhand  # Явное имя контейнера (удобно для управления и логов)
    restart: unless-stopped  # Политика перезапуска (перезапускать всегда, кроме ручной остановки)
    #ports:  # Проброс портов (сейчас отключён)
    #  - 3000:3000  # Хост:контейнер (если включить — доступ напрямую без Traefik)
    volumes:  # Монтирование томов (данные и сокеты)
      - /var/run/docker.sock:/var/run/docker.sock  # Доступ к Docker API (контейнер управляет Docker ⚠️)
      - /home/stilicho/docker/dockhand/data:/app/data  # Локальная папка для хранения данных приложения
    networks:
      proxy:  # Подключение к сети proxy (используется Traefik)
    labels:
      - "traefik.enable=true"  # Включаем Traefik для этого контейнера
      # =========================
      # HTTP ROUTER (порт 80)
      # =========================
      - "traefik.http.routers.dockhand.entrypoints=web"
      # Traefik слушает входящий трафик на entrypoint "web" (обычно :80)
      # сюда попадает http://dockhand.stilicho.ru
      - "traefik.http.routers.dockhand.rule=Host(`dockhand.stilicho.ru`)"
      # Правило: если Host совпадает — используем этот router
      # Traefik сравнивает заголовок Host
      - "traefik.http.routers.dockhand.middlewares=dockhand-https-redirect"
      # Применяем middleware (редирект на HTTPS)
      # ДО проксирования в контейнер
      - "traefik.http.middlewares.dockhand-https-redirect.redirectscheme.scheme=https"
      # Сам middleware:
      # Traefik НЕ отправляет запрос в контейнер
      # он сразу отвечает клиенту:
      # 301 Redirect → https://dockhand.stilicho.ru
      # =========================
      # HTTPS ROUTER (порт 443)
      # =========================
      - "traefik.http.routers.dockhand-secure.entrypoints=websecure"
      # Входящий HTTPS трафик (обычно порт 443)
      - "traefik.http.routers.dockhand-secure.rule=Host(`dockhand.stilicho.ru`)"
      # То же правило по домену
      - "traefik.http.routers.dockhand-secure.tls=true"
      # Включаем TLS:
      # Traefik завершает SSL (TLS termination)
      # расшифровывает HTTPS → дальше работает как HTTP
      - "traefik.http.routers.dockhand-secure.service=dockhand"
      # Указываем, в какой service отправлять трафик
      # router → service связка
      # =========================
      # SERVICE (куда идёт трафик)
      # =========================
      - "traefik.http.services.dockhand.loadbalancer.server.port=3000"
      # Ключевая строка:
      # Traefik берёт IP контейнера в сети proxy
      # и делает запрос:
      # http://dockhand:3000 (внутри Docker-сети)
      # НЕ через localhost и НЕ через ports
      # =========================
      # СЕТЬ
      # =========================
      - "traefik.docker.network=proxy"
      # Указываем, в какой сети искать контейнер
      # важно, если контейнер в нескольких сетях
      # Traefik возьмёт IP именно из сети proxy
# Описание сетей
networks:
  proxy:
    external: true  # Сеть уже существует (создана отдельно, например для Traefik)

Я использую встроенную базу данных SQlite3, но приложение можно использовать и Postgres.

Более детально с вариантами установки приложения можно ознакомиться на родном сайте


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

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

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

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

Панель управления Dockhand предоставляет наглядный обзор всех ваших Docker-окружений в реальном времени. Интерфейс построен вокруг плиток (tiles), каждая из которых представляет отдельное окружение.

Плитки можно:

  • изменять по размеру
  • перемещать по экрану
  • настраивать под свой рабочий процесс

Это позволяет адаптировать интерфейс под конкретные задачи и приоритеты.


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

Каждое Docker-окружение отображается в виде отдельной плитки с ключевой информацией:

Окружение (Enviroments)

  • Название окружения
  • Иконка
  • Статус подключения

Позволяет сразу понять, доступно ли окружение, что очень удобно на мой взгляд.


Контейнеры (Containers)

  • Количество запущенных контейнеров
  • Количество остановленных контейнеров
  • Общее количество контейнеров

Позволяет быстро контролировать состояния инфраструктуры.

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


Состояние (Health Status)

  • Предупреждения о проблемах
  • Контейнеры в состоянии:
    • unhealthy
    • restarting

Помогает быстро выявить сбои и нестабильные сервисы.


Dockhand позволяет проверять обновлений контейнеров в репозиториях, что, с моей точки зрения, “киллер фича”, позволяет, например, заменить мне приложение Diun. Вы даже можете настроить авто обновление контейнеров. Последнее - совсем небезопасная функция на мой взгляд, так как может привести к установке контейнеров с багами, которые могут повлечь за собой неработоспособность системы. Лучше все-таки сначала читать сhangelog. Поэтому, как мне кажется, узнавать о наличии обновлений - это очень удобно, а вот авто обновление уже на любителя.


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

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

В заголовке каждой плитки отображаются индикаторы состояния:


Фото приложения

Правило для доступа к WebGUI (порт 8006)

Правило для доступа к WebGUI (порт 8006)

Правило для доступа к WebGUI (порт 8006)

Правило для доступа к WebGUI (порт 8006)

Правило для доступа к WebGUI (порт 8006)

Итог

Панель управления Dockhand — это:

  • Полный обзор всех окружений в одном месте
  • Быстрая диагностика проблем
  • Удобная визуализация нагрузки и активности
  • Гибкая настройка интерфейса

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

Dockhand: удобное управление Docker через веб-интерфейс с Traefik
/posts/dockhand-docker-web-ui/
Author
Stilicho2011
Published at
2026-05-30
License
CC BY-NC-SA 4.0

Some information may be outdated