Поднимаем Clawdbot на Raspberry PI5

В конце 2025 в сети появился интересный репозиторий ClawdBot.

Clawdbot is a personal AI assistant you run on your own devices. It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, Microsoft Teams, WebChat), plus extension channels like BlueBubbles, Matrix, Zalo, and Zalo Personal. It can speak and listen on macOS/iOS/Android, and can render a live Canvas you control. The Gateway is just the control plane — the product is the assistant.

Персональный ИИ помощник, с возможностью локального развертывания, доступу ко всем системным ресурсам, и кучей расширений для доступа к сторонним сервисам. Выглядит как мечта — практически собственный локальный ИИ, с возможностью работы в чате Telegram. Хотя в мыслях сразу побежали надписи «проблемы с безопасностью», ведь это может быть подвержено и промпт-инъекция, как только есть подключения к сторонним API появляется рычаг для воздействия или как минимум утекания ключей. Любопытство не обошло меня стороной и решил поставим и поразбираться, как это работает, все ли там так красиво. На выходных была обнаружена незадействованная Raspberry PI 5 8GB, кружка вкусного кофе и желание покопаться в этой софтинке. В этом материале я опишу процесс установки и настройки.

Подготовка R PI5

Для чистоты эксперимента заливаю новый образ Raspberry OS 64bit на флешку с помощью утилиты Raspberry Pi Imager. Есть хорошая инструкция на официальном сайте проекта.

Я сразу активирую доступ по SSH чтобы работать через удаленное подключение.

И далее уже работаем непосредственно с консолью «малинки», для этого подойдет Putty, который качается с официального сайта. Я покажу, как выполнить установку через Docker, хотя есть и возможность прямого развертывания.

  1. Для начала обновим ОС
    sudo apt update && sudo apt full-upgrade -y
    sudo reboot
  2. Доставим дополнительные пакеты для удобства
    sudo apt install -y ca-certificates gnupg lsb-release htop iotop ncdu
  3. И проверим версию сборки, чтобы быть уверенными при дальнейших действиях
    uname -m
    В ответ должны увидеть aarch64
  4. Устанавливаем Docker. Сделаем это через официальный скрипт, чтобы сразу подтянулись все необходимые пакеты
    curl -fsSL https://get.docker.com | sudo sh
  5. После установки выполняем проверку
    docker --version
  6. Чтобы дальше не было мучений с командой sudo сразу добавим группу для docker
    sudo usermod -aG docker $USER
    newgrp docker

  7. И запускаем проверку, чтобы убедиться в корректности работы Docker. Если при запуске не возникло ошибок, то продолжаем.
    docker run hello-world
  8. Проверяем версию docker compose
    docker compose version

    Если оказалось, что он не установился, то доставляем командой
    sudo apt install -y docker-compose-plugin
  9. Для удобства работы добавляем автозапуск Docker
    sudo systemctl enable docker
    sudo systemctl start docker

  10. Не забываем проверить cgroup
    docker info | grep -i cgroup

    В ответ должно быть:
    Cgroup Driver: systemd
    Cgroup Version: 2

    Но вполне может быть и предупреждение:

    Это предупреждение говорит о том, что Docker не может ограничивать память и объем swap контейнеров. Для долгоживущих приложений лучше это исправить. Для этого необходимо внести дополнительные параметры в cmdline.txt. В этом файле все пишется в одну строку, переносы запрещены.
    sudo nano /boot/firmware/cmdline.txt
    Нужно справа в конец строки добавить новые параметры:
    cgroup_enable=memory cgroup_memory=1 swapaccount=1
    Чтобы закрыть nano используем комбинацию Ctrl+X -> Y.
    И после этого перезагружаемся:
    sudo reboot

    После перезапуска повторяем проверку
    sudo docker info|grep -i memory
    Для малинки с 8Гб ОЗУ на борту отображается Total Memory: 7.87 GiB
  11. Проверяем работоспособность и производительность:
    docker run --rm -it alpine uname -a
    Если быстро загружается и запускается, то все в порядке.

Разбираемся с репозиторием ClawdBot

  1. Создаем структуру папок под весь проект
    mkdir -p ~/docker/{clawdbot,monitoring,db}
  2. Скачиваем из git официальный репозиторий
    cd ~/docker/clawdbot
    git clone https://github.com/clawdbot/clawdbot.git .


    Если пройтись по репозиторию, то видно, что уже есть файлы Dockerfile, docker-compose.yml, docker-setup.sh, то есть проект уже изначально рассчитан на развертывание в контейнере.
    Поскольку проект предполагает работу с API, то необходимо создание .env файла.
    Далее есть два пути, один из которых это воспользоваться предзаготовленным скриптом docker-setup.sh, где прописана сборка образа, запуск онбординга и запись токенов в .env файл. Второй путь это собрать и запустить вручную. Ради любопытства я пойду ручным путем.
  3. Создадим директории под конфигурационные и рабочие файлы
    mkdir -p ~/docker/clawdbot/{config,workspace}
  4. Создаем .env файл в папке ~/docker/clawbot
    nano .env
    ——————
  5. Перед сборкой образа нужно немного скорректировать .dockerignore. Открываем его в редакторе и ссылки
    apps/
    vendors/

    заменяем на
    !apps/shared/
    !apps/shared/ClawdbotKit/
    !apps/shared/ClawdbotKit/Tools/CanvasA2UI/**
    !vendor/a2ui/
    !vendor/a2ui/renderers/lit/**

  6. Собираем образ
    docker build -t clawdbot:local .
    или пересобираем образ, если уже пробовали
    docker build --no-cache -t clawdbot:local .
  7. В мое случае при сборке начали появляться проблемные расширения, причем одинаковые и при запуске docker-setup.sh. Ошибка при этом возникает на команде RUN pnpm ui:install.
    Для решения этой проблемы я добавил папку с пакетами и исключил проблемное расширение memory-core.
    Версия pnpm-workspace.yaml после редактирования:

    После чего успешно завершается пересборка образа.
  8. Запускаем онбординг и настраиваем все необходимые ключи
    docker compose run --rm clawdbot-cli onboard
    В моем случае я добавил ключ для OpenAI API и Telegram.
    В конце нас ждет сообщение
  9. Запускаем шлюз
    docker compose up -d clawdbot-gateway
  10. Проверяем что все работает
    docker compose ps

    docker compose logs -f clawdbot-gateway

    Также можно проверить статус командами
    docker compose run --rm clawdbot-cli status --all
    docker compose run --rm clawdbot-cli health
  11. И мы готовы открыть web-приложение. Можно сделать шлюз через tailscale, либо биндинг на локальный порт. Поскольку у меня это в локальной сети, то буду получать с хоста по в таком формате:
    http://127.0.0.1:18789/