Termux — мощный терминал Linux для Android, позволяющий развернуть полноценный сервер прямо на смартфоне. В этой статье мы рассмотрим создание полностью автономного сервера, работающего без постоянного подключения к ПК и внешним мониторам. Материал подготовлен экспертами РыбинскЛАБ для образовательных целей в рамках действующего законодательства РФ.
Подготовка окружения
Установите Termux из официального источника (F-Droid или GitHub). Избегайте версии из Google Play — она устарела. После установки обновите пакеты:
pkg update && pkg upgrade -y
Установите базовые утилиты:
pkg install -y git curl wget nano htop termux-api
Настройка хранилища и прав доступа
Предоставьте Termux доступ к общему хранилищу для работы с файлами:
termux-setup-storage
Создайте структуру директорий для проектов:
mkdir -p ~/server/{www,db,logs,config,scripts}
Установка и настройка веб-сервера (Nginx + PHP)
Установите Nginx и PHP-FPM:
pkg install -y nginx php php-fpm php-mysqli php-gd php-curl php-mbstring php-xml php-zip
Настройте Nginx. Отредактируйте конфигурацию:
nano $PREFIX/etc/nginx/nginx.conf
Пример минимальной конфигурации для автономной работы:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
root /data/data/com.termux/files/home/server/www;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/data/data/com.termux/files/usr/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Настройте PHP-FPM. Отредактируйте $PREFIX/etc/php-fpm.d/www.conf:
listen = /data/data/com.termux/files/usr/var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
user = www
group = www
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Создайте тестовый файл:
echo '' > ~/server/www/index.php
Установка базы данных (MariaDB)
pkg install -y mariadb
Инициализируйте базу данных:
mysql_install_db --datadir=$PREFIX/var/lib/mysql
Запустите сервер и настройте безопасность:
mysqld_safe --datadir=$PREFIX/var/lib/mysql &
sleep 5
mysql_secure_installation
Создайте базу и пользователя для проекта:
mysql -u root -p -e "CREATE DATABASE autoserver CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'serveruser'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON autoserver. TO 'serveruser'@'localhost'; FLUSH PRIVILEGES;"
Настройка SSH для удаленного управления
Установите OpenSSH:
pkg install -y openssh
Настройте ключевую аутентификацию (рекомендуется для безопасности):
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
Отредактируйте $PREFIX/etc/ssh/sshd_config:
Port 2222
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers $USER
Запустите SSH-сервер:
sshd
Автозапуск сервисов (Termux:Boot)
Установите аддон Termux:Boot из F-Droid. Создайте скрипт автозапуска:
mkdir -p ~/.termux/boot
nano ~/.termux/boot/start-server.sh
Содержимое скрипта:
#!/data/data/com.termux/files/usr/bin/bash
# Ожидание готовности системы
sleep 10
# Запуск MariaDB
mysqld_safe --datadir=$PREFIX/var/lib/mysql > ~/server/logs/mariadb.log 2>&1 &
# Запуск PHP-FPM
php-fpm -D > ~/server/logs/php-fpm.log 2>&1 &
# Запуск Nginx
nginx > ~/server/logs/nginx.log 2>&1 &
# Запуск SSH
sshd > ~/server/logs/ssh.log 2>&1 &
# Уведомление (требует termux-api)
termux-notification --title "Сервер запущен" --content "Все сервисы активны" --priority high
Сделайте скрипт исполняемым:
chmod +x ~/.termux/boot/start-server.sh
Управление питанием и Wake Lock
Для предотвращения усыпления устройства используйте termux-wake-lock. Добавьте в скрипт автозапуска:
termux-wake-lock
Для экономии заряда настройте termux-battery-status мониторинг в отдельном скрипте.
Безопасность и изоляция
- Используйте фаервол (например,
iptablesчерез root или приложения вроде AFWall+). - Ограничьте доступ к портам только доверенными IP (локальная сеть).
- Регулярно обновляйте пакеты:
pkg upgrade -y. - Настройте VPN (например, WireGuard) только для создания локальной защищенной сети между устройствами, а не для обхода блокировок.
- Храните секреты в переменных окружения или
~/.envфайлах с правами 600.
Мониторинг и логирование
Настройте ротацию логов через logrotate (установите: pkg install logrotate). Пример конфига ~/server/config/logrotate.conf:
~/server/logs/.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 www www
}
Добавьте в крон (установите pkg install cronie):
crontab -e
# Ежедневно в 03:00
0 3 * /data/data/com.termux/files/usr/bin/logrotate ~/server/config/logrotate.conf
Тестирование и проверка
После перезагрузки устройства проверьте:
- Веб-интерфейс:
http://localhost:8080илиhttp://в локальной сети.:8080 - SSH:
ssh -p 2222 user@. - База данных:
mysql -u serveruser -p autoserver. - Процессы:
ps aux | grep -E 'nginx|php-fpm|mysqld|sshd'.
Заключение
Вы развернули полностью автономный сервер на Android с веб-сервером, базой данных, SSH и автозапуском. Такое решение подходит для домашних лабораторий, IoT-проектов, тестирования и обучения. При необходимости масштабирования или интеграции с корпоративной инфраструктурой — обратитесь к экспертам РыбинскЛАБ. Мы предоставляем услуги по проектированию, внедрению и сопровождению серверных решений на базе Linux, Android и гибридных платформ. Свяжитесь с нами для консультации или заказа работ.