2026 : OpenClaw sur VPS Linux sans Docker
Ubuntu 24.04, systemd et Cloudflare Tunnel pour un Gateway en boucle locale

Environ 18 min de lecture · MACCOME

Après les guides d’installation trois plateformes et Docker en production, vous pouvez encore vouloir OpenClaw Gateway en Node sur hôte nu + systemd sur Ubuntu 24.04, avec Cloudflare Tunnel pour que la passerelle n’écoute pas sur l’interface publique. Cet article propose le périmètre par rapport à Docker, une décomposition des points de friction, deux tableaux, des extraits systemd et tunnel, un runbook en six étapes et trois indicateurs d’astreinte, avec des liens vers le triage post-installation, la production Docker, le guide d’installation et la sécurité avancée du Gateway pour une mise en production reproductible.

Six pièges du hôte nu : plus que « sauter le conteneur »

Le hôte nu remet versions Node, droits, adresses de liaison et supervision des processus sur la machine. Si vous gardez l’habitude « Gateway au premier plan sur un portable », les redémarrages coupent les services, les journaux manquent de structure, et la dérive entre ufw et les groupes de sécurité cloud rend les incidents anecdotiques. Décomposez ces six familles avant de copier des configurations.

  1. Dérive Node et CLI globale : des sudo npm i -g répétés désynchronisent la prod par rapport à la doc ; figez ExecStart sur un binaire Node fixe ou un shim de gestionnaire de versions.
  2. Liaisons trop larges : 0.0.0.0 plus une règle pare-feu oubliée expose le plan de contrôle ; avec des tunnels, préférez 127.0.0.1 et laissez le tunnel accepter l’entrant.
  3. Incohérence systemd utilisateur vs WorkingDirectory : des configs sous le home de root alors que l’unité tourne sous openclaw donne « ça marche à la main, ça casse en service ».
  4. Décalage de port amont du tunnel : cloudflared pointant vers le mauvais port local produit un 502 externe sans lien avec les timeouts modèle.
  5. Confusion entrant vs sortant : les tunnels règlent l’accessibilité depuis les clients ; les API modèle, DNS, proxys et clés empruntent toujours les chemins sortants—triage selon l’article post-installation.
  6. Pas d’ancre de retour arrière : mettre à jour OpenClaw ou Node sans figer le dernier ExecStart connu bon et l’empreinte de config bloque un rollback rapide.

Deux tableaux condensent Docker vs hôte nu et tunnel vs reverse proxy direct pour les dossiers de revue.

L’article avancé sur la sécurité du Gateway couvre jetons, exposition et rotation des secrets ; celui-ci couvre la liaison loopback sur Linux et le déléguage de l’ingress au tunnel. Ensemble ils forment « ingress en périphérie, secrets dans le plan dépôt, processus sous systemd ». Complétez l’onboarding et les clés modèle via le guide d’installation avant le durcissement prod décrit ici.

Docker Compose vs systemd sur hôte nu : quand choisir quoi

L’article production Docker traite des images figées, volumes et rollback Compose ; celui-ci couvre unités hôte + tunnel. Le tableau 1 sert à la revue d’architecture—ce n’est pas un choix dogmatique.

DimensionDocker / ComposeNode nu + systemd (cet article)
ReproductibilitéImages et digests figent l’exécutionLa pile hôte varie ; compensez avec gestion de config et versions figées
Profondeur de triageJournaux conteneur et droits volumes d’abordOutils niveau hôte disponibles si la politique le permet
Outils d’exploitation existantsMonitoring conteneurs et flux registreRéutiliser journald, node_exporter, scripts de sauvegarde
Chemin de mise à jourChanger les tags d’image ; volumes explicitesNode et paquets globaux bougent ensemble—scripter le retour arrière
Adéquation typiqueÉquipes déjà standardisées sur conteneursObligation de tourner sur métal ou couplage fort à des services systemd hérités

Cloudflare Tunnel vs reverse proxy hôte : où tracer la frontière

Les tunnels déchargent TLS et l’ingress public vers le bord ; Nginx/Caddy terminent souvent TLS en local et proxifient vers la boucle. Vous pouvez les combiner, mais les surfaces d’écoute doivent rester minimales. Croisez le tableau 2 avec les règles des groupes de sécurité.

ModèleLiaison GatewaySurface publiqueNotes d’exploitation
Tunnel vers loopback127.0.0.1:PORT (selon la doc OpenClaw)Pas de port Gateway direct ; processus tunnel en sortie uniquementAligner l’ingress sur le port local du service réellement actif
Nginx/Caddy localSouvent toujours amont loopback443 sur le proxy ; gérer certificats et limitation de débitVérifier trois fois ufw et SG cloud pour éviter une double exposition
Déconseillé : Gateway sur 0.0.0.0Toutes les interfacesPlan de contrôle sur InternetExige jetons stricts, listes d’autorisation et WAF—pas le défaut
ini
# /etc/systemd/system/openclaw-gateway.service (squelette ; ExecStart selon la CLI officielle)
[Unit]
Description=OpenClaw Gateway (hôte nu)
After=network-online.target
Wants=network-online.target

[Service]
User=openclaw
Group=openclaw
WorkingDirectory=/var/lib/openclaw
Environment=NODE_ENV=production
ExecStart=/usr/bin/node /path/to/openclaw/cli.js gateway start --bind 127.0.0.1
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
yaml
# Fragment cloudflared : hostname vers Gateway local
tunnel: YOUR_TUNNEL_ID
credentials-file: /etc/cloudflared/YOUR_TUNNEL.json

ingress:
  - hostname: claw.example.com
    service: http://127.0.0.1:18789
  - service: http_status:404
warning

Remarque : les ports et chemins binaires sont des exemples. Alignez-vous sur la doc OpenClaw actuelle et openclaw --help ; consignez empreintes et commandes de rollback dans le ticket de changement.

Six étapes : Ubuntu 24.04 propre jusqu’à systemd + tunnel en astreinte

  1. Figez la ligne de base : noyau, mineure Node, version du paquet OpenClaw, OpenSSL—respectez les minimums du guide d’installation.
  2. Créez l’utilisateur service et les répertoires : compte dédié, propriété claire—évitez une config prod dans un home personnel alors qu’un autre compte exécute le service.
  3. Validez la boucle locale d’abord : liaison 127.0.0.1, curl ou health check selon la doc, puis ajoutez le tunnel.
  4. Rédigez et activez systemd : daemon-reload && enable --now ; suivez journalctl -u openclaw-gateway -f pour les erreurs d’ordonnancement.
  5. Configurez l’ingress cloudflared : le DNS cloud correspond à la config locale ; classez les 502/525 externes comme tunnel vs amont.
  6. Répétez mise à jour et retour arrière : archivez le dernier ExecStart et les configs connus bons ; n’avancez en échec que dans votre RTO.

Séparez santé locale (processus + port loopback) de santé externe (DNS, chaîne de certificats, routage edge). Ne mettre à jour qu’un des deux lors des releases produit des faux positifs « vert dedans, rouge dehors ». Les gabarits de ticket doivent exiger la version OpenClaw, la mineure Node et la version cloudflared, plus un extrait de journal pour la piste d’audit.

Trois indicateurs d’astreinte

  1. Nombre de surfaces d’écoute : la prod doit lister chaque port TCP ouvert sur une ligne ; des liaisons Gateway publiques sans WAF sont des défauts urgents.
  2. Triage tunnel 502 : curl -v 127.0.0.1:PORT d’abord, puis journaux tunnel ; échec local = couche appli, succès local / échec distant = tunnel ou DNS.
  3. Baseline des sondes sortantes : automatisez TLS et HTTP depuis le VPS vers le fournisseur modèle ; partagez les seuils avec les étapes du doctor post-installation.

Addendum : sur les petits VPS qui n’exécutent que Gateway et tunnel, si la latence fluctue alors que le CPU semble inactif, vérifiez les descripteurs de fichiers par processus, le nombre de WebSocket longue durée et le RTT TLS vers les fournisseurs avant d’ajouter des vCPU.

L’écart entre « n’importe quel VPS » et une couche d’exécution stable

Un VPS Linux générique suffit aux démos, mais la variance I/O et les contraintes sans tête façonnent encore l’automatisation longue durée. OpenClaw en production exige une supervision reproductible, des surfaces d’écoute auditables et un alignement avec CI et les flux de secrets.

Pour les builds iOS, le Simulateur ou le triage GUI, Linux ne remplace pas Apple Silicon ; beaucoup d’équipes placent le Gateway sur un bord Linux et délèguent le travail lourd Xcode à des Mac distants. Les portables de rechange et les postes fragmentés peinent en agents 24/7 : veille et invites transforment l’automatisation en échecs aléatoires. MACCOME propose des Mac Mini M4 / M4 Pro bare-metal multi-régions—utiles comme backend de build et de sessions longues pendant que Linux concentre l’ingress. Ouvrez le centre d’aide, puis alignez les tarifs de location avec la page de votre région.

Pilotez avec de courtes locations pour mesurer la latence bout en bout « tunnel + charge Mac distant » avant de colocaliser ingress et compilation sur un même hôte.

FAQ

Docker ne suffit-il pas ?

Souvent oui—voir la production Docker. systemd sur hôte nu convient à une intégration serrée avec l’exploitation existante ou à des besoins de triage au niveau machine.

127.0.0.1 ou 0.0.0.0 pour le Gateway ?

Préférez la boucle locale derrière tunnel ou proxy local ; n’élargissez qu’avec pare-feu, jetons et supervision. Les étapes de validation sont dans le triage post-installation.

Où sont les commandes d’installation et les différences entre plateformes ?

Installation et choix de plateforme ; tarifs sur les tarifs publics et aide sur le centre d’aide.