We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автоматизированное создание и поддержка образов Termux для различных задач

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‑поток.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной
Поддержать проект