Skip to content
U UOpsLab
infra-devops self-hosted Docker tutoriels DockHand Hawser

Hawser : connecter des serveurs Docker à DockHand

Installer Hawser en Docker Compose pour rattacher un hôte Docker local à DockHand, avec un focus sur le mode Standard en réseau local.

R

Raynal.T

10 min de lecture
Hawser remote agent connecté à DockHand

Quand on administre plusieurs serveurs Docker, on finit vite avec le même petit rituel :

  • 🔹une session SSH ici
  • 🔹un docker ps
  • 🔹un docker compose pull && docker compose up -d un peu partout

Ça marche. Mais ce n’est pas franchement confortable.

C’est pour ça que j’ai rapidement cherché un manager Docker capable de piloter les containers, les updates, les stacks Compose et les environnements depuis une interface propre. Le plus connu c’est Portainer.io, mais je n’ai jamais été totalement emballé. Avec le temps et pas mal de lecture sur ce sujet je suis tombé sur DockHand.

Dans mon besoin, je voulais aussi pouvoir installer des agents distant. Et là aussi, DockHand répond présent avec Hawser.

Voici donc le petit focus du jour : un manager et des agents pour les gouverner tous.

DockHand

Une interface moderne pour gérer containers, stacks Compose, logs, terminal et environnements Docker. Sous licence BSL 1.1, donc OK pour un usage personnel et interne.

Hawser

Un agent léger en Go qui sert de relais entre DockHand et un hôte Docker. Il propose deux modes de connexion : Standard ou Edge.

Multi-serveurs

Un seul manager pour plusieurs machines Docker, même quand elles ne sont pas dans le même réseau.

Pourquoi DockHand plutôt que Portainer ?

Portainer.io reste un outil connu, installé partout, et il rend service. Je ne vais pas refaire l’histoire.

Mais à l’usage, DockHand me parle davantage sur plusieurs points :

  • 👉 une interface plus moderne et plus lisible
  • 👉 une vraie orientation Docker Compose / stacks
  • 👉 une gestion multi-environnements claire
  • 👉 des logs temps réel et un terminal intégrés
  • 👉 une approche plus directe pour gérer les hôtes distants avec Hawser
  • 👉 du scan de vulnérabilités avec Grype et Trivy, même si l’actualité autour de Trivy est un peu sportive en ce moment.

Ce n’est pas une guerre de religion. Si Portainer fait le travail chez vous, très bien. De mon côté, il me manquait quelque chose. DockHand a ce côté plus fluide que j’aime bien : on arrive, on comprend vite où sont les containers, les stacks, les images, les volumes, les réseaux, les updates et les alertes. Bref, ça donne envie de s’en servir.

Hawser : Standard ou Edge ?

Hawser propose deux modes de fonctionnement.

ModePrincipeCas typique
StandardHawser écoute sur le serveur Docker, DockHand vient se connecter dessus.LAN, homelab, IP fixe, firewall maîtrisé.
EdgeHawser initie une connexion WebSocket sortante vers DockHand.VPS, NAT, IP dynamique, serveur derrière un firewall.

Dans cet article, je pars sur Standard mode.

Pourquoi ? Parce que dans mon cas, tout se passe sur le réseau local.

DockHand peut donc joindre directement chaque serveur Docker sur le port de Hawser. Pas besoin de WebSocket sortant, pas besoin de traverser un NAT, pas besoin de rendre DockHand public juste pour rattacher une machine du LAN.

On reste simple : Hawser écoute sur le serveur Docker, DockHand vient se connecter dessus, et chacun garde sa place.

Standard mode

Le bon choix en réseau local : Hawser écoute sur le serveur Docker, DockHand s’y connecte directement.

Edge mode

Très pratique hors LAN : l’agent sort vers DockHand en WebSocket, sans port entrant à publier côté serveur Docker.

Prérequis

Pour ce tuto, je pars du principe que :

  • ➡️ Docker est déjà installé sur le serveur distant ;
  • ➡️ DockHand est déjà installé et fonctionnel ;
  • ➡️ DockHand peut joindre le serveur Docker sur le réseau local ;
  • ➡️ le port 2376 est autorisé entre DockHand et le serveur Docker ;
  • ➡️ vous avez accès à l’interface DockHand pour créer un environnement Hawser Standard ;

1. Préparer le serveur Docker distant

Sur le serveur où on installera l’agent Hawser, positionnez-vous là où vous avez l’habitude de créer vos configurations Docker et on prépare son arboressence :

sudo mkdir -p hawser/stacks
sudo chown -R "$USER":"$USER" hawser
sudo chmod 755 hawser
cd hawser

Ce dossier est important si vous voulez que DockHand puisse créer ou gérer des stacks Compose sur ce serveur via Hawser.

2. Créer le token Hawser

En mode Standard, le token se crée côté agent Hawser.

Ensuite, on le renseignera dans DockHand pour que le manager puisse s’authentifier auprès de l’agent. Donc oui : dans ce scénario, on installe Hawser avant de finaliser la connexion dans DockHand.

On génère un token propre et on le place directement dans le fichier .env :

HAWSER_TOKEN="$(openssl rand -hex 32)"
printf 'HAWSER_TOKEN=%s\n' "$HAWSER_TOKEN" > .env
chmod 600 .env
echo "$HAWSER_TOKEN"

La valeur affichée par echo est celle qu’il faudra ensuite coller dans DockHand. Le fichier .env, lui, reste sur le serveur et sera utilisé par Docker Compose.

3. Installer Hawser avec Docker Compose

On pourrait lancer Hawser avec un simple docker run, mais pour moi Docker Compose est plus propre.

On a un fichier lisible, versionnable, facile à relancer, facile à déplacer. Bref : moins de magie dans l’historique du terminal, plus de structure.

Toujours dans votre répertoire hawser, avec le fichier .env créé juste avant, créez le fichier docker-compose.yml :

sudo nano docker-compose.yml

Puis ajoutez :

services:
  hawser:
    image: ghcr.io/finsys/hawser:latest
    container_name: hawser
    restart: unless-stopped
    env_file:
      - .env
    environment:
      PORT: "2376"
      TOKEN: "${HAWSER_TOKEN}"
      AGENT_NAME: "srv-docker-01"
      STACKS_DIR: "./stacks"
      LOG_LEVEL: "info"
    ports:
      - "2376:2376"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./stacks:/opt/hawser-stacks

Puis on lance l’agent :

docker compose up -d
docker compose logs -f hawser

Si tout se passe bien, Hawser écoute maintenant sur 2376.

hawser  | ╭─────────────────────────────────────╮
hawser  |           HAWSER AGENT
hawser  |     Remote Docker Agent for
hawser  |           Dockhand
hawser  | ╰─────────────────────────────────────╯
hawser  | Version: 0.2.42 (3d997fa)
hawser  | Agent ID: 79134fc8-c696-4c3a-85ca-7ec9b30e866f
hawser  | Agent Name: test-uopslab
hawser  | Docker Socket: /var/run/docker.sock
hawser  | Log Level: INFO
hawser  |
hawser  | 2026/05/09 07:45:05 [INFO] Starting in Standard mode on port 2376
hawser  | 2026/05/09 07:45:05 [INFO] Connected to Docker 29.4.1 (API 1.54)
hawser  | 2026/05/09 07:45:05 [INFO] Starting HTTP server on 0.0.0.0:2376

Depuis la machine DockHand, vous pouvez déjà tester que le port répond avec l’IP ou le nom DNS de votre serveur Hawser :

nc -vz 0.0.0.0 2376

4. Déclarer l’agent dans DockHand

Maintenant que l’agent existe, on peut le déclarer dans DockHand.

On se connecte au portaiil web du manager DockHand :

  1. 1️⃣ Depuis le Dashboard principal ou dans Settings puis Environments, cliquez sur le bouton pour créer un nouvel environnement.
  2. 2️⃣ Remplissez comme vous le souhaitez le nom et les labels.
  3. 3️⃣ Choisissez le type de connexion Hawser - Standard.
Sélection du type de connexion Hawser Standard dans DockHand
  1. 4️⃣ Indiquez l’adresse de l’agent Hawser, confirmez le port, laissez le protocole http, puis collez le token fraîchement créé dans le fichier .env.
Valider l’IP de connexion de l’agent, son port et son token

Une fois que vous avez le sésame, le bouton de confirmation doit passer au vert.

Test connection OK

Et là, avant de valider, vous pouvez vous promener dans les onglets suivants pour affiner le paramétrage, activer les notifications et le scan de vulnérabilités. Pas de panique, on pourra y revenir.

Environnement OK

Et si on revient sur le dashboard principal, on a une vue d’ensemble de l’état de l’environnement Docker : le nombre de containers, les ressources, les updates en attente… C’est quand même bien plus stylé qu’un docker ps.

Environnement Dashboard

5. Manager avec DockHand

La liste de tout ce qu’on peut faire depuis DockHand est loin d’être exhaustive. Je pense d’ailleurs que je ferai un tuto dédié prochainement.

Les fonctions utiles après connexion

Piloter les containers

  • ➡️ Voir les containers en temps réel.
  • ➡️ Démarrer, arrêter ou redémarrer rapidement un service.
  • ➡️ Suivre les ressources CPU / mémoire.
  • ➡️ Garder un œil sur les images, volumes et networks.
  • ➡️ Rechercher et lancer les mises à jours

Gérer les stacks Compose

  • ➡️ Créer et modifier des stacks Docker Compose depuis l’interface.
  • ➡️ Déployer sans jongler entre plusieurs fichiers ouverts en SSH.
  • ➡️ Travailler depuis Git quand la stack doit rester versionnée.
  • ➡️ Suivre les mises à jour plus proprement.

Exploiter sans sortir le bazooka

  • ➡️ Consulter les logs directement depuis DockHand.
  • ➡️ Ouvrir un shell dans un container si besoin.
  • ➡️ Parcourir les fichiers côté container.
  • ➡️ Diagnostiquer les petits soucis sans dégainer la session SSH réflexe.

Garder un minimum de garde-fous

  • ➡️ Centraliser plusieurs environnements Docker.
  • ➡️ Gérer les accès et les connexions Hawser avec token.
  • ➡️ Activer le scan de vulnérabilités.
  • ➡️ Gagner en visibilité sans prétendre remplacer une vraie politique de sécurité.

À retenir

DockHand + Hawser, avec son interface moderne, permettent de disposer d’une console centralisée pour rattacher et administrer plusieurs serveurs Docker. En fonction de votre architecture réseau et de vos contraintes de sécurité, vous pouvez choisir entre les modes Standard et Edge afin de maîtriser précisément les flux de communication.

Pour un homelab ou une petite infrastructure self-hosted en réseau local, le mode Hawser Standard est particulièrement pratique : lisible, direct et facile à diagnostiquer.

Un DockHand pour les gouverner tous 😉

Sources

Cet article vous a-t-il été utile ?

Votre retour aide à mieux choisir les prochains sujets.

Retour aux articles
Share:

Suivre UOpsLab

Nouveaux articles, retours terrain et notes de lab.