2026 : OpenClaw sur Mac Mini loué — GitLab CI Scheduled Pipeline pour la ronde nocturne et le digest matinal
« Lorsqu’OpenClaw vit sur un Mac Mini loué, la ronde nocturne et le résumé matinal gagnent à être pilotés par des pipelines planifiés GitLab plutôt que par des cron ad hoc : vous conservez une chaîne d’audit, des variables isolées et des artefacts horodatés. »
Guide reproductible : jetons minimaux, webhooks durcis, relances et artefacts journaux, points de contrôle en CLI. Voir le guide quotas et backoff OpenClaw, la matrice 7×24 files et fenêtres, l’index du blog.
Trois freins récurrents quand OpenClaw dépend d’un déclencheur externe
- Jetons trop larges. Un PAT multi-projets agrandit la surface d’une fuite ; sur Mac loué, imposez rotation courte et traçable.
- Déclenchements opaques. Sans
CI_PIPELINE_SOURCEet ID de planif, pas de lien clair entre régression OpenClaw et changement infra. - Journaux éclatés. Sans artefacts, le digest matin ne recoupe pas la ronde avec des fichiers datés.
Matrice décisionnelle : comment déclencher avec le minimum de pouvoir
Trigger par défaut ; jeton d’accès étroit seulement si lecture d’artefacts cross-repo, avec expiration courte.
| Mécanisme | Cas d’usage | Moindre privilège | Risque résiduel |
|---|---|---|---|
| Jeton de déclenchement | Planifications ronde et digest sur branche figée | Droit de déclencher uniquement le pipeline cible | Exposition du secret permet de lancer des builds |
| Webhook entrant | Système externe notifie GitLab | Secret partagé, liste d’IP, corps signé | Rejeu si l’idempotence est absente |
| Jeton d’accès projet | Lecture d’artefacts pour le job matin | Scopes read_api ou lecture registry seulement |
Surface plus large qu’un simple trigger |
Sept étapes reproductibles, chacune avec un point de contrôle explicite
- Variables.
RUN_MODE=nightly_audit|morning_digest. Contrôle : tableau dans MR ou runbook. - Trigger token. CI/CD → Pipeline triggers. Contrôle : invité lecture seule ne déclenche pas l’API.
- Deux planifs. Cron nuit et matin, fuseau = métier ou Mac. Contrôle : Next run GitLab vs horloge nœud < 1 min.
- Test Mac. Pare-feu sortant OK. Contrôle : HTTP 201, pipeline visible.
- OpenClaw.
Beareraudit →/healthzpuis métier. Contrôle : job rouge si quota ou auth KO + alerte. - Retry + artefacts sur
logs/. Contrôle : coupure réseau → reprise ou erreur explicite. - Revue. Croiser charge et fenêtres (cf. matrice 7×24 liée ci-dessus) ; ajuster SKU loué.
Point de contrôle A — déclencher un pipeline depuis votre poste (remplacez domaine et identifiants)
curl -fsS --retry 4 --retry-delay 15 --retry-all-errors \
--connect-timeout 10 --max-time 120 \
-F "token=${GITLAB_TRIGGER_TOKEN}" -F "ref=main" \
-F "variables[RUN_MODE]=nightly_audit" \
"https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline"
Point de contrôle B — sonder OpenClaw depuis le Mac loué (jeton lecture seule)
curl -fsS --retry 3 --retry-delay 5 --max-time 30 \
-H "Authorization: Bearer ${OPENCLAW_AUDIT_TOKEN}" \
"${OPENCLAW_BASE_URL%/}/healthz"
Point de contrôle C — ancrer la clé hôte SSH du runner ou de la session distante
ssh-keyscan -H "${MAC_LOUE_HOST}" >> ~/.ssh/known_hosts
ssh -o BatchMode=yes -o ConnectTimeout=10 "${MAC_LOUE_USER}@${MAC_LOUE_HOST}" 'uname -a'
Fragment GitLab CI : relances, timeout et archivage des journaux
Le bloc default uniformise les relances ; les artefacts conservent les traces pour le job digest du matin.
default:
retry:
max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure
openclaw_nightly:
stage: audit
tags: [mac-mini-loue]
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUN_MODE == "nightly_audit"'
script:
- mkdir -p logs
- curl -fsS --retry 5 --retry-all-errors --max-time 600 \
-H "Authorization: Bearer $OPENCLAW_AUDIT_TOKEN" \
-o logs/audit.json "$OPENCLAW_BASE_URL/audit/run"
artifacts:
when: always
paths: [logs/]
expire_in: 36h
Rétention longue : copiez vers stockage objet chiffré et masquez les secrets dans les journaux.
Repères citables pour cadrer exploitation et astreinte
- Schedule only : jobs lourds si
CI_PIPELINE_SOURCE=schedule. - Relances :
curl+retryjob ; puis humain si échec persistant. - Artefacts : 36–48 h pour nuit→matin ; sinon export objet + lifecycle.
- Webhook : proxy transmet
Authorization; dérive horaire < 5 min.
FAQ dépannage
- Planif visible, job absent ?
rules, variables de planif, branches protégées.- curl lent sur Mac loué ?
- DNS, latence ;
--connect-timeoutet--max-time. - Digest vide ?
- Chemin artefacts pipeline veille,
expire_in; garde si glob date vide. - Rotation jeton sous charge ?
- Deux secrets en parallèle un cycle, puis retrait de l’ancien ; trace changelog.
Pour la suite. Un nœud Apple Silicon avec sortie stable simplifie les planifications et les webhooks : parcourez les forfaits Mac Mini, puis commandez via l’achat en ligne sans création de compte ; le centre d’aide détaille SSH et VNC pour valider vos runners et vos sondes.
Choisissez votre nœud Mac et votre mode d’accès
OpenClaw et GitLab sur Mac Mini loué : consultez l’accueil, les tarifs, puis louer sans compte — le centre d’aide couvre SSH et VNC ; le blog détaille quotas, launchd et observabilité.
Poursuivre : achat sans connexion, aide, blog.