2026 OpenClaw sur Mac Mini loué : archives S3 planifiées, sommes de contrôle, reprise et webhooks

Lecture : 10 min

« Sur Mac Mini loué, OpenClaw échoue encore si la passerelle est malade, si aws s3 sync repart sans état stable, ou si les manifestes SHA-256 et le webhook restent absents. »

Matrice, HowTo sept étapes, scripts bash, FAQ IAM. Voir aussi GitLab, quotas, blog, accueil.

Pourquoi les archives S3 planifiées cassent encore sur Mac loué

  1. Reprise fragile. Multipart interrompu sans chemins stables : relecture d’arbres entiers et pic de sortie.
  2. Dérive d’intégrité. Objets uploadés sans manifestes horodatés : pas de preuve bit à bit dossier versus préfixe.
  3. Passerelle muette. Jobs en file alors que le service est dégradé ; shell jamais atteint, journaux launchd vides.

Louer : fenêtres d’upload irrégulières et SSD local rapide avant l’objet.

Matrice : outil de sync, classe de stockage, profondeur de vérification

Surface minimale pour auditeurs ; politique stable par hôte. Nœuds.

Schéma Pertinent quand Garde-fous
aws s3 sync IAM ou rôles, CLI macOS --profile, --region, --only-show-errors, état APFS
rclone avec remote chiffré Chiffrement client ou endpoints non AWS rclone.conf hors Git, chmod strict, secrets
Manifeste de sommes Preuve d’intégrité par run shasum -a 256, nom UTC, gzip si énorme
Webhook et codes de sortie Pager après échecs déterministes Codes sortie mappés ; max cinq retries

Installation de la passerelle OpenClaw

  1. Installer le binaire ou l’image fournie dans votre bundle tenant et vérifier sa somme de contrôle publiée.
  2. Exporter OPENCLAW_GATEWAY_URL et OPENCLAW_API_KEY via un LaunchAgent EnvironmentVariables, jamais dans le dépôt Git.
  3. Exécuter curl -fsS "$OPENCLAW_GATEWAY_URL/health" jusqu’à HTTP 200 ; journaliser dans ~/Library/Logs/openclaw-gateway.log.
  4. Déclencher un job noop qui exécute uname -a pour prouver que l’exécuteur atteint votre session SSH ou graphique.

HowTo : sept étapes reproductibles pour archiver et vérifier

  1. Créer ~/ArchiveSources/projet-a, ~/ArchiveState/projet-a et ~/ArchiveLogs ; réutiliser les chemins pour que le sync saute les clés inchangées après coupure.
  2. Valider aws sts get-caller-identity --profile archive dans le même environnement qu’OpenClaw.
  3. Lancer le sync avec région et profil explicites, par exemple aws s3 sync "$SRC" "s3://compartiment/prefixe/" --profile archive --region eu-west-3 --storage-class INTELLIGENT_TIERING --only-show-errors en relevant --cli-read-timeout si la liaison montante est instable.
  4. Écrire les manifestes : find "$SRC" -type f -print0 | xargs -0 shasum -a 256 > "$STAGING/manifest-$(date -u +%Y%m%dT%H%M%SZ).txt".
  5. Téléverser le manifeste à côté du préfixe données, Content-Type text/plain pour les revues.
  6. Envelopper le flux avec flock -n /tmp/archive-projet-a.lock afin qu’un second launchd chevauché sorte immédiatement.
  7. Sur statut non nul, POST JSON avec identifiant d’exécution, code de sortie et queue de journal vers votre webhook via curl -fsS -H "Content-Type: application/json" -d @payload.json "$WEBHOOK_URL".

Modèles de scripts

Remplacez compartiment, profils et URL webhook ; conservez les secrets hors Git.

archive_run.sh

#!/bin/bash
set -euo pipefail
SRC="$HOME/ArchiveSources/projet-a"
DST="s3://votre-compartiment/archives/projet-a/"
STATE="$HOME/ArchiveState/projet-a"
LOG="$HOME/ArchiveLogs/archive-$(date -u +%Y%m%d).log"
WEBHOOK_URL="${WEBHOOK_URL:-}"
export AWS_PROFILE=archive
exec >>"$LOG" 2>&1
mkdir -p "$STATE"
aws sts get-caller-identity
aws s3 sync "$SRC" "$DST" --region eu-west-3 --only-show-errors
MAN="$STATE/manifest-$(date -u +%Y%m%dT%H%M%SZ).txt"
find "$SRC" -type f -print0 | xargs -0 shasum -a 256 >"$MAN"
aws s3 cp "$MAN" "${DST}manifestes/$(basename "$MAN")" --region eu-west-3

Fragment failure_notify.sh

ec=$?
if [[ "$ec" -ne 0 && -n "${WEBHOOK_URL:-}" ]]; then
  jq -n --argjson code "$ec" --arg host "$(hostname)" \
    '{exit:$code,host:$host,ts:now|todate}' \
    | curl -fsS -H "Content-Type: application/json" -d @- "$WEBHOOK_URL"
fi
exit "$ec"

Accès distant : centre d’aide SSH et VNC ; tarifs pour dimensionner la liaison montante.

FAQ : erreurs d’identifiants courantes

SignatureDoesNotMatch ou signature invalide

Faites tourner les clés, synchronisez l’horloge avec sntp, retirez tout retour ligne collé dans le secret, confirmez --region identique à la région du compartiment.

AccessDenied sur PutObject alors que ListBucket répond

L’IAM liste souvent le compartiment mais omet arn:aws:s3:::compartiment/* avec s3:PutObject ; vérifiez aussi la politique KMS si chiffrement requis.

ExpiredToken

Jetons STS expirés pendant la nuit ; rafraîchissez AWS_SESSION_TOKEN avant l’heure launchd ou basculez utilisateur IAM pour le batch.

PermanentRedirect

Appelez aws s3api get-bucket-location puis alignez les drapeaux région, ou activez le endpoint global dans ~/.aws/config.

Repères citables pour astreinte et revue

  • Trois cents secondes de dérive d’horloge maximum avant que les signatures AWS ne deviennent intermittentes.
  • Cinq tentatives de relance webhook comme plafond pratique avant que les canaux ne soient mutés.
  • Cent vingt secondes de ThrottleInterval minimum sur les wrappers launchd qui appellent des CLI réseau lourdes.

Étape suivante. Industrialisez vos archives OpenClaw sur un nœud Apple Silicon : parcourez l’accueil, les forfaits Mac Mini, puis passez commande via l’achat en lignesans connexion obligatoire au moment du paiement. Le centre d’aide détaille SSH et VNC pour valider passerelle et charge réelle.

Choisissez votre nœud Mac pour OpenClaw et archives S3

Depuis l’accueil, comparez les tarifs, puis louezaucune connexion requise pour finaliser l’achat. Le centre d’aide couvre l’accès distant ; le blog prolonge les guides OpenClaw.

Poursuivez : accueil, achat sans compte, aide, blog.

Louer pour OpenClaw et S3