Déploiement d'OpenClaw AI Agent sur VPS : Guide pas à pas avec scripts
OpenClaw est un agent IA open-source pour gérer votre VPS via Telegram. Pile complète : docker-compose, scripts bash, configs de contexte. Clonez le repo, configurez .env avec les clés API, lancez deploy.sh — système prêt en 10 minutes. L'agent surveille les conteneurs, exécute des requêtes SQL, redémarre les services et vérifie les heartbeats.
Architecture du système
OpenClaw s'exécute dans un conteneur Docker ghcr.io/openclaw/openclaw avec montages pour /var/run/docker.sock, /var/www/projects et /var/log/nginx. Le contexte de workspace/SOUL.md définit le comportement : liste des conteneurs PostgreSQL, table des projets, règles de sécurité.
Les scripts dans /tools/ sont déclenchés par les requêtes :
docker-status.sh,docker-logs.sh,docker-restart.shdb-discover.sh,db-query.shpour PostgreSQLhealth-check.shpour la surveillance des sites HTTPsystem-stats.sh,security-check.sh
L'agent gère le langage naturel : « logs du service auth » → docker-logs.sh auth-container.
Exigences minimales
- Ubuntu 20.04+ ou Linux avec Docker Compose V2 (
docker compose version) - 2 Go de RAM (agent ~300–500 Mo)
- Clé API OpenRouter (openrouter.ai/keys) pour GPT-4o, modèles Claude
- Jeton Telegram du bot via @BotFather
Étape 1 : Configuration du repo
ssh user@your-server
git clone https://github.com/ShyDamn/openclaw-devops-kit.git /tmp/openclaw-setup
cd /tmp/openclaw-setup
Structure :
openclaw-devops-kit/
├── docker-compose.yml
├── .env.example
├── deploy.sh
├── config/openclaw.json
├── workspace/SOUL.md, USER.md, HEARTBEAT.md
└── tools/ (14 scripts : docker-*.sh, db-*.sh, health-check.sh, etc.)
Étape 2 : Bot Telegram et .env
- @BotFather → /newbot → jeton
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 - @userinfobot → votre ID
778921250
cp .env.example .env
nano .env
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxx
YOUTRACK_TOKEN=perm:your-token-here # optionnel
Dans config/openclaw.json :
"allowFrom": [
"tg:778921250"
]
Étape 3 : Configuration du contexte dans workspace/
SOUL.md — Comportement principal
Listez vos conteneurs PostgreSQL et projets :
## Conteneurs PostgreSQL : db1, db2, db3
| Chemin | Projet | Pile |
|--------|--------|------|
| /projects/my-app/ | SaaS | Next.js + PostgreSQL |
| /projects/api/ | Backend | NestJS |
Règles : lecture sans confirmation, modifications avec double vérification.
USER.md — Votre profil
Fuseau horaire, pile technologique, projets clés.
HEARTBEAT.md — Checklist horaire
Surveillance des ressources, statut des conteneurs, sites HTTP.
Étape 4 : Surveillance des sites
Dans tools/health-check.sh :
SITES=(
"mysite.com|mysite-frontend|mysite"
"api.mysite.com|mysite-api|mysite"
)
Format : domaine|conteneur|projet. En cas de 5xx/timeout — redémarrage auto, notification en cas d'échec.
Étape 5 : Déploiement et lancement
bash deploy.sh
Automatisation :
- Vérifier Docker Compose V2
- Créer
/var/www/openclaw/ - Définir permissions .env (chmod 600)
- Récupérer l'image
- Démarrer le conteneur
Appairage Telegram :
cd /var/www/openclaw
docker compose run --rm --profile cli openclaw-cli pairing approve telegram <CODE>
Analyse des scripts clés
docker-logs.sh
#!/bin/bash
CONTAINER="${1:?Usage: docker-logs.sh <container_name> [lignes]}"
LINES="${2:-50}"
docker logs --tail "$LINES" "$CONTAINER" 2>&1
Détecte automatiquement le conteneur depuis SOUL.md.
system-stats.sh
#!/bin/bash
echo "=== RAM ==="
free -h
echo ""
echo "=== DISQUE ==="
df -h / | tail -1
# ... CPU, stats docker
Sortie complète pour heartbeat.
db-discover.sh — Découverte des bases
#!/bin/bash
for c in $(docker ps --format '{{.Names}}' | grep -i postgres); do
echo "=== $c ==="
DB_USER=$(docker exec "$c" printenv POSTGRES_USER 2>/dev/null)
# ...
docker exec "$c" psql -U "$DB_USER" -d "$DB_NAME" -c "\dt"
done
Trouve automatiquement toutes les instances PostgreSQL, récupère POSTGRES_USER/POSTGRES_DB, liste les tables.
db-query.sh
Exécute SQL avec params conteneur.
Points clés à retenir
- Contexte SOUL.md essentiel : Sans table projets/conteneurs, l'agent demande des détails.
- Whitelist dans openclaw.json : Accès uniquement via ID Telegram, pas de fuites.
- Health-check.sh avec redémarrage auto : 5xx → redémarrage → vérification → notification.
- Licence MIT : Contrôle total sur scripts/configs.
- OpenRouter : Rotation des modèles (GPT-4o, Claude) en cas d'échec, une seule API.
— Editorial Team
Aucun commentaire pour le moment.