Как стать автором
Обновить
2769.75
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Управление сервером со смартфона

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров15K


Из любого SSH-клиента можно установить канал с сервером и управлять им стандартными командами в консоли. Есть такие клиенты и для смартфона. Многие знают и используют консоль Termux под Android, которая запускает с телефона стандартный OpenSSH.

Но есть варианты ещё удобнее, даже с графическим интерфейсом.

Вышеупомянутый Termux под Android подключается к серверу, используя стандартные инструменты Linux, а именно OpenSSH.



Termux желательно скачивать прямо с Github или из каталога F-Droid. Дело в том, что экспериментальная версия в каталоге Google Play Store ограничена по функциональности, чтобы соответствовать строгим правилам Google.

Предположим, мы зарегистрировали на RUVDS самый дешёвый сервер за 130 рублей в месяц:



В Termux предварительно нужно установить SSH-клиент Dropbear или OpenSSH (pkg install openssh) и обновить пакеты Termux командой pkg upgrade. После этого можно подключаться к своему серверу по указанному IP-адресу 194.87.74.39, как на правом скриншоте внизу.

ssh root@194.87.74.39


Есть и другие программы для управления сервером из консоли со смартфона. Например, можно попробовать Swell.sh — веб-терминал, специально спроектированный для использования в браузере на мобильном телефоне. Из функций: автодополнение Bash, поддержка жестов при наборе с клавиатуры:


Архитектура веб-терминала:

+-------------+             +--------------+           +--------------+
|             |             |              |           |              |
|             |  WebSocket  |              |  spawn    | Bash process |
| Client Side +-------------> Server Side  +---------->+              |
|             <-------------+              |           |              |
| Browser     |             | Python       |  pty      |              |
|             |             |              +----------->              |
| Chrome /    |             | API & WS     <-----------+              |
| Safari      |             |              |           |              |
|             |             | Static File  |  ptrace   |              |
|             |             |              +----------->              |
|             |             |              |           |              |
+-------------+             +--------------+           +--------------+

Как мы уже говорили, подключиться к удалённой системе можно из любого мобильного SSH-клиента, чтобы быстро зайти на сервер и решить какие-то проблемы на ходу, когда нет доступа к персональному компьютеру. Или просто когда не хочется вылезать из кровати посреди ночи. Swell.sh просто удобнее стандартного Termux в этом отношении, потому что изначально проектировался для этой задачи. Кстати, его можно подключить к Termux как внешний фронтенд.

На сервере нужно установить следующее:

  • bash, он идёт в комплекте с большинством дистрибутивов Linux;
  • python 3.6+, virtualenv, pip, git;
  • пакет bash-completion (желательно установить, он нужен для автодополнения);
  • настройку ptrace_scope установить в значение 0/1, это настройка безопасности в Linux.


Затем установка Swell.sh:

git clone https://github.com/wcchoi/swell.sh
cd swell.sh
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt


Запуск:

cd swell.sh
source venv/bin/activate
python app.py # default options: --host=127.0.0.1 --port=8010

В браузере Chrome под Android/iOS набираем <HOST>:<PORT> (вообще, для безопасности не рекомендуется оголять сервер для открытого доступа, лучше спрятать его за VPN с перенаправлением портов или хотя бы за обратный прокси (например, Nginx, Apache, Caddy) с HTTPS и базовой аутентификацией).

Что касается Termux, то его можно настроить на свой вкус, выбрав любимую консоль, будь то Bash, fish, Zsh или nano. Также можно установить редактор Emacs или Vim.

Termux — очень функциональная и удобная программа, которая приносит на смартфон всю мощь Linux, в том числе синхронизацию файлов и контактов через rsync, скачивание контента с помощью curl, установку любых пакетов Debian и Ubuntu из пакетного менеджера APT, привычную консоль Python, поддержку внешней клавиатуры/мыши по Bluetooth и многое другое.

▍ Управление из GUI


Кроме стандартных консольных программ на смартфоне можно установить и специализированные приложения с красивым GUI. Например, приложение RebootX изначально предназначено только для одной задачи: управление сервером.


Приложение работает с публичными облачными провайдерами (Amazon Web Services (AWS), Microsoft Azure, Clever Cloud, Google Cloud (GCP), OVH, Scaleway), инструментальными панелями (Grafana), а также серверами на собственном хостинге или в дата-центре. Причём инстансами у всех провайдеров можно управлять одновременно.

В последней версии в качестве эксперимента конкретно для AWS реализовали новую функцию Provision a service, которая позволяет в удалённом режиме установить на сервер Motomo, PrestoShop или WordPress:


Функция чем-то напоминает маркетплейс RUVDS, где клиент сразу получает инстанс с установленной ОС и настроенным программным обеспечением, готовым к работе (например, WordPress, интернет-магазин или персональный неотслеживаемый VPN).

Единственный минус, что программа не опенсорсная и назойливо предлагает обновиться на платную версию Pro с расширенными функциями (полный доступ к провайдерам, неограниченное количество серверов, установка туннелей SSH с консолью, как мы самостоятельно делали выше, неограниченное количество панелей инструментов и др.).

На видео показана запись командных макросов SSH, в том числе для перезагрузки веб-сервера nginx на удалённой машине:

Командные макросы SSH — это самая удобная вещь, особенно если установить макрос как ярлык на рабочем столе iOS.

В бесплатной версии RebootX количество функций урезано, например, из облачных провайдеров поддерживаются только два.

В конце концов, нужно упомянуть старые и хорошо известные инструменты для веб-администрирования сервера, такие как Webmin. Многие из них отлично работают и на смартфоне через мобильный браузер.

Например, тот же Webmin устанавливается за пару секунд двумя командами.

Установка репозитория:

curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sh setup-repos.sh

Установка серверной части с настройками по умолчанию:

apt-get install webmin --install-recommends

Затем просто заходим в админку по адресу 194.87.74.39:10000 из любого браузера, в том числе со смартфона:



▍ Серверные спецификации


RebootX On-Prem — это открытые серверные спецификации для управления серверами и панелями инструментов в приложении RebootX. Они совместимы с OpenAPI Specification, чтобы обеспечить совместимость с существующими программами.

Спецификации вводят два ключевых термина:

  • Запускаемый объект (Runnable) — это всё, что работает, может быть остановлено и перезагружено. Например, виртуальные машины (VM), выделенные серверы, контейнеры, PaaS-приложения, базы данных — валидные примеры запускаемого объекта.


  • Панель (Dashboard) — набор числовых показателей. Например, количество узлов, количество заказов, задержка — всё это допустимые метрики для панели инструментов.

Конкретно эти спецификации используются в приложении RebootX. Их можно применять также для доступа к метрикам (панели), если вам не хочется поднимать сложные и тяжеловесные инструменты вроде Grafana.

На практике эти спецификации нужны, если мы хотим установить управление над собственным сервером в локальной сети или на хостинге.

В этом случае есть выбор: создать собственный сервер с произвольной конфигурацией или использовать существующий, с уже готовыми настройками для запускаемого объекта и панели инструментов. Последние версии программного обеспечения HTTP Server Go для серверной части можно собрать из исходников или скачать с этой страницы.

Например, сервер можно загрузить локально в SwaggerUI с помощью Docker Compose:

# Generate swagger.json (optional since it's already present in the repository)
docker run --rm -v $(pwd):/app oven/bun run /app/spec/generate-swagger.ts
yarn lint

# Generate Go code with OpenAPI Generator
(cd impl/http-server-go && go mod vendor)
docker run --rm \
-v $(pwd):/app \
openapitools/openapi-generator-cli:v7.4.0 generate \
-i /app/spec/_generated/swagger.json \
-g go \
-o /app/impl/http-server-go/vendor/openapi

# Run Swagger UI calling the http-server-go (see below for more details)
docker-compose up

В зависимости от необходимости, сервер работает в двух режимах:

  • Запускаемые объекты. В первом варианте (по умолчанию) сервер считывает запускаемые объекты из JSON-файла (пример JSON-файла). Во втором варианте в качестве запускаемого объекта принимается сам хост, так что программа получает полный контроль над ним с предоставлением клиенту полного удалённого доступа, включая syscall и exec. Это позволяет остановить или перезагрузить сервер.

  • Панели. Сервер считывает панели из JSON-файла (пример JSON-файла).

Поведение по умолчанию можно изменить путём редактирования переменных в файлах docker-compose.yml или config.go.

В целом, эти спецификации используются для управления собственным сервером (on-prem) с помощью программы RebootX.



RebootX не даёт дополнительных возможностей по сравнению с консольным доступом на смартфоне, разве что делает управление чуть более удобным. Например, макросы SSH можно запускать одним нажатием кнопки, а с одного экрана подключаться к нескольким инстансам у разных провайдеров. Но в целом всё то же самое можно делать с обычной консоли Termux или Swell.sh.

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
Теги:
Хабы:
Всего голосов 21: ↑21 и ↓0+31
Комментарии6

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds