Как я из телефона сделал сервер для своего бота в телеграме
Предыстория
Все началось с того что я написал своего бота и решил его выложить в открытый доступ, а точнее чтобы он работал круглосуточно, но платить деньги, за хостинг мне не хотелось. И тогда я вспомнил, что у меня как раз в ящиках залежались старые 2 телефона, можно сказать только один, потому что второй я превратил в кирпич (Неправильно перепрошил). Мой путь поиска программы для установки линукса начался с Termux, но к сожелению он работает только с Android 7+. А телефон на Android 5. Поэтому действенным решением я выбрал UserLAnd.
Характеристики смартфона
Название: Meizu m3 Note
Модель: M681H
Архитиктура процессора: arm64
Версия Android: 5.1
Версия прошивки: Flyme 6.3.0.0G
Что мы будем делать в этой статье
Установим линукс с веб-интерфейсом (я выбрал Webmin). Настроим веб-сервер с PHP 8.1.
Шаг 1: Установка UserLAnd
Скачиваем приложение с https://userland.tech/ или https://github.com/CypherpunkArmory/UserLAnd.
Устанавливаем и даем доступ к файлам.
Выбераем Linux дистрибутив, я выбрал Ubuntu:
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
Устанавливаем пароль и имя. Выбираем тип подключения ssh (Можно другие типы, но мне так удобнее).
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
Ждем установки, оно само перекинет нас к терминалу.
https://www.how2shout.com/how-to/how-to-install-ubuntu-linux-on-android-without-root.html
Все, линукс установлен, но давайте еще установим несколько пакетов для работы.
Обновим установленые пакеты:
sudo apt update
sudo apt upgrade
2. Установим net-tools, чтобы у нас работала команда ifconfig.
sudo apt install net-tools dialog
Шаг 2: Установка Webmin
Webmin — программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров.
# Скачиваем в нашу директорию консольный установщик
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
# Если возникает ошибка с сертификатами устанавливаем пакет ca-certificates
sudo apt-get install -y ca-certificates
# Запускаем файл от имени администрации (не обязательно) везде ставим [y]
sudo chmod +x ./setup-repos.sh
sudo ./setup-repos.sh
# После конца скачивания необходимых компонентов устанавливаем
sudo apt-get install webmin --install-recommends
Webmin установлен! Теперь мы можем зайти в веб-интерфейс. Для этого перейдите на http://ip_вашего_устройства:10000 . Для авторизации используйте ваши предыдущие данные. Тут вы можете использовать терминал для удаленного доступа к серверу. Я так и буду делать.
Шаг 3: Устанавливаем веб-сервер
Я выбрал Lighttpd, вместо Apache2, поскольку Apache все время при запуске выдает ошибки. Хотя я не отрицаю, что это я так плохо настроил.
# Устанавливаем пакет lighttpd
sudo apt install lighttpd -y
# Не отходя от терминала устанавливаем все необходимые пакеты для PHP 8.1
sudo apt install -y php8.1-cgi php8.1-cli php8.1-fpm php8.1-curl php8.1-gd php8.1-mysql
Теперь можем создать файл авто-конфигурации, который подключит поддержку php в lighttpd. ВАЖНО: ФАЙЛ, КОТОРЫЙ ПРЕВЕДЕН НИЖЕ, МОЖЕТ ВЫЗВАТЬ СИНТАКСИЧЕСКУЮ ОШИБКУ. ЕСЛИ ТАКОВАЯ ЕСТЬ, НАПИШИТЕ В КОМЕНТАРИЯХ К СТАТЬЕ.
Я сохранил этот файл под названием lighttpd-configurator.sh
#!/bin/bash
# Check for superuser privileges
if [ "$EUID" -ne 0 ]; then
echo "Please run this script as root or using sudo."
exit 1
fi
# Configure Lighttpd to work with PHP
echo 'server.modules += ( "mod_fastcgi" )' >> /etc/lighttpd/lighttpd.conf
echo 'fastcgi.server = ( ".php" => (('/usr/bin/php-cgi' => ( "bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/lighttpd/php.socket" ))))' >> /etc/lighttpd/lighttpd.conf
# Restart Lighttpd
sudo service lighttpd restart
# Test PHP
echo '' > /var/www/html/info.php
# Print a message with the installation summary
echo "Lighttpd and PHP have been installed and configured. You can access the PHP info page at http://your_server_ip/info.php."
Теперь можем запустить с помощью команд:
sudo chmod +x ./lighttpd-configurator.sh
sudo ./lighttpd-configurator.sh
Если вы пробуете подключиться к сайту, а он не отвечает попробуйте поменять порт и перезагрузить веб сервер. (У меня такое сработало).
Команды для управлениями сервисами
Время от времени вам понадобятся команды, чтобы запускать сервисы. Вот как это можно сделать:
sudo apt service имя_сервиса
Так, а как же я бота запустил?
Бот у меня написан на Java. И поэтому я сначала собрал JAR файл на ПК, и потом закинул через файл менеджер, предустановленный в Webmin на сервер. Потом я установил OpenJDK 19 следующими командами:
sudo apt install openjdk-19-jdk openjdk-19-jre
# Для запуска бота использовал
java -jar bot.jar
Концовка
Сразу говорю, не судите строго, поскольку это моя первая статья на Хабре. Если появятся вопросы пишите внизу в комментариях. Этот сервер нельзя рассматривать как готовый и стабильный сервер. Для меня этот сервер годится только для простеньких проектов, а не полномасштабных.