Как запустить веб/SSH/БД‑сервер на Android: быстрый план
Можно быстро превратить Android‑устройство в локальный или публичный сервер: для гибкости используйте Termux (nginx/php/mysql/ssh), для простоты — KSWEB или Servers Ultimate; для публичного доступа — туннель (Cloudflare/ngrok) или проброс портов. Ниже — краткие шаги и готовые команды.
Что установить и когда выбирать
- Termux — для разработки и автоматизации, даёт пакетный менеджер и доступ к привычным Linux‑командам.
- KSWEB — GUI «всё в одном», удобно для быстрых демонстраций.
- Servers Ultimate — много типов сервисов (FTP, DLNA и др.), когда нужен набор разных серверов.
- Cloudflare Tunnel/ngrok — если нужен публичный доступ без настройки роутера/если есть CGNAT.
Если нужен только локальный тест — достаточно встроенного PHP‑сервера (в Termux/или KSWEB) и папки в /storage/shared/www.
Быстрый старт в Termux (рекомендуется для гибкости)
- Установите Termux (F‑Droid/GitHub сборка). Запустите и обновите пакеты:
pkg update && pkg upgrade -y
termux-setup-storage
- Установите серверные пакеты:
pkg install nginx php php-fpm mariadb openssh nano -y
- Быстрая проверка (встроенный PHP):
mkdir -p ~/storage/shared/www
echo "<?php phpinfo();" > ~/storage/shared/www/index.php
php -S 0.0.0.0:8080 -t ~/storage/shared/www
# или запустите php-fpm + nginx после конфигурации
- Минимальная конфигурация nginx: укажите root на ~/storage/shared/www и проксируйте .php в php-fpm (unix‑сокет или порт). Затем:
php-fpm
nginx
- MariaDB — инициализация и запуск (варианты зависят от сборки):
mysqld_install_db
mysqld_safe --datadir=$PREFIX/var/lib/mysql &
mysql -u root
- Автозапуск: используйте termux‑services или termux‑boot скрипты для старта демонов при запуске Termux.
На Android фоновые процессы могут усыпляться. Отключите оптимизацию батареи для Termux/приложения и подключите постоянное питание для стабильной работы.
KSWEB / Servers Ultimate — GUI‑вариант
- Установите приложение и дайте разрешения на хранилище.
- Укажите папку проекта (обычно /sdcard/ksweb/www) и порт (например 8080).
- Включите PHP и MySQL через панель и запустите сервисы. Для доступа извне используйте туннель или проброс портов роутера.
Как открыть доступ в LAN и в Интернет
- LAN: узнайте IP телефона (ip addr show wlan0 или ifconfig) и откройте http://<LAN_IP>:<порт>. Убедитесь, что сервис слушает 0.0.0.0, а не 127.0.0.1.
- Интернет: проще и безопаснее — туннель (Cloudflare Tunnel/ngrok). Альтернатива — проброс портов на роутере + DDNS, работает только при наличии публичного IPv4.
Пример запуска Cloudflare Tunnel в Termux (упрощённо):
# получить бинарник для вашей архитектуры, выполнить login и затем
cloudflared tunnel run --token <TOKEN>
Учтите: на Android для cloudflared/ngrok иногда требуются дополнительные шаги (proot/chroot, корректные бинарники для ARM/ARM64).
Мини‑чеклист безопасности перед выставлением в интернет
- Смените дефолтные пароли и запретите логин по паролю в SSH (только ключи).
- Ограничьте доступ по IP или используйте аутентификацию приложения.
- Включите TLS (Cloudflare может обеспечить TLS поверх туннеля) или настройте обратный прокси с сертификатом.
- Удалите лишние сервисы и закройте ненужные порты.
Частые ошибки
- Сервис доступен только на localhost — проверьте bind‑адрес (0.0.0.0).
- Приложение уходит в спящий режим — отключите оптимизацию батареи.
- Не работает проброс портов — проверьте CGNAT у провайдера; используйте туннель.
- Неправильные права к файлам в /storage — используйте termux-setup-storage и работайте в ~/storage.
FAQ
- Нужен ли root? — Нет: большинство сценариев работают без root. Root даёт дополнительные возможности (слушать низкие порты), но не обязателен.
- Как сделать автозапуск сервисов? — Используйте termux‑services / termux‑boot или system‑скрипты внутри Termux.
- Подойдёт ли старый телефон для постоянного сервера? — Подойдёт для небольших задач, но учитывайте надёжность батареи и долговременную нагрузку.
Если хотите, могу сгенерировать готовый скрипт установки nginx+php+mysql для вашей архитектуры (arm/arm64/x86) или пошаговую инструкцию для KSWEB с примером конфигурации.