Podman
Exécutez le OpenClaw Gateway dans un conteneur Podman sans racine, géré par votre utilisateur actuel non root.
Le modèle prévu est :
- Podman exécute le conteneur de la passerelle.
- Votre
openclawCLI 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 distinct.
Prérequis
Section intitulée « Prérequis »- Podman en mode sans racine
- OpenClaw CLI installé sur l’hôte
- Facultatif :
systemd --usersi vous souhaitez un démarrage automatique géré par Quadlet - Facultatif :
sudouniquement si vous souhaitezloginctl enable-linger "$(whoami)"pour la persistance au démarrage sur un hôte sans interface graphique
Démarrage rapide
Section intitulée « Démarrage rapide »Configuration unique
À partir de la racine du dépôt, exécutez
./scripts/podman/setup.sh.Démarrer le conteneur Gateway
Démarrez le conteneur avec
./scripts/run-openclaw-podman.sh launch.Exécuter l'intégration dans le conteneur
Exécutez
./scripts/run-openclaw-podman.sh launch setup, puis ouvrezhttp://127.0.0.1:18789/.Gérer le conteneur en cours d'exécution depuis le CLI hôte
Définissez
OPENCLAW_CONTAINER=openclaw, puis utilisez les commandesopenclawnormales depuis l’hôte.
Détails de la configuration :
./scripts/podman/setup.shconstruitopenclaw:localdans votre magasin Podman sans racine par défaut, ou utiliseOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEsi vous en avez défini un.- Il crée
~/.openclaw/openclaw.jsonavecgateway.mode: "local"si manquant. - Il crée
~/.openclaw/.envavecOPENCLAW_GATEWAY_TOKENsi manquant. - Pour les lancements manuels, l’assistant lit une petite liste d’autorisation de clés liées à Podman à partir de
~/.openclaw/.envet transmet des variables d’environnement d’exécution explicites au conteneur ; il ne transmet pas le fichier d’environnement complet à Podman.
Configuration gérée par Quadlet :
./scripts/podman/setup.sh --quadletQuadlet est une option réservée à Linux car elle dépend des services utilisateur systemd.
Vous pouvez également définir OPENCLAW_PODMAN_QUADLET=1.
Env vars de construction/configuration facultatifs :
OPENCLAW_IMAGEouOPENCLAW_PODMAN_IMAGE— utilisez une image existante/extraite au lieu de construireopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— installez des paquets apt supplémentaires lors de la construction de l’imageOPENCLAW_EXTENSIONS— pré-installez les dépendances des extensions au moment de la construction
Démarrage du conteneur :
./scripts/run-openclaw-podman.sh launchLe script démarre le conteneur en tant que votre uid/gid actuel avec --userns=keep-id et monte en liaison l’état de votre OpenClaw dans le conteneur.
Onboarding :
./scripts/run-openclaw-podman.sh launch setupEnsuite, ouvrez http://127.0.0.1:18789/ et utilisez le jeton depuis ~/.openclaw/.env.
Par défaut du CLI hôte :
export OPENCLAW_CONTAINER=openclawEnsuite, des commandes comme celles-ci s’exécuteront automatiquement à l’intérieur de ce conteneur :
openclaw dashboard --no-openopenclaw gateway status --deep # includes extra service scanopenclaw doctoropenclaw channels loginSur macOS, Podman machine peut faire apparaître le navigateur comme non local pour la passerelle. Si l’interface de contrôle signale des erreurs d’authentification d’appareil après le démarrage, suivez les instructions Tailscale dans Podman + Tailscale.
Podman + Tailscale
Section intitulée « Podman + Tailscale »Pour un accès HTTPS ou via un navigateur distant, suivez la documentation principale Tailscale.
Note spécifique à Podman :
- Conservez l’hôte de publication Podman à
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 des contournements ad hoc du tunnel local.
Voir :
Systemd (Quadlet, optionnel)
Section intitulée « Systemd (Quadlet, optionnel) »Si vous avez exécuté ./scripts/podman/setup.sh --quadlet, l’installation installe un fichier Quadlet à :
~/.config/containers/systemd/openclaw.containerCommandes utiles :
- Démarrer :
systemctl --user start openclaw.service - Arrêter :
systemctl --user stop openclaw.service - État :
systemctl --user status openclaw.service - Journaux :
journalctl --user -u openclaw.service -f
Après avoir modifié le fichier Quadlet :
systemctl --user daemon-reloadsystemctl --user restart openclaw.servicePour la persistance au démarrage sur les hôtes SSH/sans interface graphique, activez la persistance (lingering) pour votre utilisateur actuel :
sudo loginctl enable-linger "$(whoami)"Config, env, et stockage
Section intitulée « Config, env, et stockage »- Répertoire de configuration :
~/.openclaw - Répertoire de travail :
~/.openclaw/workspace - Fichier jeton :
~/.openclaw/.env - Assistant de lancement :
./scripts/run-openclaw-podman.sh
Le script de lancement et Quadlet montent en liaison l’état de l’hôte dans le conteneur :
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
Par défaut, il s’agit de répertoires de l’hôte et non d’un état anonyme du conteneur, donc openclaw.json, l’état auth-profiles.json par agent, l’état du canal/fournisseur (channel/provider), les sessions et l’espace de travail survivent au remplacement du conteneur.
La configuration Podman génère également gateway.controlUi.allowedOrigins pour 127.0.0.1 et localhost sur le port de passerelle publié, afin que le tableau de bord local fonctionne avec la liaison non bouclée du conteneur.
Variables d’environnement (env vars) 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 le port conteneur18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT— port hôte mappé vers le port conteneur18790OPENCLAW_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),auto, ouhost
Le lanceur manuel lit ~/.openclaw/.env avant de finaliser les valeurs par défaut du conteneur/de l’image, vous pouvez donc les rendre persistantes à cet endroit.
Si vous utilisez un OPENCLAW_CONFIG_DIR ou un OPENCLAW_WORKSPACE_DIR non défini par défaut, définissez les mêmes variables pour les commandes ./scripts/podman/setup.sh et ultérieures ./scripts/run-openclaw-podman.sh launch. Le lanceur local au dépôt ne conserve pas les substitutions de chemin personnalisées d’un shell à l’autre.
Note sur Quadlet :
- Le service Quadlet généré conserve intentionnellement une forme par défaut fixe et durcie : ports publiés
127.0.0.1,--bind lanà l’intérieur du conteneur et espace de noms utilisateurkeep-id. - Il épingle
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(pont). - Il lit
~/.openclaw/.envcommeEnvironmentFiled’exécution pour des valeurs telles queOPENCLAW_GATEWAY_TOKEN, mais il ne consomme pas la liste d’autorisation de remplacement spécifique à Podman du lanceur manuel. - Si vous avez besoin de ports de publication personnalisés, d’un hôte de publication ou d’autres indicateurs d’exécution de conteneur, utilisez le lanceur manuel ou modifiez directement
~/.config/containers/systemd/openclaw.container, puis rechargez et redémarrez le service.
Commandes utiles
Section intitulée « 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 le CLI de l’hôte :
openclaw dashboard --no-open - Santé/état via le CLI de l’hôte :
openclaw gateway status --deep(sonde RPC + analyse de service supplémentaire)
Troubleshooting
Section intitulée « Troubleshooting »- Permission refusée (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 de configuration/espace de travail de l’hôte appartiennent à votre utilisateur actuel. - Démarrage du Gateway bloqué (
gateway.mode=localmanquant) : Assurez-vous que~/.openclaw/openclaw.jsonexiste et définitgateway.mode="local".scripts/podman/setup.shle crée s’il est manquant. - Les commandes du CLI du conteneur ciblent la mauvaise cible : Utilisez
openclaw --container <name> ...explicitement, ou exportezOPENCLAW_CONTAINER=<name>dans votre shell. openclaw updateéchoue avec--container: Attendu. Reconstruisez/tirez 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 sans tête, vous pouvez également avoir besoin desudo loginctl enable-linger "$(whoami)". - SELinux bloque les montages de liaison : Laissez le comportement de montage par défaut tranquille ; le lanceur ajoute automatiquement
:Zsur Linux lorsque SELinux est en mode d’application ou permissif.