2026 — OpenClaw Telegram : long polling ou webhook sur Mac physique distant ? Proxy HTTPS inverse, enregistrement et runbook 409 / timeout TLS reproductibles (extraits openclaw.json + FAQ)
Les équipes qui connectent OpenClaw à un bot Telegram sur un Mac physique distant ZoneMac hésitent souvent entre long polling (getUpdates) et webhooks : le premier évite le TLS public ; le second offre moins de latence et convient au 7×24. Ce guide propose une matrice de décision, l’essentiel du proxy HTTPS inverse, une séquence setWebhook prudente et un triage reproductible pour HTTP 409 et timeouts TLS, avec une structure openclaw.json prête à coller et une FAQ. Pour les chemins d’authentification webhook et les pièges de jetons, voyez aussi
OpenClaw : webhooks et hooks sur une passerelle Mac distant.
1. Introduction et périmètre
L’API Telegram Bot livre les mises à jour entrantes par deux voies : long polling (le client appelle getUpdates et maintient la connexion) et webhooks (Telegram envoie des POST HTTPS vers votre URL). OpenClaw a besoin d’une sémantique de transport prévisible et de modes d’échec observables — surtout lorsqu’un proxy inverse précède un Mac physique distant, où TLS, SNI et chaînes de certificats apparaissent dans getWebhookInfo sous forme de champs last_error_*.
Cet article suppose un accès SSH et des modifications de openclaw.json. Avant de changer transport et version de passerelle dans la même fenêtre, alignez la discipline de release avec le
comparatif de déploiement OpenClaw mondial (2026).
Pour une vue d’ensemble d’exécution sur Mac, vous pouvez aussi consulter le
guide 2026 : exécuter OpenClaw sur Mac efficacement.
2. Points de friction
- Sous-estimer le HTTPS public pour les webhooks. Telegram attend une chaîne vérifiable et un point de terminaison HTTPS joignable (souvent le port 443). Certificats auto-signés, intermédiaires manquants ou DNS visibles seulement sur le LAN se traduisent par des erreurs TLS ou une non-livraison silencieuse.
- Le HTTP 409 n’est pas du bruit. Partager un jeton de bot entre préproduction et production, ou laisser un ancien nœud sans
deleteWebhook, provoque des conflitssetWebhook— la cause est l’état d’enregistrement, pas la logique métier d’OpenClaw. - Le long polling n’est pas gratuit. RTT transfrontalier et connexions longues amplifient le jitter ; certains opérateurs limitent le débit. Idéal en PoC ; la production revient en général au webhook avec un bord sain.
3. Matrice de décision : long polling vs webhook
Utilisez-la comme mini « feu vert architecture » pour les nœuds ZoneMac distants.
| Critère | Long polling (getUpdates) | Webhook (HTTPS) |
|---|---|---|
| DNS public et certificats | Sortie uniquement ; en général pas besoin de certificat sur nom d’hôte public | Exige un domaine résolu et une chaîne de confiance |
| Latence et contre-pression | Intervalle de sondage + jitter réseau | Événementiel ; en général latence plus faible si le bord est stable |
| Forme des connexions | Sortantes persistantes, longues | POST entrants — s’accorde avec timeouts et quotas du proxy |
| Signaux de debug | Journaux client, erreurs getUpdates |
getWebhookInfo (last_error_date, etc.) |
| Cas d’usage typiques | PoC, NAT strict, expériences courtes | Production 7×24, plusieurs workers, latence prévisible |
4. Extraits openclaw.json (illustratifs)
Exemple structurel uniquement — les noms de clés et l’imbrication doivent correspondre à votre version d’OpenClaw. Sauvegardez les fichiers de production et fusionnez manuellement avec les sections gateway et identifiants existants.
4.1 Canal Telegram : webhook et écoute locale
{
"channels": {
"telegram": {
"enabled": true,
"botTokenRef": "env:TELEGRAM_BOT_TOKEN",
"transport": "webhook",
"webhook": {
"publicUrl": "https://bot.example.com/openclaw/telegram/webhook",
"path": "/openclaw/telegram/webhook",
"secretTokenRef": "env:TELEGRAM_WEBHOOK_SECRET",
"maxConnections": 40,
"dropPendingUpdates": false
},
"localServer": {
"bind": "127.0.0.1",
"port": 18789,
"readTimeoutSeconds": 30,
"writeTimeoutSeconds": 30
}
}
},
"gateway": {
"reverseProxy": {
"trustedProxies": ["10.0.0.0/8"],
"forwardedHeaders": ["X-Forwarded-For", "X-Forwarded-Proto"]
}
}
}
Pour le long polling, réglez transport sur "longPolling" (ou l’équivalent de votre release) et fournissez les options getUpdates telles que timeout / allowed_updates ; assurez-vous que Telegram ne pointe plus un webhook vers une ancienne URL.
4.2 Proxy inverse (esquisse Caddy)
# TLS terminé au bord ; proxy vers 127.0.0.1:18789 sur le Mac.
# Cohérence Host/chemin avec OpenClaw ; limitez le corps selon la doc passerelle.
bot.example.com {
reverse_proxy 127.0.0.1:18789 {
header_up X-Forwarded-Proto {scheme}
header_up X-Forwarded-For {remote_host}
}
}
5. Runbook en sept étapes (Mac physique distant)
- Geler le mode de transport. Un seul chemin actif. En passant du long polling au webhook, arrêtez d’abord le processus de polling pour éviter une double livraison.
- Valider le TLS de bout en bout. Depuis Internet, testez le 443 : chaîne complète, SNI correct, règles pare-feu pour les plages Telegram (selon la doc officielle).
- Fusionner openclaw.json.
cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M); définirpublicUrl, références secrètes et bind local. - Nettoyer l’ancien webhook.
getWebhookInfo→ si l’URL est incorrecte,deleteWebhook→setWebhookdepuis un seul endroit pour limiter les 409. - Recharger et vérifier la santé. Rechargez selon votre méthode ; confirmez le port d’écoute et l’absence de boucles crash dans launchd.
- Tests positifs et négatifs. Message de test ; un
secret_tokenerroné doit échouer vite ; surveillezpending_update_count. - Archiver. Notez domaine, propriétaire du renouvellement de certificat, paramètres
setWebhooket retour possible au long polling.
6. Triage 409 et timeout TLS
| Symptôme | Cause probable | Action |
|---|---|---|
setWebhook 409 |
Webhook déjà défini pour ce jeton ou enregistrement concurrent | getWebhookInfo → retirer l’entrée parasite → deleteWebhook → une seule nouvelle tentative |
last_error_message mentionne TLS / certificat |
Chaîne incomplète, mauvais SNI ou bord HTTP seul | openssl s_client -connect ; corriger les intermédiaires ; forcer HTTPS |
| Poignée de main lente, succès intermittent | RTT transfrontalier ; proxy_read_timeout trop court |
Augmenter le timeout lecture bord→origine ; rapprocher le bord ; éviter les workers bloquants |
| 401 / 403 sur le chemin webhook | Décalage secret_token vs passerelle |
Aligner variables d’environnement et setWebhook ; faire tourner les deux côtés ensemble |
| Messages retardés, pas d’erreur TLS | File d’attente ou surcharge passerelle | Inspecter pending_update_count ; monter en charge ; limiter les appels modèle amont |
7. Chiffres et repères vérifiables
- Long poll getUpdates : le
timeoutest en général 0–50 secondes selon la doc Bot API ; partez prudent sur les liens à RTT élevé. - HTTP local : l’exemple
127.0.0.1:18789reste en loopback ; le proxy porte le TLS et la face publique — cohérent avec les nœuds ZoneMac « SSH d’abord ». - Concurrence webhook : dimensionnez
maxConnectionsavec les workers passerelle et le débit modèle amont pour ne pas accepter plus vite que le cœur ne vide.
8. FAQ
Q : Pourquoi setWebhook renvoie 409 ?
En général un autre webhook est déjà enregistré pour ce jeton, ou le nettoyage a été sauté. Vérifiez getWebhookInfo, deleteWebhook sur les piles inactives, puis retentez setWebhook depuis un seul point d’entrée.
Q : Comment traquer les timeouts de poignée de main TLS ?
Chronométrez openssl s_client et curl depuis l’extérieur ; vérifiez SNI et intermédiaires ; surveillez les coupures HTTP/2 ou au bord. Revérifiez getWebhookInfo.last_error_message après quelques minutes.
Q : Quand le long polling reste-t-il justifié sur un Mac distant ?
Lorsque vous ne pouvez pas encore présenter un TLS digne de confiance Telegram sur un nom d’hôte public — PoC, NAT strict ou automatisation de certificats immature. Vous payez en trafic sortant persistant et sensibilité au RTT.
Q : Où appliquer secret_token ?
À la passerelle ou à l’ingress OpenClaw : incohérence → 401. Faites tourner en même temps setWebhook et la configuration.
9. Synthèse et pourquoi le Mac mini colle à cette pile
Long polling contre webhook ne se résume pas au « plus récent » : il s’agit d’accepter ou non un HTTPS de niveau production et une seule source de vérité pour l’enregistrement. Les webhooks déplacent l’observabilité vers getWebhookInfo ; le long polling concentre la complexité sur les chemins sortants et la surveillance de processus.
Sur un Mac physique distant ZoneMac, un nœud de type Mac mini M4 combine faible puissance en veille (de l’ordre de quelques watts), services de type Unix natifs et démons compatibles launchd — la même machine peut héberger proxy inverse et OpenClaw, idéale pour passerelles sans opérateur. Le durcissement macOS (Gatekeeper, SIP, FileVault) réduit aussi l’inquiétude d’exposition prolongée par rapport à un hôte Windows « utilitaire » typique.
Si vous voulez l’ingress Telegram, le TLS et OpenClaw sur un matériel silencieux et prévisible, le Mac mini M4 reste un excellent rapport prix-stabilité pour démarrer — louez un Mac physique distant chez ZoneMac et répétez ce runbook sur du métal réel.
Besoin d’un Mac physique distant pour les webhooks OpenClaw Telegram ?
ZoneMac propose la location cloud Mac mini haute performance — écoute locale, proxy inverse et passerelle sur une seule machine pour rejouer openclaw.json et les runbooks HTTPS de bout en bout.