2026 : OpenClaw sur Mac Mini loué — GitLab CI Scheduled Pipeline pour la ronde nocturne et le digest matinal

Lecture : 9 min

« 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

  1. Jetons trop larges. Un PAT multi-projets agrandit la surface d’une fuite ; sur Mac loué, imposez rotation courte et traçable.
  2. Déclenchements opaques. Sans CI_PIPELINE_SOURCE et ID de planif, pas de lien clair entre régression OpenClaw et changement infra.
  3. 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

  1. Variables. RUN_MODE = nightly_audit | morning_digest. Contrôle : tableau dans MR ou runbook.
  2. Trigger token. CI/CD → Pipeline triggers. Contrôle : invité lecture seule ne déclenche pas l’API.
  3. Deux planifs. Cron nuit et matin, fuseau = métier ou Mac. Contrôle : Next run GitLab vs horloge nœud < 1 min.
  4. Test Mac. Pare-feu sortant OK. Contrôle : HTTP 201, pipeline visible.
  5. OpenClaw. Bearer audit → /healthz puis métier. Contrôle : job rouge si quota ou auth KO + alerte.
  6. Retry + artefacts sur logs/. Contrôle : coupure réseau → reprise ou erreur explicite.
  7. 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 + retry job ; 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-timeout et --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.

Louer sans compte