Docker est facultatif. Utilisez-le uniquement si vous voulez un Gateway conteneurisé ou valider le flux Docker.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Docker est-il adapté à mon cas ?
- Oui : vous voulez un environnement Gateway isolé et jetable, ou exécuter OpenClaw sur un hôte sans installations locales.
- Non : vous l’exécutez sur votre propre machine et voulez simplement la boucle de développement la plus rapide. Utilisez plutôt le flux d’installation normal.
- Remarque sur le sandboxing : le backend de sandbox par défaut utilise Docker lorsque le sandboxing est activé, mais le sandboxing est désactivé par défaut et n’exige pas que l’ensemble du Gateway s’exécute dans Docker. Les backends de sandbox SSH et OpenShell sont également disponibles. Voir Sandboxing.
Prérequis
- Docker Desktop (ou Docker Engine) + Docker Compose v2
- Au moins 2 Go de RAM pour la construction de l’image (
pnpm installpeut être arrêté pour cause d’OOM sur les hôtes de 1 Go avec le code de sortie 137) - Suffisamment d’espace disque pour les images et les journaux
- En cas d’exécution sur un VPS/hôte public, consultez
Renforcement de la sécurité pour l’exposition réseau,
en particulier la politique de pare-feu Docker
DOCKER-USER.
Gateway conteneurisé
Build the image
main, latest, <version> (par exemple 2026.2.26).Complete onboarding
- demander les clés d’API des fournisseurs
- générer un jeton Gateway et l’écrire dans
.env - créer le répertoire de clé secrète du profil d’authentification
- démarrer le Gateway via Docker Compose
openclaw-gateway. openclaw-cli sert aux commandes que vous exécutez après
que le conteneur Gateway existe déjà.Open the Control UI
http://127.0.0.1:18789/ dans votre navigateur et collez le secret partagé
configuré dans Paramètres. Le script de configuration écrit un jeton dans .env par
défaut ; si vous passez la configuration du conteneur à l’authentification par mot de passe, utilisez
plutôt ce mot de passe.Besoin de retrouver l’URL ?Flux manuel
Si vous préférez exécuter chaque étape vous-même au lieu d’utiliser le script de configuration :docker compose depuis la racine du dépôt. Si vous avez activé OPENCLAW_EXTRA_MOUNTS
ou OPENCLAW_HOME_VOLUME, le script de configuration écrit docker-compose.extra.yml ;
incluez-le avec -f docker-compose.yml -f docker-compose.extra.yml.openclaw-cli partage l’espace de noms réseau de openclaw-gateway, c’est un
outil après démarrage. Avant docker compose up -d openclaw-gateway, exécutez l’onboarding
et les écritures de configuration au moment de la configuration via openclaw-gateway avec
--no-deps --entrypoint node.Variables d’environnement
Le script de configuration accepte ces variables d’environnement facultatives :| Variable | Objectif |
|---|---|
OPENCLAW_IMAGE | Utiliser une image distante au lieu de construire localement |
OPENCLAW_DOCKER_APT_PACKAGES | Installer des paquets apt supplémentaires pendant la construction (séparés par des espaces) |
OPENCLAW_EXTENSIONS | Inclure les assistants de Plugin groupés sélectionnés au moment de la construction |
OPENCLAW_EXTRA_MOUNTS | Montages bind hôte supplémentaires (source:target[:opts] séparés par des virgules) |
OPENCLAW_HOME_VOLUME | Persister /home/node dans un volume Docker nommé |
OPENCLAW_SANDBOX | Activer l’amorçage du sandbox (1, true, yes, on) |
OPENCLAW_SKIP_ONBOARDING | Ignorer l’étape d’onboarding interactive (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET | Remplacer le chemin du socket Docker |
OPENCLAW_DISABLE_BONJOUR | Désactiver l’annonce Bonjour/mDNS (par défaut 1 pour Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | Désactiver les superpositions bind-mount de source de Plugin groupé |
OTEL_EXPORTER_OTLP_ENDPOINT | Point de terminaison collecteur OTLP/HTTP partagé pour l’export OpenTelemetry |
OTEL_EXPORTER_OTLP_*_ENDPOINT | Points de terminaison OTLP propres au signal pour les traces, métriques ou journaux |
OTEL_EXPORTER_OTLP_PROTOCOL | Remplacement du protocole OTLP. Seul http/protobuf est pris en charge aujourd’hui |
OTEL_SERVICE_NAME | Nom du service utilisé pour les ressources OpenTelemetry |
OTEL_SEMCONV_STABILITY_OPT_IN | Activer les derniers attributs sémantiques GenAI expérimentaux |
OPENCLAW_OTEL_PRELOADED | Ignorer le démarrage d’un second SDK OpenTelemetry lorsqu’un est préchargé |
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
Ce répertoire source monté remplace le bundle compilé correspondant
/app/dist/extensions/synology-chat pour le même identifiant de Plugin.
Observabilité
L’export OpenTelemetry sort du conteneur Gateway vers votre collecteur OTLP. Il ne nécessite pas de port Docker publié. Si vous construisez l’image localement et voulez que l’exportateur OpenTelemetry groupé soit disponible dans l’image, incluez ses dépendances d’exécution :@openclaw/diagnostics-otel depuis ClawHub dans
les installations Docker empaquetées avant d’activer l’export. Les images personnalisées construites depuis la source peuvent
toujours inclure la source de Plugin locale avec
OPENCLAW_EXTENSIONS=diagnostics-otel. Pour activer l’export, autorisez et activez le
Plugin diagnostics-otel dans la configuration, puis définissez
diagnostics.otel.enabled=true ou utilisez l’exemple de configuration dans Export
OpenTelemetry. Les en-têtes d’authentification du collecteur sont configurés via
diagnostics.otel.headers, pas via les variables d’environnement Docker.
Les métriques Prometheus utilisent le port Gateway déjà publié. Installez
clawhub:@openclaw/diagnostics-prometheus, activez le
Plugin diagnostics-prometheus, puis collectez :
/metrics
public séparé ni de chemin de proxy inverse non authentifié. Voir
Métriques Prometheus.
Vérifications de santé
Points de terminaison de sonde du conteneur (aucune authentification requise) :HEALTHCHECK intégré qui interroge /healthz.
Si les vérifications continuent d’échouer, Docker marque le conteneur comme unhealthy et
les systèmes d’orchestration peuvent le redémarrer ou le remplacer.
Instantané de santé approfondi authentifié :
LAN vs loopback
scripts/docker/setup.sh définit par défaut OPENCLAW_GATEWAY_BIND=lan afin que l’accès hôte à
http://127.0.0.1:18789 fonctionne avec la publication de port Docker.
lan(par défaut) : le navigateur hôte et la CLI hôte peuvent atteindre le port Gateway publié.loopback: seuls les processus à l’intérieur de l’espace de noms réseau du conteneur peuvent atteindre directement le Gateway.
gateway.bind (lan / loopback / custom /
tailnet / auto), pas des alias d’hôte comme 0.0.0.0 ou 127.0.0.1.Fournisseurs locaux de l’hôte
Quand OpenClaw s’exécute dans Docker,127.0.0.1 à l’intérieur du conteneur est le conteneur
lui-même, pas votre machine hôte. Utilisez host.docker.internal pour les fournisseurs d’IA qui
s’exécutent sur l’hôte :
| Fournisseur | URL hôte par défaut | URL de configuration Docker |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 | http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 | http://host.docker.internal:11434 |
docker-compose.yml mappe host.docker.internal vers
le Gateway hôte de Docker pour Docker Engine sous Linux. Docker Desktop fournit déjà
le même nom d’hôte sous macOS et Windows.
Les services hôtes doivent aussi écouter sur une adresse joignable depuis Docker :
docker run, ajoutez vous-même le même
mappage d’hôte, par exemple
--add-host=host.docker.internal:host-gateway.
Bonjour / mDNS
Le réseau bridge Docker ne transfère généralement pas le multicast Bonjour/mDNS (224.0.0.251:5353) de façon fiable. La configuration Compose groupée définit donc par défaut
OPENCLAW_DISABLE_BONJOUR=1 afin que le Gateway ne boucle pas en panne ou ne redémarre pas
sans cesse l’annonce lorsque le bridge abandonne le trafic multicast.
Utilisez l’URL Gateway publiée, Tailscale ou DNS-SD à large portée pour les hôtes Docker.
Définissez OPENCLAW_DISABLE_BONJOUR=0 uniquement lors d’une exécution avec le réseau hôte, macvlan
ou un autre réseau où le multicast mDNS est connu pour fonctionner.
Pour les pièges et le dépannage, voir Découverte Bonjour.
Stockage et persistance
Docker Compose monte en bindOPENCLAW_CONFIG_DIR vers /home/node/.openclaw,
OPENCLAW_WORKSPACE_DIR vers /home/node/.openclaw/workspace, et
OPENCLAW_AUTH_PROFILE_SECRET_DIR vers /home/node/.config/openclaw, afin que ces
chemins survivent au remplacement du conteneur. Lorsqu’une variable n’est pas définie, le
docker-compose.yml groupé se replie sous ${HOME}, ou /tmp lorsque HOME lui-même est
également absent. Cela évite que docker compose up émette une spécification de volume
à source vide dans les environnements nus.
Ce répertoire de configuration monté est l’endroit où OpenClaw conserve :
openclaw.jsonpour la configuration du comportementagents/<agentId>/agent/auth-profiles.jsonpour l’authentification OAuth/clé d’API fournisseur stockée.envpour les secrets d’exécution fournis par l’environnement tels queOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
Les plugins téléchargeables installés stockent leur état de package sous le
répertoire personnel OpenClaw monté, ce qui permet aux enregistrements
d’installation de plugins et aux racines de packages de survivre au
remplacement du conteneur. Le démarrage du Gateway ne génère pas d’arborescences
de dépendances pour les plugins groupés.
Pour tous les détails de persistance sur les déploiements de VM, consultez
Docker VM Runtime - Ce qui persiste et où.
Points chauds de croissance du disque : surveillez media/, les fichiers JSONL de session,
cron/runs/*.jsonl, les racines de packages de plugins installés et les journaux de fichiers rotatifs
sous /tmp/openclaw/.
Assistants shell (facultatif)
Pour faciliter la gestion quotidienne de Docker, installezClawDock :
scripts/shell-helpers/clawdock-helpers.sh, relancez la commande d’installation ci-dessus afin que votre fichier d’assistance local suive le nouvel emplacement.
Utilisez ensuite clawdock-start, clawdock-stop, clawdock-dashboard, etc. Exécutez
clawdock-help pour afficher toutes les commandes.
Consultez ClawDock pour le guide complet de l’assistant.
Activer le bac à sable d'agent pour le Gateway Docker
Activer le bac à sable d'agent pour le Gateway Docker
docker.sock uniquement après validation des prérequis du bac à sable. Si
la configuration du bac à sable ne peut pas se terminer, le script réinitialise agents.defaults.sandbox.mode
à off. Les tours en mode code de Codex restent limités au
workspace-write de Codex pendant que le bac à sable OpenClaw est actif ; ne montez pas le
socket Docker de l’hôte dans les conteneurs de bac à sable des agents.Automatisation / CI (non interactif)
Automatisation / CI (non interactif)
-T :Note de sécurité sur le réseau partagé
Note de sécurité sur le réseau partagé
openclaw-cli utilise network_mode: "service:openclaw-gateway" afin que les commandes CLI
puissent joindre le Gateway via 127.0.0.1. Considérez cela comme une frontière
de confiance partagée. La configuration Compose retire NET_RAW/NET_ADMIN et active
no-new-privileges sur openclaw-gateway comme sur openclaw-cli.Échecs DNS de Docker Desktop dans openclaw-cli
Échecs DNS de Docker Desktop dans openclaw-cli
openclaw-cli en réseau partagé après la suppression de NET_RAW, ce qui apparaît sous forme de
EAI_AGAIN pendant les commandes reposant sur npm, comme openclaw plugins install.
Conservez le fichier Compose renforcé par défaut pour le fonctionnement normal du Gateway. La
surcharge locale ci-dessous assouplit la posture de sécurité du conteneur CLI en
restaurant les capacités par défaut de Docker ; utilisez-la donc uniquement pour la commande CLI ponctuelle
qui a besoin d’accéder au registre de packages, et non comme invocation Compose
par défaut :openclaw-cli à longue durée de vie, recréez-le
avec la même surcharge. docker compose exec et docker exec ne peuvent pas
modifier les capacités Linux d’un conteneur déjà créé.Autorisations et EACCES
Autorisations et EACCES
node (uid 1000). Si vous voyez des erreurs d’autorisation sur
/home/node/.openclaw, assurez-vous que vos montages liés hôtes appartiennent à l’uid 1000 :blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
suivi de plugin present but blocked. Cela signifie que l’uid du processus et le
propriétaire du répertoire de plugin monté ne correspondent pas. Préférez exécuter le conteneur avec l’uid
par défaut 1000 et corriger la propriété du montage lié. N’appliquez un chown
de /path/to/openclaw-config/npm à root:root que si vous exécutez volontairement
OpenClaw en tant que root sur le long terme.Reconstructions plus rapides
Reconstructions plus rapides
pnpm install sauf si les lockfiles changent :Options de conteneur pour utilisateurs avancés
Options de conteneur pour utilisateurs avancés
node non-root. Pour un conteneur plus
complet :- Persister
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Intégrer les dépendances système :
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - Intégrer Playwright Chromium :
export OPENCLAW_INSTALL_BROWSER=1 - Ou installer les navigateurs Playwright dans un volume persistant :
- Persister les téléchargements de navigateur : utilisez
OPENCLAW_HOME_VOLUMEouOPENCLAW_EXTRA_MOUNTS. OpenClaw détecte automatiquement le Chromium géré par Playwright de l’image Docker sous Linux.
OpenAI Codex OAuth (Docker sans interface graphique)
OpenAI Codex OAuth (Docker sans interface graphique)
Métadonnées de l'image de base
Métadonnées de l'image de base
node:24-bookworm-slim et inclut tini comme processus d’initialisation d’entrypoint (PID 1) afin de garantir que les processus zombies sont récupérés et que les signaux sont correctement gérés dans les conteneurs à longue durée de vie. Elle publie des annotations d’image de base OCI, notamment org.opencontainers.image.base.name,
org.opencontainers.image.source et d’autres. Le digest de base Node est
actualisé via les PR Dependabot d’image de base Docker ; les builds de version ne lancent pas
de couche de mise à niveau de distribution. Consultez
Annotations d’image OCI.Exécution sur un VPS ?
Consultez Hetzner (Docker VPS) et Docker VM Runtime pour les étapes partagées de déploiement sur VM, y compris l’intégration des binaires, la persistance et les mises à jour.Bac à sable d’agent
Lorsqueagents.defaults.sandbox est activé avec le backend Docker, le Gateway
exécute les outils d’agent (shell, lecture/écriture de fichiers, etc.) dans des conteneurs Docker
isolés pendant que le Gateway lui-même reste sur l’hôte. Cela vous donne une séparation stricte
autour des sessions d’agent non fiables ou multi-locataires sans conteneuriser tout le
Gateway.
La portée du bac à sable peut être par agent (par défaut), par session ou partagée. Chaque portée
dispose de son propre espace de travail monté sur /workspace. Vous pouvez aussi configurer
des politiques d’autorisation/refus d’outils, l’isolation réseau, des limites de ressources et des conteneurs
de navigateur.
Pour la configuration complète, les images, les notes de sécurité et les profils multi-agents, consultez :
- Sandboxing — référence complète du bac à sable
- OpenShell — accès shell interactif aux conteneurs de bac à sable
- Multi-Agent Sandbox and Tools — remplacements par agent
Activation rapide
docker build en ligne.
Dépannage
Image manquante ou conteneur de bac à sable qui ne démarre pas
Image manquante ou conteneur de bac à sable qui ne démarre pas
scripts/sandbox-setup.sh
(checkout source) ou la commande docker build en ligne depuis Sandboxing § Images and setup (installation npm),
ou définissez agents.defaults.sandbox.docker.image sur votre image personnalisée.
Les conteneurs sont créés automatiquement par session à la demande.Erreurs d'autorisation dans le bac à sable
Erreurs d'autorisation dans le bac à sable
docker.user sur un UID:GID correspondant à la propriété de votre espace de travail monté,
ou changez le propriétaire du dossier de l’espace de travail.Outils personnalisés introuvables dans le bac à sable
Outils personnalisés introuvables dans le bac à sable
sh -lc (shell de connexion), qui source
/etc/profile et peut réinitialiser PATH. Définissez docker.env.PATH pour préfixer vos
chemins d’outils personnalisés, ou ajoutez un script sous /etc/profile.d/ dans votre Dockerfile.Processus tué par OOM pendant la construction de l'image (exit 137)
Processus tué par OOM pendant la construction de l'image (exit 137)
Non autorisé ou association requise dans l'interface de contrôle
Non autorisé ou association requise dans l'interface de contrôle
La cible du Gateway affiche ws://172.x.x.x ou des erreurs d'association depuis la CLI Docker
La cible du Gateway affiche ws://172.x.x.x ou des erreurs d'association depuis la CLI Docker
Associé
- Vue d’ensemble de l’installation — toutes les méthodes d’installation
- Podman — alternative Podman à Docker
- ClawDock — configuration communautaire Docker Compose
- Mise à jour — maintenir OpenClaw à jour
- Configuration — configuration du Gateway après installation