Podman
Exécutez OpenClaw Gateway dans un conteneur Podman rootless, géré par votre utilisateur non root actuel. Le modèle prévu est le suivant :- Podman exécute le conteneur de la passerelle.
- Votre CLI
openclawsur l’hôte est le plan de contrôle. - L’état persistant réside sur l’hôte sous
~/.openclawpar défaut. - La gestion quotidienne utilise
openclaw --container <name> ...au lieu desudo -u openclaw,podman execou d’un utilisateur de service séparé.
Prérequis
- Podman en mode rootless
- CLI OpenClaw installée sur l’hôte
- Facultatif :
systemd --usersi vous voulez un démarrage automatique géré par Quadlet - Facultatif :
sudouniquement si vous voulezloginctl enable-linger "$(whoami)"pour la persistance au démarrage sur un hôte headless
Démarrage rapide
Démarrer le conteneur de la passerelle
Démarrez le conteneur avec
./scripts/run-openclaw-podman.sh launch.Exécuter l’onboarding dans le conteneur
Exécutez
./scripts/run-openclaw-podman.sh launch setup, puis ouvrez http://127.0.0.1:18789/../scripts/podman/setup.shconstruitopenclaw:localdans votre magasin Podman rootless par défaut, ou utiliseOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEsi vous en définissez une.- Il crée
~/.openclaw/openclaw.jsonavecgateway.mode: "local"si absent. - Il crée
~/.openclaw/.envavecOPENCLAW_GATEWAY_TOKENsi absent. - Pour les lancements manuels, l’assistant ne lit qu’une petite liste d’autorisation de clés liées à Podman depuis
~/.openclaw/.envet transmet des variables env runtime explicites au conteneur ; il ne transmet pas le fichier env complet à Podman.
OPENCLAW_PODMAN_QUADLET=1.
Variables env facultatives de build/configuration :
OPENCLAW_IMAGEouOPENCLAW_PODMAN_IMAGE— utiliser une image existante/téléchargée au lieu de construireopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— installer des packages apt supplémentaires pendant la construction de l’imageOPENCLAW_EXTENSIONS— préinstaller des dépendances d’extension au moment du build
--userns=keep-id et monte par bind votre état OpenClaw dans le conteneur.
Onboarding :
http://127.0.0.1:18789/ et utilisez le jeton de ~/.openclaw/.env.
CLI hôte par défaut :
Podman + Tailscale
Pour HTTPS ou l’accès à distance depuis un navigateur, suivez la documentation principale Tailscale. Remarque spécifique à Podman :- Conservez l’hôte de publication Podman sur
127.0.0.1. - Préférez
tailscale servegéré par l’hôte àopenclaw gateway --tailscale serve. - Sur macOS, si le contexte d’authentification d’appareil du navigateur local n’est pas fiable, utilisez l’accès Tailscale au lieu de solutions de contournement locales ad hoc par tunnel.
Systemd (Quadlet, facultatif)
Si vous avez exécuté./scripts/podman/setup.sh --quadlet, la configuration installe un fichier Quadlet à l’emplacement :
- Démarrer :
systemctl --user start openclaw.service - Arrêter :
systemctl --user stop openclaw.service - Statut :
systemctl --user status openclaw.service - Journaux :
journalctl --user -u openclaw.service -f
Configuration, env et stockage
- Répertoire de configuration :
~/.openclaw - Répertoire d’espace de travail :
~/.openclaw/workspace - Fichier de jeton :
~/.openclaw/.env - Assistant de lancement :
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, auth-profiles.json par agent, l’état des canaux/fournisseurs,
les sessions et l’espace de travail survivent au remplacement du conteneur.
La configuration Podman initialise aussi gateway.controlUi.allowedOrigins pour 127.0.0.1 et localhost sur le port publié de la passerelle afin que le tableau de bord local fonctionne avec la liaison non loopback du conteneur.
Variables env utiles pour le lanceur manuel :
OPENCLAW_PODMAN_CONTAINER— nom du conteneur (openclawpar défaut)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— image à exécuterOPENCLAW_PODMAN_GATEWAY_HOST_PORT— port hôte mappé vers le18789du conteneurOPENCLAW_PODMAN_BRIDGE_HOST_PORT— port hôte mappé vers le18790du conteneurOPENCLAW_PODMAN_PUBLISH_HOST— interface hôte pour les ports publiés ; la valeur par défaut est127.0.0.1OPENCLAW_GATEWAY_BIND— mode de liaison de la passerelle à l’intérieur du conteneur ; la valeur par défaut estlanOPENCLAW_PODMAN_USERNS—keep-id(par défaut),autoouhost
~/.openclaw/.env avant de finaliser les valeurs par défaut du conteneur/de l’image, vous pouvez donc les y conserver.
Si vous utilisez un OPENCLAW_CONFIG_DIR ou OPENCLAW_WORKSPACE_DIR non par défaut, définissez les mêmes variables pour ./scripts/podman/setup.sh et pour les commandes ultérieures ./scripts/run-openclaw-podman.sh launch. Le lanceur local au dépôt ne persiste pas les remplacements de chemin personnalisés entre les shells.
Remarque Quadlet :
- Le service Quadlet généré conserve volontairement une forme par défaut fixe et durcie : ports publiés sur
127.0.0.1,--bind lanà l’intérieur du conteneur et espace de noms utilisateurkeep-id. - Il fixe
OPENCLAW_NO_RESPAWN=1,Restart=on-failureetTimeoutStartSec=300. - Il publie à la fois
127.0.0.1:18789:18789(passerelle) et127.0.0.1:18790:18790(bridge). - Il lit
~/.openclaw/.envcommeEnvironmentFileruntime pour des valeurs telles queOPENCLAW_GATEWAY_TOKEN, mais il ne consomme pas la liste d’autorisation de remplacements spécifiques à Podman du lanceur manuel. - Si vous avez besoin de ports publiés personnalisés, d’un hôte de publication personnalisé ou d’autres indicateurs
container-run, utilisez le lanceur manuel ou modifiez directement~/.config/containers/systemd/openclaw.container, puis rechargez et redémarrez le service.
Commandes utiles
- Journaux du conteneur :
podman logs -f openclaw - Arrêter le conteneur :
podman stop openclaw - Supprimer le conteneur :
podman rm -f openclaw - Ouvrir l’URL du tableau de bord depuis la CLI hôte :
openclaw dashboard --no-open - État/santé via la CLI hôte :
openclaw gateway status --deep(sonde RPC + analyse supplémentaire des services)
Dépannage
- Permission denied (EACCES) sur la configuration ou l’espace de travail : Le conteneur s’exécute avec
--userns=keep-idet--user <your uid>:<your gid>par défaut. Assurez-vous que les chemins hôte de configuration/espace de travail appartiennent à votre utilisateur courant. - Démarrage de la passerelle bloqué (absence de
gateway.mode=local) : Assurez-vous que~/.openclaw/openclaw.jsonexiste et définitgateway.mode="local".scripts/podman/setup.shle crée s’il est absent. - Les commandes CLI du conteneur ciblent la mauvaise destination : Utilisez explicitement
openclaw --container <name> ..., ou exportezOPENCLAW_CONTAINER=<name>dans votre shell. openclaw updateéchoue avec--container: Comportement attendu. Reconstruisez/téléchargez l’image, puis redémarrez le conteneur ou le service Quadlet.- Le service Quadlet ne démarre pas : Exécutez
systemctl --user daemon-reload, puissystemctl --user start openclaw.service. Sur les systèmes headless, vous pouvez aussi avoir besoin desudo loginctl enable-linger "$(whoami)". - SELinux bloque les montages bind : Laissez le comportement de montage par défaut tel quel ; le lanceur ajoute automatiquement
:Zsous Linux lorsque SELinux est en mode enforcing ou permissive.