2026 OpenClaw sur Mac Mini loué : archives S3 planifiées, sommes de contrôle, reprise et webhooks
« 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é
- Reprise fragile. Multipart interrompu sans chemins stables : relecture d’arbres entiers et pic de sortie.
- Dérive d’intégrité. Objets uploadés sans manifestes horodatés : pas de preuve bit à bit dossier versus préfixe.
- 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
- Installer le binaire ou l’image fournie dans votre bundle tenant et vérifier sa somme de contrôle publiée.
- Exporter
OPENCLAW_GATEWAY_URLetOPENCLAW_API_KEYvia un LaunchAgentEnvironmentVariables, jamais dans le dépôt Git. - Exécuter
curl -fsS "$OPENCLAW_GATEWAY_URL/health"jusqu’à HTTP 200 ; journaliser dans~/Library/Logs/openclaw-gateway.log. - Déclencher un job noop qui exécute
uname -apour prouver que l’exécuteur atteint votre session SSH ou graphique.
HowTo : sept étapes reproductibles pour archiver et vérifier
- Créer
~/ArchiveSources/projet-a,~/ArchiveState/projet-aet~/ArchiveLogs; réutiliser les chemins pour que le sync saute les clés inchangées après coupure. - Valider
aws sts get-caller-identity --profile archivedans le même environnement qu’OpenClaw. - 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-errorsen relevant--cli-read-timeoutsi la liaison montante est instable. - Écrire les manifestes :
find "$SRC" -type f -print0 | xargs -0 shasum -a 256 > "$STAGING/manifest-$(date -u +%Y%m%dT%H%M%SZ).txt". - Téléverser le manifeste à côté du préfixe données,
Content-Type text/plainpour les revues. - Envelopper le flux avec
flock -n /tmp/archive-projet-a.lockafin qu’un second launchd chevauché sorte immédiatement. - 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 ligne — sans 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 louez — aucune 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.