Если ты устал от постоянной работы в терминале, тебя не устраивает 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 Engine | 20.10 или новее |
| Docker API | 1.41 или новее |
| Память | 512 MB минимум, 1 GB рекомендовано |
| Браузер | Chrome, Firefox, Safari, Edge |
| База данных | SQLite (по умолчанию) или PostgreSQL 14+ |
Важно перед установкой#
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 дает полный обзор всех окружений в одном месте, быструю диагностику проблем, удобную визуализацию нагрузки и активности и гибкую настройку интерфейса под себя.
Как итог - Dockhand отличная замена Portainer в домашнем окружении и хороший выбор, если нужен баланс между простотой и функциональностью, а не полноценная enterprise-платформа со всеми вытекающими сложностями настройки.




