Есть особый кайф в том, чтобы превратить старый смартфон в карманного помощника: вы пишете ему в WhatsApp, а он отвечает, запускает задачи и присылает отчеты. Не “магия”, а аккуратная связка из OpenClaw, Termux и пары команд.
По официальной документации OpenClaw на Android работает как “узел-компаньон”, а сам “шлюз” (Gateway) рекомендуется держать на ПК. Но сообщество уже протоптало тропинку: запускать шлюз прямо на Android через Termux и Ubuntu. Это делает систему полностью автономной.
Ниже — пошаговый гайд с учетом всех подводных камней: от патчей сетевых интерфейсов до борьбы с агрессивным энергосбережением Android.
В современных версиях Android работает механизм "Phantom Process Killer". Он убивает дочерние процессы Termux, потребляющие много ресурсов (а Node.js потребляет много), даже если вы отключили оптимизацию батареи в настройках.
Если вы не хотите, чтобы бот падал через час работы, подключите телефон к компьютеру по USB, включите "Отладку по USB" и выполните эту команду через ADB (с компьютера):
adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
Без этого шага стабильной работы 24/7 добиться невозможно.
Часть 1. Разворачиваем среду (Termux + Ubuntu)
Нам понадобятся Termux и Termux:API (ставьте только из F-Droid, версии в Google Play безнадежно устарели). Мы не будем запускать сервер в "голом" Termux — это боль с зависимостями. Мы поднимем полноценную Ubuntu внутри контейнера.
1. Установка Ubuntu через proot-distro
Открываем Termux на телефоне и пишем:
pkg update && pkg upgrade -y
pkg install proot-distro -y
proot-distro install ubuntu
proot-distro login ubuntu
Теперь вы находитесь внутри Ubuntu. Дальнейшие команды выполняются здесь.
2. Ставим Node.js 22 и зависимости
apt update && apt upgrade -y
apt install -y curl git build-essential nano
# Ставим Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
3. "Заклинание" для сетевых интерфейсов
Это самый важный технический нюанс. В среде proot на Android Node.js часто падает при попытке получить список сетевых интерфейсов (функция os.networkInterfaces). Мы "починим" это, создав JS-заглушку (hijack):
# 1. Создаем JS-файл заглушки
mkdir -p /root/scripts
cat <<EOF > /root/scripts/hijack.js
const os = require('os');
const originalNetworkInterfaces = os.networkInterfaces;
os.networkInterfaces = () => {
try {
return originalNetworkInterfaces();
} catch (e) {
return {};
}
};
EOF
# 2. Добавляем его в автозагрузку переменных среды
echo 'export NODE_OPTIONS="-r /root/scripts/hijack.js"' >> ~/.bashrc
source ~/.bashrc
Часть 2. Установка OpenClaw и PM2
Вместо обычного запуска мы будем использовать PM2. Это профессиональный менеджер процессов: он умеет перезапускать бота при падении, писать логи и работать с расписанием надежнее, чем cron.
npm install -g openclaw@latest pm2
1. Настройка шлюза
Запускаем мастер настройки:
openclaw onboard
0.0.0.0 на телефоне, если вы подключаетесь к публичным Wi-Fi сетям.
2. Запуск через PM2
Теперь запустим шлюз так, чтобы он работал вечно:
pm2 start "openclaw gateway" --name "claw-gateway"
pm2 save
Панель управления доступна в браузере телефона по адресу: http://127.0.0.1:18789/.
Часть 3. WhatsApp и Безопасность
Принцип простой: "Сначала закрой двери, потом приглашай гостей".
1. Белый список (Allowlist)
Откройте конфиг ~/.openclaw/openclaw.json (удобно через редактор nano) и настройте доступ только для своего номера:
{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15551234567"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["+15551234567"]
}
}
}
* Замените номер на свой в международном формате.
2. Привязка (QR-код)
Нам нужно временно остановить PM2, чтобы увидеть QR-код прямо в консоли:
pm2 stop claw-gateway
openclaw channels login --channel whatsapp
# Сканируем QR в WhatsApp -> Связанные устройства
pm2 start claw-gateway
Совет: Если вы используете OpenClaw на том же телефоне, где стоит основное приложение WhatsApp, это создаст "петлю трафика". Идеальный вариант — отдельная SIM-карта или виртуальный номер для бота.
Часть 4. Умная автоматизация с PM2
Допустим, мы хотим каждое утро получать сводку дел. Создадим скрипт, который отправляет запрос агенту.
Создаем файл ~/jobs/daily-brief.sh:
#!/usr/bin/env bash
set -euo pipefail
# Ваш номер телефона для получения отчета
TARGET="+15551234567"
# Команда агенту с флагом --deliver (ответ придет в чат)
openclaw agent
--to "$TARGET"
--message "Доброе утро. Проверь календарь и дай краткую сводку задач на сегодня."
--deliver
--channel whatsapp
Даем права на исполнение: chmod +x ~/jobs/daily-brief.sh
Ставим на расписание через PM2
Зачем нам cron, если PM2 умеет всё сам? Заставим его запускать этот скрипт каждый день в 09:00:
pm2 start ~/jobs/daily-brief.sh --name "daily-brief" --cron "0 9 * * *" --no-autorestart
Теперь PM2 управляет и шлюзом (держит его онлайн), и вашими задачами по расписанию. Посмотреть статус всех процессов можно командой pm2 status.
Финальные штрихи
- Termux Wake Lock. Опустите шторку уведомлений Android, найдите там уведомление от Termux и нажмите кнопку "Acquire wakelock". Это официально разрешит приложению не уходить в сон.
- Риски бана. OpenClaw использует библиотеку Baileys (эмуляция Web-клиента). Это неофициальный метод. WhatsApp может временно заблокировать номер при подозрительной активности. Для личного ассистента риск минимален, но не используйте это для массовых рассылок.
- Бекапы. Периодически сохраняйте папку
~/.openclaw. Там лежат ключи шифрования вашей сессии.
Итог: У вас в кармане теперь живет сервер с LLM-агентом, который не требует оплаты за хостинг, всегда под рукой и управляется через привычный чат. Удачной автоматизации!