Termux – это полноценная Linux‑окружение для Android, которое позволяет запускать скрипты, компилировать программы и использовать инструменты DevOps непосредственно на смартфоне. При росте числа задач (сетевые утилиты, анализ данных, pentest, автоматизация) становится актуально иметь готовый «образ» Termux с предустановленными пакетами и настройками. Автоматизация создания и поддержки таких образов экономит время, обеспечивает консистентность и упрощает обновление.
Зачем автоматизировать сборку образов?
- Повторяемость: каждый образ собирается одинаково, независимо от устройства.
- Версионирование: образ фиксируется в репозитории, можно откатиться к любой версии.
- Тестирование: автоматические проверки гарантируют работоспособность после обновлений.
- Интеграция в CI/CD: образ может быть частью пайплайна, например, для CI‑тестов мобильных приложений.
Инструменты для автоматизации
Для создания образов Termux можно использовать несколько подходов. Ниже перечислены основные инструменты.
- Termux‑API + скрипты Bash/Python – простейший способ собрать набор пакетов и настроек.
- Packer – универсальный инструмент от HashiCorp, позволяющий описать образ в виде JSON/HCL‑шаблона.
- Docker‑контейнеры с Termux‑image – удобно для локального тестирования и CI.
- GitHub Actions / GitLab CI – позволяют запускать сборку в облаке без доступа к реальному устройству.
Пример: сборка образа с помощью Packer
Ниже приведён минимальный template.json, который собирает Termux‑образ со следующими компонентами:
- git, python, openssl, nmap
- настройка пользовательского bash‑prompt
- установка скриптов автозапуска
{
"builders": [
{
"type": "null",
"communicator": "none"
}
],
"provisioners": [
{
"type": "shell",
"inline": [
"apt update && apt upgrade -y",
"pkg install -y git python openssl nmap",
"echo 'export PS1=\"\\u@termux:\\w$ \\"' >> $HOME/.bashrc",
"mkdir -p $HOME/scripts",
"cat <<'EOF' > $HOME/scripts/startup.sh",
"#!/data/data/com.termux/files/usr/bin/bash",
"echo \"Termux образ загружен\"",
"EOF",
"chmod +x $HOME/scripts/startup.sh"
]
}
],
"post-processors": [
{
"type": "file",
"output": "termux-image.tar.gz"
}
]
}
Запуск сборки:
packer build template.json
После завершения будет создан архив termux-image.tar.gz, который можно распаковать на любом устройстве с помощью команды tar -xzf termux-image.tar.gz -C $HOME.
Тестирование образа в CI/CD
Для проверки работоспособности образа удобно использовать GitHub Actions. Ниже пример workflow, который собирает образ, разворачивает его в эмуляторе Android (Android Emulator) и запускает набор тестов.
name: Build Termux Image
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install packer
run: |
sudo apt-get update
sudo apt-get install -y unzip
wget https://releases.hashicorp.com/packer/1.10.1/packer_1.10.1_linux_amd64.zip
unzip packer_1.10.1_linux_amd64.zip
sudo mv packer /usr/local/bin/
- name: Build image
run: packer build template.json
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: termux-image
path: termux-image.tar.gz
- name: Run tests in emulator
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 30
script: |
adb push termux-image.tar.gz /sdcard/
adb shell "tar -xzf /sdcard/termux-image.tar.gz -C /data/data/com.termux/files/home/"
adb shell "termux-exec $HOME/scripts/startup.sh"
# Пример теста
adb shell "which nmap && nmap -v -A 8.8.8.8"
Поддержка и обновление образов
Поддержка образа сводится к двум задачам: обновление пакетов и внесение изменений в конфигурацию.
- Регулярные обновления: создайте отдельный пайплайн, который еженедельно запускает сборку с
apt update && apt upgrade -y. При появлении критических уязвимостей можно добавить триггер на событие из репозитория Termux Packages. - Версионирование репозитория: храните
template.jsonи скрипты в git, используйте теги для выпуска новых образов. - Тесты безопасности: интегрируйте сканеры (например,
trivy) в CI, чтобы проверять наличие уязвимостей в установленных пакетах.
Практические примеры образов
- Сетевой инструментарий: пакеты
net-tools, iproute2, nmap, masscan, curl. Автоматический запуск скриптов сбора информации о сети. - Data Science:
python, numpy, pandas, matplotlib, jupyter. Предустановлен Jupyter Notebook, доступный черезtermux-open-url http://127.0.0.1:8888. - Penetration testing:
metasploit, sqlmap, gobuster, hydra. Скриптrun-pentest.shподготавливает рабочее окружение. - Автоматизация задач:
cron, termux-job-scheduler, python-requests. Пример cron‑задачи, отправляющей системные метрики в Telegram.
Лучшие практики
- Разделяйте базовый слой (основные пакеты) и слой «приложения» (конкретные инструменты).
- Не храните в образе чувствительные данные (токены, пароли). Вместо этого используйте переменные окружения, задаваемые в CI.
- Проверяйте размер образа. Для мобильных устройств важна экономия места – удаляйте кеш
apt clean && rm -rf $HOME/.cache/pip. - Документируйте каждый шаг сборки в
README.mdрепозитория.
Заключение
Автоматизированное создание и поддержка образов Termux позволяет быстро разворачивать готовые рабочие окружения под любые задачи, сохранять консистентность и уменьшать риск ошибок при ручной установке. Используя Packer, скрипты Bash и CI/CD‑сервисы, вы получаете полностью управляемый процесс, который легко масштабировать и поддерживать.
Профессиональные IT‑услуги в Рыбинске оказывает RybinskLab. Мы поможем настроить автоматизацию, обеспечить безопасность ваших мобильных решений и интегрировать Termux в ваш DevOps‑поток.