Après avoir testé Hawser en mode Standard, j’ai maintenant besoin de manager un serveur Docker via DockHand, alors qu’il n’est pas directement joignable depuis mon infra locale.
Lors de la présentation de Hawser, j’avais bien parlé de ces deux modes. C’est l’occasion pour moi de le mettre en pratique.
Car oui, je me suis bien habitué à l’interface DockHand et je veux pouvoir l’utiliser pour m’adapter à ces différents cas :
- ➡️ serveur derrière un NAT ;
- ➡️ firewall un peu fermé ;
- ➡️ IP dynamique ;
- ➡️ pas envie d’ouvrir un port entrant juste pour l’agent.
Donc oui, pour ces cas de figure, le mode Edge de Hawser devient beaucoup plus intéressant.
Mode Edge
L’agent Hawser initie la connexion vers DockHand au lieu d’attendre une connexion entrante.
Flux sortant
Pratique quand on veut éviter d’exposer un port Hawser côté serveur Docker.
Supervision
DockHand garde la vue sur les containers, stacks, logs, ressources et alertes.
Prérequis
Comme toujours, je suis sur une base Debian et voici les deux points de prérequis pour avancer avec moi :
- ➡️Environnement Docker et Docker Compose installés
- ➡️DockHand déjà déployé et accessible
1. Créer l’environnement Edge dans DockHand
Dans DockHand :
- 1️⃣ Depuis le dashboard de DockHand, avec le
+, créer un nouvel environnement - 2️⃣ Choisir le type de connexion Hawser - Edge
- 3️⃣ Cliquer sur le bouton de génération du token

- 4️⃣Récupérez bien l’URL et le token
Copy this token now - you'll need it for the Hawser agent!
TOKEN=Yi7cUygvirth9d53DSLnweEtapgZbsmy3hzSjr29mWc
Run on your host:
DOCKHAND_SERVER_URL=wss://votredockhand.votredomaine.fr/api/hawser/connect
- Stockez bien ces informations pour venir remplir votre
.env.
2. Préparer le dossier Hawser
Sur le serveur Docker distant :
mkdir -p ~/docker/hawser/stacks
cd ~/docker/hawser
Puis préparer le fichier d’environnement :
nano .env
# TODO: adapter avec les valeurs fournies par DockHand
HAWSER_AGENT_NAME=Hawser-Edge-VM-Test
HAWSER_EDGE_URL=wss://votredockhand.votredomaine.fr/api/hawser/connect
HAWSER_EDGE_TOKEN=Yi7cUygvirth9d53DSLnweEtapgZbsmy3hzSjr29mWc
3. Docker Compose Hawser Edge
Voilà, on a notre arborescence et notre .env, on peut commencer notre Docker Compose.
nano docker-compose.yml
services:
hawser:
image: ghcr.io/finsys/hawser:latest
container_name: hawser-edge
restart: unless-stopped
env_file:
- .env
environment:
AGENT_NAME: "${HAWSER_AGENT_NAME}"
STACKS_DIR: "./stacks"
LOG_LEVEL: "info"
# Variables DockHand pour le mode Hawser Edge
DOCKHAND_SERVER_URL: "${HAWSER_EDGE_URL}"
TOKEN: "${HAWSER_EDGE_TOKEN}"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./stacks:/opt/hawser-stacks
Docker socket
Même en mode Edge, Hawser accède à /var/run/docker.sock donc on garde un token solide, un serveur à jour et un accès SSH propre 💪
4. Lancer l’agent
Allez, on est tout bon, on peut lancer notre agent Hawser :
sudo docker compose up -d
Comme toujours, je ne vais même pas voir l’interface web de mon DockHand sans avoir fait un :
sudo docker compose logs -f
Et voilà, on est bien connecté à DockHand :
hawser-edge | ╭─────────────────────────────────────╮
hawser-edge | │ HAWSER AGENT │
hawser-edge | │ Remote Docker Agent for │
hawser-edge | │ Dockhand │
hawser-edge | ╰─────────────────────────────────────╯
hawser-edge | Version: 0.2.42 (3d997fa)
hawser-edge | Agent ID: 138a733a-a598-48a2-ac9b-0825c5ac3f62
hawser-edge | Agent Name: Hawser-Edge-VM-Test
hawser-edge | Docker Socket: /var/run/docker.sock
hawser-edge | Log Level: INFO
hawser-edge |
hawser-edge | 2026/05/20 11:02:30 [INFO] Starting in Edge mode, connecting to wss://votredockhand.votredomaine.fr/api/hawser/connect
hawser-edge | 2026/05/20 11:02:30 [INFO] Connected to Docker 29.4.3 (API 1.54)
hawser-edge | 2026/05/20 11:02:30 [INFO] Connecting to wss://votredockhand.votredomaine.fr/api/hawser/connect
hawser-edge | 2026/05/20 11:02:30 [INFO] Starting health server on 0.0.0.0:2376
hawser-edge | 2026/05/20 11:02:31 [INFO] Welcome received, environment ID: 0
hawser-edge | 2026/05/20 11:02:31 [INFO] Connected to Dockhand server
hawser-edge | 2026/05/20 11:02:31 [INFO] Connected to Docker events stream
Docker socket
Pour ceux qui veulent pousser la sécurité, vous avez deux options simples :
- ✅une connexion WireGuard entre les deux : mon choix pour faire passer d’autres besoins
- ✅un petit label Traefik restrictif :
traefik.http.routers.dockhand-hawser-edge.rule=Host(`votredockhand.votredomaine.fr`) && PathPrefix(`/api/hawser/connect`).
5. Vérifier côté DockHand
Et voilà, très rapidement sur votre dashboard, vous avez votre nouvel agent.

À retenir
C’est sans appel, le couple DockHand et Hawser est bien rodé, la doc est claire et le mode Edge est vraiment simple à mettre en place.
Donc si vous avez des serveurs à l’extérieur de votre environnement, pas de panique : il y a des solutions simples et sécurisées pour les manager et les monitorer.
Logs Hawser
Une fois que vous avez terminé la mise en place et que le fonctionnement est OK entre DockHand et Hawser, je vous conseille de passer la variable LOG_LEVEL à warn ou error pour limiter les logs, car il est très verbeux.
Sources
Cet article vous a-t-il été utile ?
Votre retour aide à mieux choisir les prochains sujets.