Как превратить старый Android в автономный сервер с помощью Termux Boot
Репозиторий давно не обновлялся
Последнее обновление было 7 месяцев назад.
У многих дома пылится старый смартфон на Android. Экран слегка подбит, батарея держит так себе, продать за вменяемые деньги не получится. При этом внутри стоит вполне живой четырехъядерный процессор и пара гигабайт оперативной памяти. Из такого железа получается отличный домашний сервер для телеграм-ботов, легких скриптов автоматизации или локального SSH-узла.
Терминал Termux давно превратил Android в полноценное Linux-окружение. Но есть неприятный нюанс. Если смартфон выключится из-за разряженной батареи или перезагрузится после обновления, все запущенные процессы умрут. Придется вручную открывать приложение, вбивать команды и заново поднимать сервисы.
Решить эту задачу помогает аддон Termux:Boot. Это утилита, которая подхватывает событие загрузки операционной системы и запускает пользовательские скрипты.
Как устроен автозапуск в Android
Android относится к фоновым процессам строго. Система не разрешает приложениям стартовать вместе с ОС без прямого согласия пользователя и специальных разрешений.
Termux:Boot работает как мост между системным событием BOOT_COMPLETED и вашим Linux-окружением внутри Termux. Когда смартфон включается, аддон получает сигнал от системы, заглядывает в специальную директорию пользователя и по очереди запускает находящиеся там исполняемые файлы.
Здесь есть нюанс с подписями приложений. Termux и Termux:Boot взаимодействуют между собой через общие права доступа. Из-за правил безопасности Android оба приложения должны быть подписаны одним и тем же ключом разработчика.
Если вы поставили основной Termux из F-Droid, то и плагин Termux:Boot нужно брать строго из F-Droid. Попытка скрестить сборку из Google Play с APK из F-Droid закончится ошибкой доступа. Если хочется протестировать свежие коммиты, разработчики выкладывают отладочные сборки в GitHub Actions. Но помните: при смене источника установки придется полностью снести Termux и все его плагины.
Настройка шаг за шагом
Схема настройки простая. Все сводится к созданию одной папки и пары текстовых файлов.
Сначала нужно установить сам аддон Termux:Boot. После установки обязательно найдите его иконку в меню приложений и нажмите на нее один раз. Это дает аддону право перехватывать автозагрузку системы. Без этого действия Android просто заблокирует фоновый запуск.
Затем открываем терминал Termux и создаем директорию для скриптов:
mkdir -p ~/.termux/boot/
Все файлы, которые попадут в эту папку, станут сценариями для автозапуска. Если в папке лежит несколько файлов, плагин выполнит их по алфавиту.
Чтобы смартфон не уходил в глубокий сон через пять минут после старта, в самом начале скриптов пригодится команда termux-wake-lock. Она заставляет Android удержать процессор в бодрствующем состоянии.
Примеры рабочих скриптов
Разберем пару практических сценариев. Частая задача — получить доступ к устройству по SSH сразу после старта системы.
Создадим файл ~/.termux/boot/start-sshd:
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sshd
Обязательно сделайте файл исполняемым, иначе система его проигнорирует:
chmod +x ~/.termux/boot/start-sshd
Теперь при перезагрузке телефона Termux поднимет SSH-сервер в фоне. Вы сможете подключаться к нему по сети без взаимодействия с экраном.
Если вы используете пакет termux-services для управления системными демонами (аналог systemd в обычных дистрибутивах Linux), скрипт старта выглядит так:
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
source /data/data/com.termux/files/usr/etc/profile.d/start-services.sh
Создаем этот файл в ~/.termux/boot/start-services, даем права на исполнение, и все включенные через команду sv-enable сервисы будут подниматься автоматически.
Практические кейсы использования
Главная ценность проекта заключается в полной автономности. Смартфон превращается в тихий мини-сервер с собственным встроенным источником бесперебойного питания.
Вот несколько понятных сценариев:
- Запуск Telegram-бота. Бот поднимается вместе с устройством и работает без постоянного контроля.
- Синхронизация файлов через Syncthing. Телефон работает как круглосуточная нода для бэкапов фото или документов.
- Мониторинг домашней сети. Скрипт периодически проверяет доступность роутера или внешних сервисов и шлет уведомления при сбоях.
- Локальный сервер баз данных вроде SQLite или PostgreSQL для сбора логов с устройств умного дома.
Отладка и подводные камни
Идеальных решений не бывает, у Termux:Boot есть характерные особенности.
Агрессивное энергосбережение современных прошивок Android любит убивать фоновые процессы. Особенно этим грешат оболочки MIUI, One UI и EMUI. Чтобы плагин работал без сбоев, зайдите в настройки аккумулятора Android и выключите оптимизацию батареи для Termux и Termux:Boot. В прошивках типа MIUI также стоит вручную разрешить аддону автозапуск в настройках приложений.
Затем стоит проверить работу логирования. Если ваш скрипт не запускается, перенаправьте вывод ошибок в файл прямо в скрипте:
#!/data/data/com.termux/files/usr/bin/sh
exec 2>&1
exec 1>/sdcard/termux-boot.log
termux-wake-lock
echo "Boot completed at $(date)"
Так вы сразу увидите, споткнулся ли скрипт на путях к переменным окружения или не смог найти нужный бинарник.
После обновления приложений или перепрошивки устройства иногда требуется повторно запустить Termux:Boot вручную через иконку на рабочем столе.
Итоги
Termux:Boot — крайне простой плагин с единственной задачей, с которой он справился хорошо. Исходный код на Java занимает минимальный объем, а логика работы понятна каждому, кто знаком с базовым bash.
Если планируете собрать из старого смартфона домашний сервер или компактную систему автоматизации, этот аддон сэкономит вам время при случайных перезагрузках девайса.
