# Как запустить AstrBot на Android без ПК: пошаговая установка через PRoot, NapCat и WebUI

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-zapustit-astrbot-na-android-bez-pk-poshagovaya-usta.html

## TL;DR
- Время выполнения: 60–90 минут (без учёта скачивания rootfs и пакетов; скорость зависит от канала)
- Уровень сложности: Intermediate
- Понадобится: Android-смартфон (свободно ≥ 8 ГБ), Termux из F-Droid, `proot-distro`, Ubuntu rootfs, Python 3 + `venv`, `git`, AstrBot, NapCat, аккаунт QQ, API-ключ LLM-провайдера (OpenAI-совместимый эндпоинт)

Схема, которую собираем: **Termux → PRoot (Ubuntu) → AstrBot (мозг + WebUI) ← WebSocket → NapCat (мост к QQ) → QQ-аккаунт**.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-zapustit-astrbot-na-android-bez-pk-poshagovaya-usta-ru-1.jpg?v=1793133910)


- **Android 8+** и ≥ 8 ГБ свободного места (Ubuntu rootfs + Python-зависимости + Node.js для NapCat). Точную минимальную версию ОС сверьтесь с документацией Termux.
- **Termux установлен из F-Droid**, не из Google Play: play-версия устарела и не получает обновления пакетов. Это первое, что ломает установку у новичков.
- **Отключённая оптимизация батареи** для Termux (Настройки → Приложения → Termux → Батарея → «Без ограничений»). Иначе Android убивает процесс, как только экран гаснет, и бот «умирает» молча.
- **Аккаунт QQ**, который будет работать как бот. Логин в NapCat — по QR-коду со смартфона, поэтому держите под рукой приложение QQ.
- **API-ключ LLM** (OpenAI-совместимый: `base_url` + `api_key` + имя модели). Без него AstrBot запустится, но отвечать не будет.
- Базовое понимание, что такое PRoot: это запуск Linux-окружения в userspace Android **без root** — ядро общее, права обычные. Подробнее — в гайде [Как запустить Linux на Android без root: Termux, PRoot и ИИ-инструменты](https://ai-release.org/guides/kak-zapustit-linux-na-android-bez-root-termux-proot-i-i.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**Пример:** на практике последовательность выглядит так — `pkg install proot-distro` → `proot-distro install ubuntu` → `proot-distro login ubuntu` → и вы уже в приглашении `root@localhost:~#`, где работают обычные `apt` и `pip`.

Чек-лист перед стартом:

- [ ] Termux из F-Droid, `pkg update` проходит без ошибок
- [ ] Отключена оптимизация батареи
- [ ] Свободно ≥ 8 ГБ
- [ ] Есть аккаунт QQ и приложение QQ на телефоне
- [ ] Есть `base_url`, `api_key` и имя модели у LLM-провайдера

## Шаг 1. Termux и PRoot: готовим Linux-окружение

**Что сделать:** обновить Termux, поставить `proot-distro`, установить Ubuntu и войти в него.

**Зачем:** AstrBot и NapCat — обычные Linux-приложения с зависимостями (Python, Node.js, библиотеки сборки). В родном Termux они конфликтуют с системными пакетами; отдельный rootfs даёт чистую среду, которую можно снести одной командой.

```bash
pkg update && pkg upgrade -y
pkg install -y proot-distro git
proot-distro install ubuntu
proot-distro login ubuntu
```

**Пример:** после `proot-distro install ubuntu` в консоли идёт скачивание rootfs и строка вида `Installing Ubuntu...`; после `login` приглашение меняется на `root@localhost:~#` — это признак, что вы внутри Ubuntu, а не в Termux.

**Как проверить:** внутри Ubuntu выполните

```bash
cat /etc/os-release | head -n 2
```

Ожидаемый вывод — две строки с `NAME="Ubuntu"` и `VERSION=...`. Если видите `Termux` или `Android` — вы всё ещё снаружи, повторите `proot-distro login ubuntu`.

Дальше поставьте базовый набор (внутри Ubuntu, не в Termux):

```bash
apt update && apt upgrade -y
apt install -y python3 python3-pip python3-venv git curl nano
python3 --version
```

`python3 --version` печатает версию вида `Python 3.x.y` — номер сверьте с требованиями AstrBot в его документации, слишком старый Python ломает установку зависимостей.

**Почему это работает:** PRoot подменяет корень файловой системы (`chroot`-подобно) через `ptrace`, поэтому `apt` считает, что работает на обычном Ubuntu, хотя ядро — андроидное.

## Шаг 2. Установка AstrBot и NapCat
![Иллюстрация к разделу «Шаг 2. Установка AstrBot и NapCat»](https://ai-release.org/guides/img/kak-zapustit-astrbot-na-android-bez-pk-poshagovaya-usta-ru-2.jpg?v=1793133918)


Два компонента ставятся в одном и том же Ubuntu-окружении.

**Что сделать (2A — AstrBot):** клонировать репозиторий, создать виртуальное окружение, поставить зависимости, запустить.

**Зачем:** `venv` (виртуальное окружение Python — изолированная папка с пакетами) защищает от конфликта версий библиотек между AstrBot и системным Python.

```bash
cd ~
git clone https://github.com/AstrBotDevs/AstrBot.git
cd AstrBot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 main.py
```

**Пример:** при первом старте AstrBot создаёт папку `data/` с конфигами и печатает в лог адрес WebUI. Порт по умолчанию — **сверьтесь с логом и документацией** (в разных сборках он может отличаться); в логе будет строка вида `http://0.0.0.0:<порт>`.

**Как проверить:** не закрывая Termux, откройте браузер на том же телефоне и зайдите на `http://127.0.0.1:<порт-из-лога>`. Откроется страница входа в WebUI. `127.0.0.1` работает потому, что PRoot использует сетевое пространство Android — веб-сервер внутри Ubuntu виден браузеру телефона как локальный. Логин/пароль по умолчанию указаны в документации AstrBot — смените их сразу после входа.

**Что сделать (2B — NapCat):** поставить Node.js и NapCat в том же Ubuntu, затем авторизовать QQ-аккаунт по QR.

```bash
apt install -y nodejs npm
node --version
git clone https://github.com/NapNeko/NapCatQQ.git
cd NapCatQQ
npm install
```

**Зачем:** NapCat — это реализация QQ-протокола на Node.js: он подключается к серверам QQ и транслирует сообщения в WebSocket, который слушает AstrBot.

**Пример:** запуск идёт скриптом из репозитория; точное имя файла запуска и флаги **сверьтесь с README NapCat на момент установки** — они меняются между релизами. При первом запуске в консоли печатается QR-код (ASCII-графика). Сканируете его приложением QQ: Настройки → сканер QR. Для headless-режима без графики может потребоваться виртуальный дисплей — сверьтесь с документацией.

**Как проверить:** после сканирования в логе появляется сообщение об успешном входе и строка с портом WebUI NapCat (по умолчанию часто указывают **6099 — сверьтесь с логом**). Откройте `http://127.0.0.1:<порт>` в браузере телефона — увидите панель NapCat с информацией об аккаунте.

Связка компонентов:

| Компонент | Роль | Что делать с портом |
|---|---|---|
| AstrBot WebUI | панель настройки | открыть `http://127.0.0.1:<порт>` |
| AstrBot WS-сервер (aiocqhttp) | принимает сообщения от NapCat | указать в NapCat |
| NapCat | мост к QQ | указать `ws://127.0.0.1:<порт-сервера>` |

Точные номера портов **сверьтесь с WebUI и документацией** — в инструкции они намеренно даны как плейсхолдеры.

## Шаг 3. Связка NapCat ↔ AstrBot и проверка ответа
![Иллюстрация к разделу «Шаг 3. Связка NapCat ↔ AstrBot и проверка ответа»](https://ai-release.org/guides/img/kak-zapustit-astrbot-na-android-bez-pk-poshagovaya-usta-ru-3.jpg?v=1793133926)


**Что сделать:** в WebUI AstrBot добавить платформу QQ (адаптер `aiocqhttp`) и указать хост/порт/токен, затем в NapCat прописать тот же адрес WebSocket.

**Зачем:** пока компоненты не соединены, AstrBot не получает ни одного сообщения — в панели всё выглядит рабочим, но бот молчит.

**Пример конфигурации (значения — плейсхолдеры):**

```json
{
  "platform": "aiocqhttp",
  "ws_host": "127.0.0.1",
  "ws_port": 6199,
  "ws_token": "замените-на-длинную-случайную-строку"
}
```

Фрагмент иллюстративный: точные имена ключей и структуру файла конфига **сверьтесь с документацией вашей версии AstrBot** — проще заполнять те же поля через форму в WebUI, там они подписаны.

**Как проверить:**
1. В WebUI AstrBot статус платформы QQ должен смениться на «подключено/online» — сверьтесь с индикатором в интерфейсе.
2. В логах NapCat появляется строка об успешном подключении к WebSocket-серверу.
3. Отправьте с другого QQ-аккаунта сообщение боту: `привет`. Приходит ответ от LLM — значит, цепочка `QQ → NapCat → AstrBot → LLM → AstrBot → NapCat → QQ` работает.

**Почему это работает:** AstrBot выступает WebSocket-сервером, NapCat — клиентом. Оба в одном сетевом пространстве Android, поэтому `127.0.0.1` соединяет их без проброса портов и без внешнего IP.

Если нужен локальный LLM вместо облачного — варианты запуска на самом телефоне разобраны в гайде [Как запустить ИИ-модель локально на Android: приложения и настройка](https://ai-release.org/guides/kak-zapustit-ii-model-lokalno-na-android-prilozheniya-i.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Возможные проблемы и решения

**Проблема. `apt install` не находит пакеты**

- Ошибка: `E: Unable to locate package python3`
- Причина: внутри свежего rootfs не выполнен `apt update`, либо обновлялся список в другом окружении (например, в Termux, а не в Ubuntu).
- Решение: проверьте, что приглашение `root@localhost` (Ubuntu), затем выполните
```bash
apt update
apt install -y python3 python3-pip python3-venv
```

**Проблема. AstrBot падает при старте с жалобой на отсутствующий модуль**

- Ошибка: `ModuleNotFoundError: No module named 'aiocqhttp'` (или другое имя модуля)
- Причина: `pip install -r requirements.txt` выполнен вне `venv` либо запуск идёт системным `python3`, а не интерпретатором из окружения — пакеты поставились «не туда».
- Решение: переустановите в активированном окружении и проверьте, что путь ведёт в `venv`:
```bash
cd ~/AstrBot
source venv/bin/activate
pip install -r requirements.txt
which python3
python3 main.py
```
`which python3` должен вывести путь, содержащий `/AstrBot/venv/bin/python3`.

**Проблема. NapCat не подключается к AstrBot**

- Ошибка: `Connection refused` или `websockets.exceptions.InvalidStatusCode: HTTP 403`
- Причина: неверный порт (`Connection refused`) или несовпадающий `ws_token` (`403`).
- Решение: сверьте порт и токен в двух местах — в WebUI AstrBot (платформа `aiocqhttp`) и в конфиге NapCat. Затем перезапустите NapCat и посмотрите лог:
```bash
grep -i websocket ~/NapCatQQ/*.log
```
В строке подключения должны совпадать `host`, `port` и токен.

## Резюме и следующие шаги

Вы получили автономный стек на телефоне: Ubuntu в PRoot, AstrBot с WebUI и NapCat, подключённый к QQ-аккаунту. Дальше имеет смысл настроить системный промпт и набор плагинов в WebUI AstrBot, а также проверить, что бот выживает при выключенном экране (Настройки → Батарея).

## FAQ

**Нужен ли root на Android?**
Нет. PRoot работает в userspace обычного пользователя, root-права не требуются.

**Можно ли обойтись без ПК?**
Да, вся установка выполняется в Termux и браузере на самом телефоне. ПК нужен только если вы хотите отлаживать код через IDE.

**Будет ли бот работать при заблокированном экране?**
Только если отключена оптимизация батареи для Termux. Иначе Android выгружает процесс, и соединение с QQ обрывается — симптом: бот перестаёт отвечать через несколько минут после блокировки.

**Что делать, если QQ-аккаунт заблокировали за автоматизацию?**
Используйте отдельный аккаунт для бота и не рассылайте массовые сообщения. Точные правила и ограничения — сверьтесь с документацией NapCat и условиями QQ; гарантий обхода блокировок не существует.
