Je viens de passer 2h30 à installer OpenClaw sur un Mac Mini. Pas un simulateur, pas une VM : le vrai macOS, sur du vrai matériel Apple. Ethonnêtement ? C’était plus simple que je l’imaginais, mais j’ai quand même fait toutes les erreurs possibles. Alors voici le guide que j’aurais aimé avoir avant de commencer.
Pourquoi un Mac Mini pour OpenClaw ?
Avant de plonger : pourquoi diable installer OpenClaw sur macOS plutôt qu’un VPS Linux classique ?
Les avantages réels :
- Stability : macOS ne s’écrase pas tous les 4 matins comme certaines distros cheap
- Écosystème Apple : si tu as déjà iPhone/iPad, c’est un point d’entrée cohérent
- Performance : un Mac Mini M1/M2 avec 16GB RAM suffit largement pour tourner plusieurs agents
- Isolation : pas de risk de conflit avec d’autres services sur ta machine de dev principale
Les inconvénients :
- Prix : un Mac Mini d’occasion M1 coûte 300-400€, c’est plus cher qu’un VPS
- Flexibilité limitée : pas de Docker “officiel” sur macOS (mais OrbStack ou Colima fonctionnent)
- Docs moins exhaustives : la plupart des tutos OpenClaw sont faits pour Linux
Mon verdict : Si tu veux un hardware dédié, propre, avec une stack macOS, le Mac Mini est un excellent choix. Si tu veux juste tester, commence avec un VPS à 5€/mois. Mais si t’as déjà le Mac Mini sous la main, fonce.
La Préparation : 30 minutes qui sauvent des heures
1. Gestionnaire de mots de passe obligatoire
Je l’ai écrit dans le premier article sur OpenClaw, mais je le répète : ne STOCKE JAMAIS tes credentials dans Notes, Safari, ou un fichier texte. C’est la erreur n°1 qui fait gagner 3 jours de stress aux hackers.
Mes recommandations :
- Bitwarden (gratuit, open-source) → install le desktop app
- 1Password (payant mais excellent UX) → si tu es familier
Crée un vault spécifique “OpenClaw” dedans. On va y mettre :
- Toutes les clés API
- Tokens Telegram/Discord
- Gateway token
- Mot de passe admin pour l’interface web
WARNING : Pas de copier-coller dans des fichiers temporaires. Copie directement de Bitwarden vers ton .env.
2. Créer un Apple ID dédié (pas ton perso)
Pourquoi ? Parce que :
- Tu vas installer des apps via l’App Store (OrbStack, etc.)
- Tu veux pas lier ta vie privée à une machine qui héberge des bots
- En cas de souci, tu peux jeter l’Apple ID sans conséquence
La procédure :
- Va sur appleid.apple.com
- Crée un nouveau compte avec une adresse Gmail dédiée (genre
openclaw.macmini@gmail.com) - Active la 2FA immédiatement (Settings → Password & Security)
- Ajoute un numéro de téléphone (ton numéro principal, t’auras besoin pour la recovery)
Le piège : Apple vérifie l’adresse email. Si tu mets une adresse qui existe déjà (même en recovery), ça bloque. Utilise une nouvelle adresse Gmail créée pour l’occasion.
3. Créer un compte Google dédié (pour OAuth)
OpenClaw utilise OAuth pour s’intégrer à Telegram, Discord, etc. Tu ne veux PAS utiliser ton compte Google personnel.
Procédure :
- Crée
openclaw.api@gmail.com(ou similaire) - Va sur console.cloud.google.com
- Crée un projet “OpenClaw Mac Mini”
- Active les APIs nécessaires (on les verra après)
- Crée des credentials OAuth 2.0 Client ID (type : Desktop app)
Important : Ce compte Google ne sert que pour les APIs. Ne l’utilise pas pour Gmail, Drive, etc.
Récupérer les Clés API (1h d’attente potentielle)
C’est la partie la plus longue : attends souvent des heures pour certaines validations. Fais-les dans cet ordre :
1. Anthropic (Claude Opus)
Pourquoi : OpenClaw peut utiliser Claude comme LLM principal. C’est pas gratuit, mais c’est excellent.
Étapes :
- Va sur console.anthropic.com
- Crée un compte (avec ton Google dédié)
- Settings → API Keys → Create Key
- Copie la clé (commence par
sk-ant-...)
Coût : ~0.03/1M en sortie. Pas donné, mais la qualité justifie pour leprod.
2. OpenAI
Si tu veux utiliser GPT-4o ou o1-preview.
Étapes :
- platform.openai.com/api-keys
- Crée une nouvelle secret key
- Copie-la bien
Coût : ~0.01-0.05$/1K tokens selon le modèle.
3. Brave Search API
OpenClaw peut faire des recherches web via Brave.
Étapes :
- Va sur api.search.brave.com/register
- Crée un compte
- Crée une “Subscription” (y a un free tier : 2K requêtes/mois)
- Récupère l’API key (commence par
BSA...)
Note : Si tu veux pas payer, OpenClaw peut utiliser DuckDuckGo sans clé API, mais c’est moins fiable.
4. Telegram Bot Token
OpenClaw interagit avec Telegram via un bot.
Étapes :
- Ouvre Telegram, cherche
@BotFather /newbot- Choisis un nom :
OpenClaw Bot - Choisis un username :
openclaw_yourname_bot(doit finir par “bot”) - BotFather te donne un token (genre
1234567890:ABCdefGHI...) - Copie-le dans Bitwarden
Test rapide :
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getMe"Doit retourner {"ok":true,"result":{...}}
5. Discord Bot Token
Pour Discord, c’est un peu plus long.
Étapes :
- Va sur discord.com/developers/applications
- “New Application” → “OpenClaw”
- Onglet “Bot” → “Add Bot” → “Yes, do it!”
- Sous “Privileged Gateway Intents”, active :
- PRESENCE INTENT
- SERVER MEMBERS INTENT
- MESSAGE CONTENT INTENT
- “Reset Token” → copie-le
- IMPORTANT : Génère une “OAuth2 URL” pour inviter le bot sur ton serveur :
- URL Generator → scopes :
bot - Bot Permissions :
Send Messages,Read Message History,Embed Links - Copie l’URL générée, ouvre-la dans un navigateur, invite sur ton serveur
- URL Generator → scopes :
Le piège : Si tu n’actives pas les 3 intents, le bot ne verra pas les messages. Vérifie dans Discord Developer Portal.
6. Gateway Token
Le “gateway” c’est le composant qui connecte tous les services. OpenClaw génère un token au premier démarrage, mais tu peux le définir toi-même.
Pour l’instant, on le laisse empty. On le récupérera après l’onboarding.
Récapitulatif des credentials dans Bitwarden
Crée une entrée “OpenClaw API Keys” avec ces champs :
anthropic_key: sk-ant-…openai_key: sk-…brave_key: BSA…telegram_bot_token: 12345:…discord_bot_token: TOKEN_DISCORD…gateway_token: (on le mettra plus tard)
Installation de macOS sur le Mac Mini (30 min)
Wipe complet
Si ton Mac Mini a déjà des données, efface tout :
- Redémarre
- Au boot, appuie sur
Cmd+R(Recovery Mode) - Utilitaire → “Disk Utility”
- Sélectionne le disque principal (généralement “Apple SSD AP0256J”)
- “Erase” :
- Format : APFS (Encrypted si tu veux, mais pas obligatoire)
- Scheme : GUID Partition Map
- Ferme Disk Utility
Setup Assistant (le plus important)
Quand tu démarres frais, macOS te guide. Suis exactement cette procédure :
- Langue : Français (ou ta langue)
- Pays : France (ou selon ta région)
- Accessibilité : None
- Données de diagnostic : Je recommande “Envoyer à Apple” (pas sensible)
- Siri : Configure-le si tu veux (pas obligatoire)
- Créer un compte d’ordinateur :
- Nom complet : “OpenClaw” (pas ton vrai nom)
- Nom de compte (username) :
openclaw(c’est important, on va l’utiliser) - Mot de passe : un MOT DE PASSE FORT (Bitwarden → generate → 32 chars)
- Hint : laisse vide ou “Bitwarden”
- Apple ID : connecte-toi avec l’Apple ID dédié créé plus tôt
- Terms : Agree
- Express Settings : Désactive TOUT :
- “Location Services” → No
- “Siri” → No si pas besoin
- Time Zone : choisi ta timezone
- “Analytics” → No
- “Screen Time” → No
- “Appearance” : Light ou Dark selon ta préf
Le piège : Si tu laisses “Express Settings” sur Yes, Apple active des services de tracking et de Cloud qui peuvent interférer avec ton setup. Désactive tout manuellement.
Fin du Setup
Une fois sur le bureau :
- Connecte-toi en SSH si tu veux (Settings → Sharing → Remote Login)
- Enlève l’autologin si activé (Settings → Users & Groups → Login Options)
Installer les Dépendances (20 min)
Ouvre le Terminal (Cmd+Space → Terminal).
1. Homebrew (le package manager macOS)
Si tu l’as pas déjà :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Suis les instructions. À la fin, ajoute Brew dans ton PATH :
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofileeval "$(/opt/homebrew/bin/brew shellenv)"Vérifie :
brew --version2. Node.js (version LTS)
brew install node@20# ou node@22 pour la dernière LTSVérifie :
node --version # Doit afficher v20.x ou v22.xnpm --versionLe piège : macOS vient avec un vieux Node. Vérifie que c’est bien celui de Brew :
which node# Doit retourner /opt/homebrew/bin/node (ou /usr/local/bin/node selon arch)3. Git
brew install gitgit --versionConfigure ton identité (même si tu es le seul user) :
git config --global user.name "OpenClaw"git config --global user.email "openclaw@localhost"4. (Optionnel) OrbStack ou Colima pour Docker
Si tu veux utiliser des conteneurs Docker (pour isoler les agents) :
OrbStack (payant mais excellent) :
- Télécharge sur orbstack.dev
- Installe, ouvre, crée un compte free tier
Colima (gratuit, moins performant) :
brew install colimacolima start --cpu 4 --memory 8 --disk 60Vérifie Docker :
docker --versiondocker ps # Doit marcher sans erreur5. curl, wget, jq (utilitaires)
brew install curl wget jqCloner le repo OpenClaw et configuration du .env
1. Clone le repo officiel
cd ~git clone https://github.com/openclaw/openclaw.gitcd openclawSi tu veux une branche stable :
git checkout stable2. Installer le CLI global
npm install -g .Vérifie :
openclaw --version3. Créer le fichier .env
Dans le dossier openclaw/ :
cp .env.example .envÉdite-le :
nano .env# ouvim .envContenu typique (remplace par tes vraies valeurs de Bitwarden) :
# LLM ProvidersANTHROPIC_API_KEY=sk-ant-your-key-hereOPENAI_API_KEY=sk-your-key-here
# SearchBRAVE_SEARCH_API_KEY=BSA-your-key-here
# TelegramTELEGRAM_BOT_TOKEN=1234567890:ABCdefGHI...
# DiscordDISCORD_BOT_TOKEN=your-discord-token...DISCORD_CLIENT_ID=123456789012345678 # Le numéro dans l'URL Discord Dev Portal
# Google OAuth (pour Telegram OAuth flow)GOOGLE_CLIENT_ID=your-google-client-id.apps.googleusercontent.comGOOGLE_CLIENT_SECRET=your-client-secret
# Gateway (initialement vide, on le récupère après l'onboarding)GATEWAY_TOKEN=
# Node URL (si gateway distant)# GATEWAY_URL=https://your-gateway.example.comWARNING : Ne commets JAMAIS .env. Vérifie qu’il est bien dans .gitignore :
cat .gitignore | grep .env# Doit afficher ".env"4. Initialiser le workspace OpenClaw
cd ~/openclawopenclaw initÇa crée la structure :
~/openclaw/├── .env├── agents/├── config.json├── skills/└── ...Lancer l’Onboarding Wizard (15 min)
OpenClaw a un wizard interactif qui configure Telegram, Discord, et le gateway.
openclaw onboardSuis les étapes :
Étape 1 : Gateway Token
Le wizard va générer un token pour le gateway local.
- Il te propose de créer un token aléatoire → Accepte
- Copie ce token dans ton
.envsousGATEWAY_TOKEN=... - Il lance le gateway en arrière-plan
Test :
curl -H "Authorization: Bearer <TON_TOKEN>" http://localhost:8080/health# Doit retourner {"status":"ok"}Étape 2 : Telegram Configuration
Le wizard va demander :
- Ton bot token → colle celui de BotFather
- Ton chat ID (optionnel) → si tu veux recevoir des notifications perso
Il va aussi tester la connexion. Si ça marche, tu reçois un message de ton bot dans Telegram.
Le piège : Si le bot ne répond pas :
- Vérifie que le bot est bien “activated” dans BotFather (
/mybots→ ton bot → “Bot Settings” → “Group Privacy” → OFF si tu veux qu’il lise les groupes) - Vérifie que ton token est correct
- Vérifie que le gateway tourne (
ps aux | grep openclaw)
Étape 3 : Discord Configuration
Le wizard va demander :
- Discord bot token
- Discord client ID
- IDs des serveurs (optionnel)
Colle ce que tu as dans Bitwarden. Le wizard teste en envoyant un message dans un channel test (tu dois avoir invité le bot sur un serveur avant).
Si erreur “Missing Access” : Le bot n’a pas les permissions dans le channel. Vérifie :
- Le bot est bien invité sur le serveur
- Le bot a le role “Bot” avec permissions “Send Messages”, “Read Message History”
- Le channel n’est pas en “slow mode” ou “thread only”
Étape 4 : Fin
Le wizard écrit la config finale dans config.json et agents/.
Vérifie :
cat ~/openclaw/config.json | jq .Devrait montiver gateway, telegram, discord configurés.
Sécurisation du Mac Mini (20 min)
Maintenant que OpenClaw tourne, sécurisons la machine.
1. Firewall macOS
# Active le firewallsudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
# Autorise seulement les apps signées (pas de prompt pour chaque app)sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned on
# Bloque tout inbound non-whitelisté (OpenClaw va ajouter ses ports)sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockall onVérifie le statut :
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate# Doit dire "ON" ou "1"2. fail2ban pour SSH brute-force
Installe fail2ban via Homebrew :
brew install fail2banCrée une config :
sudo cp /usr/local/etc/fail2ban/fail2ban.conf /usr/local/etc/fail2ban/fail2ban.localsudo nano /usr/local/etc/fail2ban/jail.localContenu minimal :
[DEFAULT]bantime = 3600findtime = 600maxretry = 5
[sshd]enabled = trueport = sshfilter = sshdlogpath = /var/log/system.logLance fail2ban :
sudo brew services start fail2banVérifie :
sudo fail2ban-client status sshd3. Désactiver l’autologin
Settings → Users & Groups → Login Options → “Automatic login” → Off
4. Mettre à jour macOS
Settings → General → Software Update → Update Now
Redémarre après la mise à jour.
5. Créer un utilisateur standard pour OpenClaw (optionnel mais recommandé)
Si tu veux isoler complètement :
sudo sysadminctl -addUser openclaw-runner -password <un-password-fort> -adminMais en général, le user openclaw créé pendant le Setup suffit.
Accès à OpenClaw : Telegram, Discord, Control UI
1. Telegram
Ton bot devrait déjà t’envoyer des notifications. Pour interagir :
- Ouvre Telegram, cherche ton bot (le username que tu as choisi)
- Tape
/helppour voir les commandes - Utilise
/agent statuspour voir les agents actifs
2. Discord
Le bot devrait être présent sur ton serveur. Dans le channel où tu l’as invité :
- Tape
!help(ou la commande prefix que tu as configuré) !agentsliste les agents!skill listmontre les skills disponibles
3. Control UI (Web Interface)
OpenClaw vient avec une petite UI web pour gérer les agents.
# Ouvre dans ton navigateurhttp://localhost:8080Ou si tu as configuré HTTPS :
http://localhost:8443Login : Le wizard a créé un admin user (par défaut admin / mot de passe dans .env si tu l’as défini). Sinon, crée un user :
openclaw user add --username admin --password <ton-mdp-fort>Tests et premiers Skills
1. Tester un agent simple
OpenClaw crée un agent par défaut “default”. Teste :
openclaw agent ask --message "Quelle est la capitale de la France ?" --to defaultDoit répondre “Paris” (ou une corection selon le LLM configuré).
2. Installer un skill utile
Les skills sont des capacités additionnelles. Commence par filesystem pour lire/écrire des fichiers :
openclaw skill install filesystemopenclaw skill enable filesystemTeste :
openclaw agent ask --message "Liste les fichiers dans /tmp" --to default --with-skill filesystem3. Créer un agent Telegram dédié
Pourquoi : séparer les conversations. Si ton bot principal gère à la fois les agents et les skills, crée un agent telegram :
openclaw agent create --name telegram --model openrouter/stepfun/step-3.5-flash:freeopenclaw agent skill add telegram --agent telegramopenclaw agent skill enable telegram --agent telegramRelance le gateway si besoin :
openclaw gateway restartMaintenance et Mises àJour
Mettre à jour OpenClaw
cd ~/openclawgit pullnpm install -g .openclaw gateway restartMettre à jour les dépendances
brew updatebrew upgradeLogs et debugging
# Logs du gatewaytail -f ~/.openclaw/logs/gateway.log
# Logs d'un agenttail -f ~/.openclaw/agents/default/logs/agent.log
# Status des processesopenclaw statusBackup .env et agents/
tar -czf openclaw-backup-$(date +%Y%m%d).tar.gz ~/.openclaw/Stocke ça dans un drive chiffré ou un disque externe.
Dépannage : Problèmes Courants
OAuth ne fonctionne pas (Telegram/Discord)
Symptôme : “Invalid token” ou “Bot not found”
Solutions :
- Vérifie que le token est exact (pas d’espaces, pas de sauts de ligne)
- Pour Discord, vérifie que le bot est invité sur le serveur, pas seulement créé
- Active les OAuth Intents dans Discord Dev Portal (les 3 cases)
- Pour Telegram, envoie un message au bot via l’app d’abord (
/start) pour activer la conversation - Redémarre le gateway :
openclaw gateway restart
Port déjà utilisé
Symptôme : “Error: listen EADDRINUSE: address already in use :::8080”
Solution :
# Trouve le process qui utilise le portlsof -i :8080# Tue-lekill -9 <PID># Ou change le port dans .env# GATEWAY_PORT=8081Clés API refusées
Symptôme : “Invalid API Key” dans les logs
Solutions :
- Vérifie que la clé est copiée exactement (sans retour à la ligne)
- Vérifie que le compte a du credit (pour Anthropic/OpenAI)
- Pour Brave Search, vérifie que t’as activé l’API dans la console (pas juste créé la clé)
L’agent ne répond pas
Diagnostic :
openclaw agent status# Doit montiver "running" ou "idle"
openclaw agent ask --message "test" --to default# Si timeout, regarde les logstail -f ~/.openclaw/agents/default/logs/agent.logProblèmes fréquents :
.envpas chargé →source ~/.zprofileou restart terminal- Gateway down →
openclaw gateway start - Token invalide →
openclaw gateway token reset
macOS bloque l’execution des scripts
Symptôme : “Permission denied” sur openclaw
Solution :
chmod +x /opt/homebrew/bin/openclaw# Si installé ailleurswhich openclawBatterie qui se vide vite
Si tu laisses le Mac Mini allumé 24/7 et qu’il est sur batterie (Mac Mini ça existe pas, mais au cas où) → active “Power Nap” désactivé dans Settings → Battery.
Sur Mac Mini fixe, pas de souci.
Temps Total : 2h30 à 3h
Honêtement, en suivant ce guide, tu devrais être opérationnel dans l’après-midi. Le plus long c’est d’attendre les validations d’API (surtout Google OAuth parfois).
Points critiques :
- Apple ID dédié (pas le perso)
- Clés API dans Bitwarden, pas dans Notes
- 2FA activé partout
.envcorrect et pas commité- Gateway token copié après l’onboarding
Si tu bloques sur un point, j’ai fait toutes les erreurs. Reviens lire cette section. Et si vraiment tu galères, ouvre un issue sur GitHub openclaw/openclaw avec le log exact (pas de capture d’écran de terminal, le texte).
TL;DR : Crée un Apple ID dédié → Récupère toutes les clés API → Wipe + Setup Assistant → Dépendances Homebrew → Clone → .env → openclaw onboard → Sécurise → Test. 2h30 chrono.
Bon courage, et bienvenue dans la famille OpenClaw sur Mac.