Clawdbot в связке с Docker и Ollama — это селф-хостинг AI-агент, который крутит локальные языковые модели на вашем VPS без единого запроса к OpenAI API. OpenClaw отвечает за логику агента, Docker изолирует окружение, Ollama запускает инференс локально.
Зафиксированные зависимости, воспроизводимое поведение, перезапуск за две секунды. У OpenClaw в 2026 году была advisory по command injection (GHSA-mc68-q9jw-2h3v) — пиньте версии, не используйте latest.
Ollama запускает LLaMA, Mistral, Qwen и Phi локально. Предоставляет нативный эндпоинт /api/chat (нужен для tool calling) и OpenAI-совместимый /v1. Используйте /api/chat.
Селф-хостинг меняет помегабайтные API-счета на фиксированную стоимость железа. Данные остаются на вашем сервере — это важно при работе под GDPR или HIPAA. Компромисс: локальные модели — это не GPT-4, но qwen2.5-coder:32b или gpt-oss:20b справляются с большинством агентных циклов.
Что нужно для запуска Clawdbot с Docker и Ollama:
OpenClaw требует контекстное окно 64k, что примерно удваивает потребление памяти по сравнению с дефолтным 4k.
|
Уровень |
vCPU |
RAM |
Диск |
Вместимость моделей |
VPS от is*hosting |
|
Минимум |
4 |
16 ГБ |
80 ГБ SSD |
7B Q4, короткий контекст |
|
|
Рекомендуемая |
6 |
24-32 ГБ |
120 ГБ NVMe |
8B-14B Q4 при 64k контексте |
|
|
Тяжелая (CPU) |
8 |
64 ГБ |
200 ГБ NVMe |
32B Q4 или 70B Q4 с offload |
Exclusive VPS + апгрейд RAM и диска |
|
GPU |
8 vCPU + 24 ГБ VRAM |
32 ГБ |
200 ГБ NVMe |
14B-32B на полной скорости |
is*hosting GPU сервер |
|
Тяжелая GPU |
8 vCPU + 48 ГБ VRAM |
64 ГБ |
400 ГБ NVMe |
70B Q4 (~40 ГБ VRAM на веса) |
GPU сервер (top tier) |
70B Q4 требует ~40 ГБ VRAM только на веса. 16 ГБ карта — OOM.
Выделенные ресурсы и изоляция KVM для глобальных экспериментов.
Не используйте apt install docker.io — берите из официального репозитория:
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
OpenClaw игнорирует переменную LLM_PROVIDER. Конфиг живет в ~/.openclaw/openclaw.json.
services:
clawdbot:
image: openclaw/openclaw:0.17
container_name: clawdbot
restart: unless-stopped
environment:
OLLAMA_API_KEY: "ollama-local"
volumes:
- ./data:/home/openclaw/.openclaw
- ./openclaw.json:/home/openclaw/.openclaw/openclaw.json:ro
- ./logs:/home/openclaw/.openclaw/logs
ports:
- "127.0.0.1:8080:8080"
{
"agents": {
"defaults": { "model": { "primary": "ollama/llama3.1:8b" } }
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://ollama:11434",
"apiKey": "ollama-local",
"api": "ollama",
"models": [
{
"id": "llama3.1:8b",
"name": "LLaMA 3.1 8B",
"contextWindow": 65536,
"maxTokens": 8192,
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
}
]
}
}
}
}
Две ошибки, которые убивают сетап сразу:
Примечание: этот systemd-способ описывает установку Ollama на хост. Если вы сразу идете к полному docker-compose.yml из шага 4, пропустите этот шаг — там Ollama работает как контейнер.
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl edit ollama
Добавьте переменные окружения:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_NUM_PARALLEL=2"
Environment="OLLAMA_KEEP_ALIVE=30m"
Перезапустите и скачайте модель:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama pull llama3.1:8b
OpenClaw требует модели с поддержкой tool calling. Проверьте совместимость перед тем, как ставить:
ollama show qwen2.5-coder:7b --modelfile | grep -i tool
|
Модель |
Размер файла (Q4) |
RAM при 64k контексте |
Примечания |
|
Mistral 7B |
4.1 ГБ |
~10 ГБ |
Слабый tool calling |
|
LLaMA 3.1 8B |
4.7 ГБ |
~12 ГБ |
Стабильный tool calling |
|
Qwen2.5-Coder 7B |
4.4 ГБ |
~11 ГБ |
Выбор OpenClaw для кодинга |
|
gpt-oss 20B |
12 ГБ |
~20 ГБ |
Рекомендуемый дефолт OpenClaw |
Используйте "api": "ollama". Нативный эндпоинт /api/chat поддерживает tools и streaming; /v1 — нет. Не добавляйте /v1 в baseUrl. Явно укажите contextWindow: 65536.
localhost внутри контейнера в bridge-сети указывает на сам контейнер, а не на хост. http://localhost:11434 не сработает.
Решение: запустите Ollama как контейнер в той же Compose-сети и подключайтесь через http://ollama:11434.
Nginx не стартует без сертификатов; Certbot'у нужен открытый порт 80. Поэтому сначала поднимаем HTTP-конфиг, потом переключаемся на SSL.
Создайте nginx/conf.d/clawdbot.conf:
server {
listen 80;
server_name your-domain.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
proxy_pass http://clawdbot:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
Запустите Nginx, затем получите сертификат:
sudo apt install -y certbot
sudo mkdir -p /var/www/certbot
sudo certbot certonly --webroot -w /var/www/certbot -d your-domain.com --agree-tos -m you@your-domain.com --non-interactive
Примечание: /var/www/certbot на хосте монтируется в контейнер Nginx через volume из docker-compose.yml. Сначала запускаете Nginx с HTTP-конфигом, получаете сертификат, потом переключаетесь на SSL-конфиг и перезагружаете.
Замените конфиг на SSL-версию:
server {
listen 80;
server_name your-domain.com;
location /.well-known/acme-challenge/ { root /var/www/certbot; }
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://clawdbot:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
Перезагрузите Nginx:
docker compose exec nginx nginx -s reload
services:
clawdbot:
image: openclaw/openclaw:0.17
container_name: clawdbot
restart: unless-stopped
environment:
OLLAMA_API_KEY: "ollama-local"
volumes:
- ./data:/home/openclaw/.openclaw
- ./openclaw.json:/home/openclaw/.openclaw/openclaw.json:ro
- ./logs:/home/openclaw/.openclaw/logs
depends_on:
ollama:
condition: service_healthy
ollama-bootstrap:
condition: service_completed_successfully
networks:
- agentnet
deploy:
resources:
limits:
memory: 2g
ollama:
image: ollama/ollama:0.5.4
container_name: ollama
restart: unless-stopped
environment:
OLLAMA_KEEP_ALIVE: "30m"
OLLAMA_NUM_PARALLEL: "2"
volumes:
- ollama_models:/root/.ollama
healthcheck:
test: ["CMD-SHELL", "ollama list >/dev/null 2>&1 || exit 1"]
interval: 10s
timeout: 5s
retries: 12
start_period: 60s
networks:
- agentnet
deploy:
resources:
limits:
memory: 14g
ollama-bootstrap:
image: ollama/ollama:0.5.4
depends_on:
ollama:
condition: service_healthy
entrypoint: ["/bin/sh", "-c"]
command: ["OLLAMA_HOST=http://ollama:11434 ollama pull llama3.1:8b"]
networks:
- agentnet
restart: "no"
nginx:
image: nginx:1.27-alpine
container_name: nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- /etc/letsencrypt:/etc/letsencrypt:ro
- /var/www/certbot:/var/www/certbot:ro
depends_on:
- clawdbot
networks:
- agentnet
networks:
agentnet:
driver: bridge
volumes:
ollama_models:
docker compose up -d
docker compose exec clawdbot wget -qO- http://ollama:11434/api/tags
ss -ltnp | grep -E '8080|11434|80|443'
Арендуете VPS с 16–32 ГБ RAM, ставите Docker, поднимаете Ollama и OpenClaw в общей Compose-сети, проксируете через Nginx с HTTPS. Используете нативный /api/chat, контекстное окно — 64k или выше.
Рекомендуемая конфигурация соответствует тарифу VPS Exclusive от is*hosting: достаточно RAM для 8B–14B модели при полном 64k-контексте. Для моделей 32B+ — Exclusive с апгрейдом RAM или GPU-сервер.