2026 OpenClaw Docker officiel : docker-setup.sh, GHCR & Control UI (18789) Runbook

Environ 13 min de lecture · MACCOME

Cible : ingénieurs qui lisent la doc Docker officielle mais oscillent entre timeouts de build local, échecs de pull GHCR, conflits sur le port 18789 et droits de volume qui bloquent Skills sans chemin ordonné du clone à la Control UI. Résultat : standardiser sur docker-setup.sh plus OPENCLAW_IMAGE optionnel, et partager le travail avec Docker production, Docker réseau et volumes/droits. Plan : six pièges, matrice, runbook en six étapes, tableau de triage, trois KPI, conclusion.

Pourquoi « selon la doc » casse encore sur Docker

Le flux officiel suppose Docker Engine, Compose, disque et sortie cohérents. Mélangé avec npm global ou un autre checkout compose, l’échec ressemble à « OpenClaw est cassé ». Six cas fréquents 2025–2026 :

  1. Ne pas séparer builds sources et pulls GHCR : forcer docker build sur un CI faible sans passer à OPENCLAW_IMAGE.
  2. Anciens conteneurs sur 18789 : essais compose précédents non arrêtés—le nouveau docker-setup.sh ne peut pas lier la Control UI.
  3. Décalage UID/GID sur les volumes : utilisateur conteneur vs droits hôte ~/.openclaw—écritures Skills/état en échec alors que l’UI semble « morte ».
  4. Confondre jumelage et image : WebSocket/jetons vont dans l’article jumelage/jetons—pas un compose pull infini.
  5. Proxy d’entreprise : npm oui, ghcr.io non : miroir ou liste blanche ; même famille de diagnostic que le runbook d’installation npm.
  6. Plusieurs checkouts partagent env/volumes : jetons obsolètes depuis des dossiers mélangés.

Tableau 1 : build local vs OPENCLAW_IMAGE (GHCR)

Choisir un chemin principal dans le ticket et documenter le rollback sur l’autre—éviter le mélange verbal.

DimensionBuild source par défautOPENCLAW_IMAGE tire GHCR
Idéal pourModifs Dockerfile perso, debug cache build, pas de sortie ghcrTemps jusqu’à l’UI le plus court, bande passante limitée, CI qui met en cache les images plutôt que les dépôts
PrérequisCPU/RAM suffisants ; cache de couches en Goghcr.io ou miroir interne joignable ; épingler au-delà du seul latest
RisquesTimeouts de build, cache gonflé, contention CPUAuth/limites de débit, dérive de tag, décalage config vs binaire
RollbackPasser à l’image préconstruite en gardant le même chemin de volume de donnéesRevenir au digest précédent ou au build source ; journaliser les changements compose
info

Note : les dépôts upstream évoluent ; les commandes supposent un checkout avec docker-setup.sh à la racine—noter commit et chemin du script si votre fork diffère.

Runbook en six étapes : clone jusqu’à la Control UI sur 18789

  1. Prévol Docker : docker version et Compose v2 ; disque pour couches/volumes (aligné sur le tableau ressources de la production).
  2. Clone et racine du dépôt : docker-setup.sh exécutable (chmod +x si besoin).
  3. (Option) Image préconstruite : export OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest—en production épingler digest ou tags stables, pas seulement suivre les tags.
  4. Lancer le script : ./docker-setup.sh ; les journaux montrent pull/build et compose up sans sortie immédiate non nulle.
  5. Ouvrir la Control UI : http://127.0.0.1:18789 (révision différente → port selon le build) ; la page charge, pas de connexion refusée.
  6. Validation minimale : healthcheck documenté dans l’UI ou la CLI ; pour le jumelage, suivre l’arbre jumelage/jetons avant de modifier la config applicative.
bash
# Préférer GHCR (remplacer le tag selon la politique)
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./docker-setup.sh

# Après succès, la Control UI doit charger (ex. port 18789)
# open http://127.0.0.1:18789

Tableau 2 : symptômes → vérifications (ordre de triage)

De haut en bas ; ne pas changer image, réseau et volumes en même temps.

SymptômeVérifier d’abordLire aussi
Timeout build / OOMPasser à OPENCLAW_IMAGE ; limiter la parallélisation buildkit ; purger le cacheDocker production (ressources)
401/403/TLS au pullListes proxy pour ghcr.io ; miroir interne—pas seulement le registre npmRunbook npm (proxy)
address already in use :18789docker ps pour conteneurs obsolètes ; arrêter l’ancien compose ou remapper le port selon la docDocker réseau
Permission denied sur volumesUID/GID hôte vs utilisateur conteneur ; montages nommés vs bindChecklist volumes/Skills
UI charge mais canal muetÉcarter modèle/canaux ; puis codes jeton/WSJumelage/jetons

Trois KPI pour tickets et tableaux de bord

  1. Identité d’image : journaliser registre + tag + digest quand possible—pas seulement « latest » ; rollback par digest.
  2. Atteignabilité Control UI : séparer HTTP 200 / titre / healthcheck de « le processus conteneur existe ».
  3. Contrat de volumes : mapper ~/.openclaw hôte (ou chemin équipe) sur les montages compose ; snapshot taille et droits avant/après upgrade.

Si les notes de version upstream divergent, faire confiance à upstream ; cet article fournit des points de contrôle d’ingénierie.

Pourquoi un essai sur portable devient rarement un Gateway de prod

Veille, disques fragmentés et restes Docker Desktop s’opposent à CPU dédié, sortie stable, volumes auditables et frontières de jetons. Conteneurs éphémères sans digest épinglé, sans contrat de volume ni healthcheck, cassent au premier trafic réel.

Les équipes qui hébergent Gateway longtemps sur Apple Silicon stable gagnent après cette boucle minimale avec les Mac cloud MACCOME multi-régions et locations flexibles—consulter les tarifs publics et le centre d’aide location Mac mini avec les articles production et jumelage.

Pilote : exécuter les six étapes sur un hôte distant dédié, noter digest et snapshots de volumes, puis fixer conditions mensuelles/trimestrielles et supervision.

FAQ

Lire d’abord cet article ou Docker production ?

Ce runbook pour le premier chemin UI réussi ; la production pour fenêtres de changement, rollback et supervision. Tarifs : tarifs de location Mac mini.

OPENCLAW_IMAGE entre-t-il en conflit avec la CLI npm globale ?

Les conflits se concentrent sur ports, variables et répertoires de données ; un Gateway principal par hôte. Ordre de migration : runbook d’installation npm.

Puis-je exposer 18789 publiquement ?

Mettre reverse proxy et TLS devant—lire les sections sécurité des articles production/reverse-proxy plutôt que lier 0.0.0.0 aveuglément. Aide : centre d’aide location Mac mini.