Powrót do strony głównej

Przewodnik po instalacji OpenClaw AI na VPS

Przewodnik po wdrożeniu agenta OpenClaw AI na VPS z docker-compose i bash-skryptami. Agent zarządza kontenerami, PostgreSQL, monitoruje strony przez Telegram. Pełna architektura, przykłady kodu, konfiguracja kontekstu.

OpenClaw na VPS: AI-agent dla DevOps w Telegram
Advertisement 728x90

Wdrożenie agenta AI OpenClaw na VPS: przewodnik krok po kroku ze skryptami

OpenClaw to open-source'owy agent AI do zarządzania VPS przez Telegram. Pełny stos: docker-compose, skrypty bash narzędzi, konfiguracje kontekstu. Sklonuj repozytorium, skonfiguruj .env z kluczami API, uruchom deploy.sh — system gotowy do pracy w 10 minut. Agent monitoruje kontenery, wykonuje zapytania SQL, restartuje serwisy, sprawdza heartbeat.

Architektura systemu

OpenClaw działa w kontenerze Docker ghcr.io/openclaw/openclaw z montowaniem /var/run/docker.sock, /var/www/projects i /var/log/nginx. Kontekst z workspace/SOUL.md określa zachowanie: lista kontenerów PostgreSQL, tabela projektów, reguły bezpieczeństwa.

Skrypty w /tools/ są wywoływane na żądanie:

Google AdInline article slot
  • docker-status.sh, docker-logs.sh, docker-restart.sh
  • db-discover.sh, db-query.sh dla PostgreSQL
  • health-check.sh do monitoringu HTTP stron
  • system-stats.sh, security-check.sh

Agent przetwarza język naturalny: „logi serwisu auth” → docker-logs.sh auth-container.

Minimalne wymagania

  • Ubuntu 20.04+ lub Linux z Docker Compose V2 (docker compose version)
  • 2 GB RAM (agent ~300–500 MB)
  • Klucz API OpenRouter (openrouter.ai/keys) dla modeli GPT-4o, Claude
  • Token bota Telegram od @BotFather

Krok 1: Przygotowanie repozytorium

ssh user@your-server
git clone https://github.com/ShyDamn/openclaw-devops-kit.git /tmp/openclaw-setup
cd /tmp/openclaw-setup

Struktura:

openclaw-devops-kit/
├── docker-compose.yml
├── .env.example
├── deploy.sh
├── config/openclaw.json
├── workspace/SOUL.md, USER.md, HEARTBEAT.md
└── tools/ (14 skryptów: docker-*.sh, db-*.sh, health-check.sh i inne)

Krok 2: Bot Telegram i .env

  • @BotFather → /newbot → token 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  • @userinfobot → twój 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  # opcjonalnie

W config/openclaw.json:

Google AdInline article slot
"allowFrom": [
  "tg:778921250"
]

Krok 3: Konfiguracja kontekstu w workspace/

SOUL.md — rdzeń zachowania

Podaj kontenery PostgreSQL i projekty:

## Kontenery PostgreSQL: db1, db2, db3

| Ścieżka | Projekt | Stos |
|---------|---------|------|
| /projects/my-app/ | SaaS | Next.js + PostgreSQL |
| /projects/api/ | Backend | NestJS |

Reguły: odczyt bez potwierdzenia, edycje — z podwójną weryfikacją.

USER.md — twój profil

Strefa czasowa, stos technologii, kluczowe projekty.

Google AdInline article slot

HEARTBEAT.md — godzinowy checklist

Monitoring zasobów, status kontenerów, strony HTTP.

Krok 4: Monitoring stron

W tools/health-check.sh:

SITES=(
  "mysite.ru|mysite-frontend|mysite"
  "api.mysite.ru|mysite-api|mysite"
)

Format: domena|kontener|projekt. Przy 5xx/timeout — autorestart, powiadomienie przy niepowodzeniu.

Krok 5: Wdrożenie i uruchomienie

bash deploy.sh

Automatyka:

  • Sprawdzenie Docker Compose V2
  • Utworzenie /var/www/openclaw/
  • Ustawienie praw na .env (chmod 600)
  • Pobranie obrazu
  • Uruchomienie kontenera

Powiązanie Telegram:

cd /var/www/openclaw
docker compose run --rm --profile cli openclaw-cli pairing approve telegram <KOD>

Analiza kluczowych skryptów

docker-logs.sh

#!/bin/bash
CONTAINER="${1:?Usage: docker-logs.sh <container_name> [lines]}"
LINES="${2:-50}"
docker logs --tail "$LINES" "$CONTAINER" 2>&1

Automatyczne wykrycie kontenera z SOUL.md.

system-stats.sh

#!/bin/bash
echo "=== RAM ==="
free -h
echo ""
echo "=== DYSK ==="
df -h / | tail -1
# ... CPU, docker stats

Kompleksowy raport dla heartbeat.

db-discover.sh — wyszukiwanie baz

#!/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

Automatyczne znalezienie wszystkich PostgreSQL, wyciągnięcie POSTGRES_USER/POSTGRES_DB, lista tabel.

db-query.sh

Wykonywanie SQL z parametrami kontenera.

Co ważne

  • Kontekst w SOUL.md jest kluczowy: bez tabeli projektów i kontenerów agent dopytuje o szczegóły.
  • Whitelista w openclaw.json: dostęp tylko po ID Telegram, zapobiega wyciekom.
  • Health-check.sh z autorestartem: 5xx → restart → sprawdzenie → powiadomienie.
  • Licencja MIT: pełna kontrola nad skryptami i konfiguracjami.
  • OpenRouter: rotacja modeli (GPT-4o, Claude) przy awariach, jeden API.

— Editorial Team

Advertisement 728x90

Czytaj dalej