Dockhand est une interface web de gestion Docker self-hosted construite avec SvelteKit et Bun, orientée sécurité et équipes. Elle intègre nativement le scan de vulnérabilités via Grype ou Trivy sur les images déployées, l'authentification SSO/OIDC et un RBAC optionnel (Enterprise). L'agent Hawser (MIT, écrit en Go) permet de gérer des hôtes Docker distants en initiant des connexions sortantes vers le hub central - aucun port exposé côté agent. Dockhand est sous licence BSL 1.1, qui passe automatiquement sous Apache 2.0 le 1er janvier 2029.
Informations essentielles
Origine : Communauté (Finsys) · Licence : BSL 1.1 (→ Apache 2.0 le 01/01/2029) · Architectures : x86_64, ARM64
Liens : Site officiel · GitHub · Releases
Support : Projet communautaire actif, releases fréquentes depuis fin 2025.
Stack par défaut
| Composant | Valeur |
|---|---|
| Backend | SvelteKit 2 + Svelte 5 + Bun |
| Base de données | SQLite (défaut) ou PostgreSQL |
| Interface | Dashboard web |
| Agent distant | Hawser - MIT, Go (hôtes Docker remote) |
| Scan images | Grype ou Trivy (configurable) |
| Auth | Local, OIDC/SSO |
| Port | 3000 (HTTP) |
Prérequis
| Ressource | Valeur |
|---|---|
| Docker | Engine installé |
| Port | 3000 (UI) |
| RAM | ~100 Mo pour le container Dockhand |
Installation
Docker Compose
# docker-compose.yml
services:
dockhand:
image: fnsys/dockhand:latest
container_name: dockhand
restart: always
ports:
- "3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- dockhand_data:/app/data
environment:
- DOCKHAND_SECRET=changeme-secret-key
# OIDC (optionnel)
# - OIDC_ISSUER=https://accounts.google.com
# - OIDC_CLIENT_ID=xxx
# - OIDC_CLIENT_SECRET=xxx
volumes:
dockhand_data:
docker compose up -d
# Accéder à l'UI
# http://localhost:3000
Docker (standalone)
docker run -d \
--name dockhand \
--restart always \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v dockhand_data:/app/data \
-e DOCKHAND_SECRET=changeme \
fnsys/dockhand:latest
Vérification
docker ps | grep dockhand
curl http://localhost:3000/api/health
Agent Hawser (hôtes distants)
Hawser est l'agent Go (MIT) à déployer sur les hôtes Docker distants. Il initie des connexions sortantes vers le hub Dockhand - aucun port entrant à ouvrir côté agent.
# Sur l'hôte distant
docker run -d \
--name hawser \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-e HAWSER_TOKEN=token-secret \
-e DOCKHAND_URL=https://dockhand.example.com \
ghcr.io/finsys/hawser:latest
Dans l'UI Dockhand : Settings → Hosts → Add host → entrer le token Hawser généré.
Scan de vulnérabilités
Dockhand peut scanner les images des containers déployés via Grype ou Trivy. La configuration se fait dans les paramètres de l'UI :
# Variables d'environnement
SCANNER=grype # ou trivy
SCAN_ON_DEPLOY=true # Scanner automatiquement à chaque déploiement
Les résultats sont affichés dans l'interface par container avec le niveau de sévérité (Critical, High, Medium, Low).
Fonctionnalités principales
| Fonctionnalité | Description |
|---|---|
| Gestion containers | Start, stop, restart, remove, logs, exec |
| Stacks Compose | Déployer et gérer des stacks Docker Compose |
| Images | Pull, suppression, liste avec tailles |
| Volumes | Liste, inspection |
| Réseaux | Liste, création |
| Scan vulnérabilités | Via Grype ou Trivy sur les images |
| Multi-hôtes | Gestion via agent Hawser |
| Auth OIDC/SSO | Google, Keycloak, Authentik… |
Mise à jour
docker compose pull && docker compose up -d
Troubleshooting
# Logs
docker logs dockhand --tail 50
# Vérifier l'accès au socket Docker
docker exec dockhand docker ps
# Réinitialiser les données
docker stop dockhand && docker rm dockhand
docker volume rm dockhand_data
# Relancer
Ressources
- Site officiel : https://dockhand.pro
- GitHub : https://github.com/Finsys/dockhand
- Releases : https://github.com/Finsys/dockhand/releases
- Agent Hawser : https://github.com/Finsys/hawser