Устанавливаем и запускаем zeroclaw в ubuntu 24.04 или lxc контейнере без покупки отдельного компьютера
Установка и настройка Zeroclaw в LXC-контейнере
Полное руководство по развёртыванию Zeroclaw 0.1.7 в изолированном LXC-контейнере с Telegram-ботом, безопасными настройками и прокси-поддержкой.
Оглавление
1. Требования
2. Создание LXC-контейнера
3. Настройка контейнера для Ubuntu 24
4. Установка зависимостей
5. Установка Zeroclaw
6. Конфигурация (TOML)
7. Настройка Telegram-бота
8. Безопасность и ограничения
9. Настройка прокси
10. Установка systemd-сервиса
11. Проверка и тестирование
12. Устранение неполадок
13. Шпаргалка по командам
Требования
| Компонент | Версия / Значение |
|---|---|
| Хост-система | Ubuntu 20.04+ с LXC |
| Контейнер | Ubuntu 24.04 (Noble) |
| Zeroclaw | v0.1.7-beta.30+ |
| Node.js | 18+ (если требуется сборка) |
| Сеть | Доступ к интернету, прокси (опционально) |
Создание LXC-контейнера
1.1. Создайте контейнер на хосте:
|
1 2 3 4 |
sudo lxc-create -t download -n bulxc_zero_online -- \ --dist ubuntu \ --release noble \ --arch amd64 |
1.2. Настройте AppArmor и nesting (критично для systemd и браузера):
|
1 |
sudo nano /var/lib/lxc/bulxc_zero_online/config |
Добавьте в конец файла:
|
1 2 3 4 5 6 7 8 9 10 11 |
# Отключаем AppArmor для поддержки нового systemd lxc.apparmor.profile = unconfined lxc.apparmor.allow_nesting = 1 # Разрешаем все устройства (для systemd) lxc.cap.drop = lxc.cgroup.devices.allow = a lxc.cgroup2.devices.allow = a # Явный init lxc.init.cmd = /sbin/init |
1.3. Запустите контейнер и подключитесь:
|
1 2 3 4 5 6 7 8 |
# Запуск sudo lxc-start -n bulxc_zero_online -d # Ожидание загрузки (systemd в Ubuntu 24 загружается ~10 сек) sleep 10 # Подключение к консоли sudo lxc-attach -n bulxc_zero_online |
Установка зависимостей
Внутри контейнера выполните:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Обновление пакетов apt update && apt upgrade -y # Базовые утилиты apt install -y curl git wget ca-certificates mc # Node.js 20 LTS (если потребуется) curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install -y nodejs # Проверка node -v # v20.x npm -v |
Установка Zeroclaw
3.1. Скачайте бинарник:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mkdir -p /opt/zeroclaw cd /opt/zeroclaw # Скачивание последней версии (проверьте актуальную на GitHub) wget https://github.com/zeroclaw-labs/zeroclaw/releases/download/v0.1.7-beta.30/zeroclaw-x86_64-unknown-linux-gnu.tar.gz # Распаковка tar xzf zeroclaw-x86_64-unknown-linux-gnu.tar.gz # Перемещение бинарника mv zeroclaw-x86_64-unknown-linux-gnu/zeroclaw /opt/zeroclaw/ chmod +x /opt/zeroclaw/zeroclaw # Проверка версии ./zeroclaw --version # Ожидаемый вывод: zeroclaw 0.1.7 |
3.2. Создайте директорию для конфигурации:
|
1 |
mkdir -p /root/.zeroclaw |
⚙️ Конфигурация (TOML)
Создайте файл конфигурации:
|
1 |
mcedit /root/.zeroclaw/config.toml |
Полный пример config.toml:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# ============================================================================= # ZEROSCLAW CONFIGURATION (TOML) # ============================================================================= [meta] version = "0.1.7" lastTouchedAt = "2026-03-14T00:00:00Z" # ----------------------------------------------------------------------------- # AI Provider (OpenRouter) # ----------------------------------------------------------------------------- [ai] provider = "openrouter" api_key = "sk-or-ВАШ_КЛЮЧ" default_model = "openrouter/free" # Альтернатива: "meta-llama/llama-3-8b-instruct:free" # ----------------------------------------------------------------------------- # Telegram Channel # ----------------------------------------------------------------------------- [channels.telegram] bot_token = "ВАШ_ТОКЕН_ОТ_BOTFATHER" enabled = true dm_policy = "pairing" group_policy = "allowlist" # Настройки для конкретной группы [channels.telegram.groups."-1002381931352"] require_mention = true # Реагировать только на @упоминания allow_commands = false # Запрет команд в группе allow_tools = false # Запрет инструментов в группе # ----------------------------------------------------------------------------- # Autonomy & Filesystem Security # ----------------------------------------------------------------------------- [autonomy] level = "readonly" # Только чтение файлов workspace = "/root/.zeroclaw/workspace" # ----------------------------------------------------------------------------- # Browser Settings (LXC-compatible) # ----------------------------------------------------------------------------- [browser] enabled = true headless = true no_sandbox = true # ⚠️ Критично для LXC! # ----------------------------------------------------------------------------- # Gateway (Web UI & API) # ----------------------------------------------------------------------------- [gateway] port = 3001 mode = "local" bind = "127.0.0.1" # Только localhost (безопасно) [gateway.auth] mode = "token" token = "ВАШ_СЕКРЕТНЫЙ_ТОКЕН" # ----------------------------------------------------------------------------- # Proxy Settings (опционально) # ----------------------------------------------------------------------------- [proxy] all_proxy = "socks5://192.168.0.32:20170" scope = "services" # "environment" | "zeroclaw" | "services" services = ["channel.telegram"] # Применять только к Telegram # ----------------------------------------------------------------------------- # Logging # ----------------------------------------------------------------------------- [logging] enabled = true level = "info" # "debug" для отладки |
Важно: Установите строгие права на конфиг, если содержит секреты:
1 chmod 600 /root/.zeroclaw/config.toml
Настройка Telegram-бота
4.1. Создание бота через @BotFather:
- Откройте Telegram → @BotFather
- Команда
/newbot - Введите имя бота (отображаемое)
- Введите username (должен заканчиваться на
bot) - Скопируйте выданный API Token
- Вставьте токен в конфиг:
bot_token = "..."
4.2. Добавление бота в группу:
- Найдите бота по username в Telegram
- Добавьте его в группу
-1002381931123как участника - (Рекомендуется) Назначьте администратором для чтения всех сообщений
- Проверка: Отправьте
@ВашБот привет— бот должен ответить
4.3. Интерактивная настройка (альтернатива ручному редактированию):
|
1 2 |
cd /opt/zeroclaw ./zeroclaw onboard --interactive |
Рекомендуемые ответы в мастере:
| Вопрос | Ответ |
|---|---|
| Bot platform | Telegram |
| Bot token | ВАШ_ТОКЕН |
| Enable group chats | Yes |
| Group policy | allowlist |
| Group ID | -1002381931123 |
| Require mention | Yes |
| Allow commands in groups | No ⚠️ |
| Allow tools in groups | No ⚠️ |
| AI Provider | OpenRouter |
| API Key | ВАШ_КЛЮЧ |
| Default model | openrouter/free |
| Enable browser | Yes |
| Use sandbox | No ⚠️ (для LXC) |
Безопасность и ограничения
Матрица прав доступа:
| Канал | Чтение файлов | Запись файлов | Команды | Инструменты |
|---|---|---|---|---|
| ЛС (вы) | ||||
Группа -100... |
readonly |
allow_commands: false |
allow_tools: false |
Дополнительные меры:
|
1 2 3 4 5 6 7 8 9 |
# Запрет shell-команд на уровне exec [tools.exec] security = "allowlist" allowed_commands = [] # Пустой список = полный запрет # Ограничение путей для чтения (опционально) [autonomy] level = "readonly" allowed_paths = ["/root/.zeroclaw/workspace"] |
Настройка прокси
5.1. Параметры [proxy]:
|
1 2 3 4 |
[proxy] all_proxy = "socks5://192.168.0.32:20170" scope = "services" services = ["channel.telegram"] |
| Параметр | Значения | Описание |
|---|---|---|
all_proxy |
socks5://, http://, https:// |
Адрес прокси-сервера |
scope |
environment, zeroclaw, services |
Область применения |
services |
["channel.telegram"], ["*"] |
Список сервисов для прокси |
5.2. Доступные имена сервисов:
| Сервис | Значение |
|---|---|
| Telegram | "channel.telegram" |
| Gateway | "gateway" |
| AI-провайдер | "ai.openrouter" |
| Браузер | "browser" |
| Все сервисы | "*" |
5.3. Прокси с авторизацией:
|
1 2 3 4 |
[proxy] scope = "services" services = ["channel.telegram"] |
⚙️ Установка systemd-сервиса
6.1. Генерация сервиса через zeroclaw:
|
1 2 |
cd /opt/zeroclaw ./zeroclaw service install |
6.2. Перемещение в system scope:
|
1 2 3 4 5 |
# Копирование из user в system cp /root/.config/systemd/user/zeroclaw.service /etc/systemd/system/ # Перезагрузка systemd systemctl daemon-reload |
6.3. Проверка и правка сервиса (опционально):
|
1 |
mcedit /etc/systemd/system/zeroclaw.service |
Убедитесь, что ExecStart запускает daemon:
|
1 2 3 4 5 6 7 8 9 |
[Service] Type=simple User=root WorkingDirectory=/opt/zeroclaw ExecStart=/opt/zeroclaw/zeroclaw daemon Restart=on-failure RestartSec=5 # Для работы браузера в LXC: Environment=CHROMIUM_FLAGS="--no-sandbox --disable-setuid-sandbox" |
6.4. Активация и запуск:
|
1 2 3 |
systemctl enable zeroclaw systemctl start zeroclaw systemctl status zeroclaw |
6.5. Просмотр логов:
|
1 |
journalctl -u zeroclaw -f |
Проверка и тестирование
7.1. Быстрые проверки:
|
1 2 3 4 5 6 7 8 |
# Статус сервиса systemctl status zeroclaw # Проверка порта 3001 ss -tlnp | grep 3001 # Тест подключения к Telegram API (если используется прокси) curl --proxy socks5://192.168.0.32:20170 https://api.telegram.org/botВАШ_ТОКЕН/getMe |
7.2. Тесты в Telegram:
| Тест | Ожидаемый результат |
|---|---|
ЛС: "привет" |
Бот отвечает |
ЛС: "прочитай /etc/passwd" |
Читает (если есть доступ) |
ЛС: "запиши в test.txt" |
Отказ (readonly) |
Группа: "привет" |
Игнорирует (нет @упоминания) |
Группа: "@бот привет" |
Ответ текстом |
Группа: "@бот выполни код" |
Отказ (allow_tools: false) |
7.3. Проверка логов на ошибки:
|
1 |
journalctl -u zeroclaw -n 100 --no-pager | grep -iE "error|fail|denied" |
️ Устранение неполадок
| Проблема | Возможная причина | Решение |
|---|---|---|
| Бот не подключается | Неверный токен / нет сети / прокси | Проверьте bot_token, ping api.telegram.org, настройки прокси |
Permission denied |
Нет прав на бинарник | chmod +x /opt/zeroclaw/zeroclaw |
libssl.so not found |
Не хватает библиотек | apt install -y libssl3 libcurl4 |
| Браузер не запускается | Песочница в LXC | Убедитесь: no_sandbox = true + Environment=CHROMIUM_FLAGS="--no-sandbox" |
| systemd не видит сервис | Файл в wrong location | Скопируйте в /etc/systemd/system/ + daemon-reload |
| Конфиг не читается | Ошибка синтаксиса TOML | Проверьте через python3 -c "import toml; toml.load('/root/.zeroclaw/config.toml')" |
| Прокси не работает | Недоступен хост / авторизация | nc -zv 192.168.0.32 20170, проверьте логин:пароль в URL |
Пересоздание сервиса:
|
1 2 3 4 5 |
./zeroclaw service uninstall ./zeroclaw service install cp /root/.config/systemd/user/zeroclaw.service /etc/systemd/system/ systemctl daemon-reload systemctl restart zeroclaw |
Шпаргалка по командам
Управление zeroclaw:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Версия ./zeroclaw --version # Интерактивная настройка ./zeroclaw onboard --interactive # Запуск только шлюза (веб-интерфейс) ./zeroclaw gateway # Запуск бота + шлюза (всё вместе) ./zeroclaw daemon # Запуск с указанием конфига ./zeroclaw --config /root/.zeroclaw/config.toml # Установка systemd-сервиса ./zeroclaw service install # Удаление сервиса ./zeroclaw service uninstall |
Управление systemd:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Статус / старт / стоп / рестарт systemctl status zeroclaw systemctl start zeroclaw systemctl stop zeroclaw systemctl restart zeroclaw # Включение/выключение автозапуска systemctl enable zeroclaw systemctl disable zeroclaw # Логи в реальном времени journalctl -u zeroclaw -f # Последние 50 строк логов journalctl -u zeroclaw -n 50 --no-pager |
Управление контейнером (на хосте):
|
1 2 3 4 5 6 7 8 9 10 |
# Старт / стоп / перезагрузка sudo lxc-start -n bulxc_zero_online sudo lxc-stop -n bulxc_zero_online sudo lxc-reboot -n bulxc_zero_online # Подключение к консоли sudo lxc-attach -n bulxc_zero_online # Бэкап контейнера (Proxmox) sudo pct backup bulxc_zero_online |
Итоговый чеклист
- Контейнер создан с
nesting=1иapparmor.profile=unconfined - Zeroclaw скачан и имеет права на выполнение
- Конфиг
/root/.zeroclaw/config.tomlсоздан и валиден - Указаны:
bot_token,api_key,group_id - Безопасность:
autonomy.level = "readonly",allow_commands = false - Браузер:
no_sandbox = true(для LXC) - Прокси: настроен при необходимости
- systemd-сервис установлен и активирован
- Бот отвечает в ЛС и в группе (только на @упоминания)
- Логи чистые, ошибок нет
Полезные ссылки
Совет: Регулярно делайте бэкап конфига:
1 cp /root/.zeroclaw/config.toml /root/.zeroclaw/config.toml.backup.$(date +%Y%m%d)
Удачи с запуском! Если возникнут вопросы — обращайтесь.