Андрей Смирнов
Время чтения: ~14 мин.
Просмотров: 43

Делаем полноценный домашний сервер из старого смартфона на Android

Представим такую ситуацию: у тебя есть старенький смартфон на Android. Свою основную функцию он уже давно потерял — разбит экран, или сдох модуль мобильной связи, или же смартфон банально устарел. Особого смысла продавать его за три копейки нет, а вот повесить на «вечную зарядку» и поднять сервер вполне можно. Причем для этого даже не придется запускать на смартфоне Linux или что-то компилировать. Все необходимое есть в Google Play.info-icon.jpg#26759185

INFO

Описанные шаги производились на смартфоне возрастом пять лет с Android 4.4. Если твой смартфон еще старше — будь готов к тому, что гайд для него не подойдет (например, из-за отсутствия поддержки LineageOS или использованных в статье утилит). Да, жизнь жестока.

Подготовка

Для начала выполним несколько подготовительных шагов.

Чистим смартфон

Первое, что нам необходимо сделать, — это очистить аппарат от мусора. Удаляем все файлы с карты памяти (внутренней и съемной), а затем делаем сброс до заводских настроек (Настройки → Восстановление и сброс → Сброс настроек). Это нужно, чтобы избавиться от установленных приложений, которые тоже могут висеть в памяти и жрать оперативку.

Также настоятельно рекомендую установить на смартфон LineageOS, а поверх нее пакет gapps-pico. Так ты получишь смартфон с доступом к маркету, но без огромного количества блоата, который так любят предустанавливать производители и Google.

После регистрации в Google сразу отключи все виды синхронизации, перейдя в «Настройки → Аккаунты → Google». На сервере от этой синхронизации никакого прока, она будет только мешать. Функции пробуждения при получении уведомления и always on display, а также светодиодный индикатор тоже не нужны. Перейди в «Настройки → Приложения» и отключи весь софт, который возможно отключить. Email, браузер, службы Exchange — все это нам не нужно.

В результате у тебя окажется система, которая по минимуму использует оперативку и не держит в памяти ненужные приложения и службы, — голый и урезанный со всех сторон смартфон. Нелишним будет получить права root. Большинство описанных в статье серверов их не требуют, но они понадобятся, если ты захочешь иметь нормальную командную строку с набором утилит Linux и полный контроль над сервером.

SSH и BusyBox

Android построен на ядре Linux, что для нас большой плюс: Linux прекрасно оптимизирован для серверов. Однако вся остальная часть системы сильно отличается от типичных дистрибутивов Linux. Здесь нет многих стандартных для Linux команд, к Android нельзя подключиться по SSH, системы контроля сетевых служб тоже как бы нет (есть местный init, но это вещь в себе).

Чтобы это исправить, установим BusyBox и SSH-сервер. Первый представляет собой минималистичный комплект стандартных утилит командной строки Linux, второй понятно что. Для установки BusyBox воспользуемся приложением BusyBox On Rails. Все предельно просто: запускаем приложение, кликаем несколько кнопок, соглашаемся предоставить права root — готово.

На роль SSH-сервера отлично подойдет SimpleSSHD. Внутри это SSH-сервер Dropbear для встраиваемых устройств, снабженный графическим интерфейсом. Устанавливаем, запускаем, переходим в настройки, отмечаем галочкой опцию Start on Boot, возвращаемся назад и нажимаем кнопку Start.

SimpleSSHD выведет на экран IP-адрес, порт по умолчанию 2222. Подключиться к нему из Linux можно так:

$ ssh IP-адрес -p 2222

При подключении на экране смартфона появится одноразовый пароль, который следует указать в приглашении клиента. Это очень безопасный, но не очень удобный способ аутентификации, поэтому рекомендую использовать аутентификацию по ключам. Просто переименуй свой открытый ключ (id_rsa.pub) в authorized_keys и положи в каталог ssh на карте памяти.

Сразу после подключения к серверу выполни команду su, чтобы SimpleSSHD запросил права root на смартфоне. Подтверди права и не забудь поставить галочку «Больше не спрашивать» (в LineageOS) или сними галочку «Спросить снова» (SuperSU). Это нужно, чтобы в будущем ты мог в любой момент получить root без всяких запросов со стороны Android.

Bash, nano, tmux, mc

BusyBox содержит только базовый набор утилит командной строки, многие из которых к тому же имеют сильно урезанную функциональность. В BusyBox нет ни bash, ни вменяемых консольных редакторов (Vi в расчет не берем, это не Vim), ни mc и tmux, без которых многие админы не представляют себе жизни.

Если тебе все это нужно, придется установить утилиты самостоятельно. Правильный способ это сделать — скачать компилятор Linaro, исходники утилит и собрать их самому. Быстрый способ — выдрать из уже имеющегося приложения, например из Terminal IDE.

Скачиваем Terminal IDE, переименовываем пакет APK в ZIP, распаковываем, находим файл assets/system-2.0.tar.gz.mp3, переименовываем, убирая расширение mp3, и вновь распаковываем. Внутри будет множество каталогов и файлов, из которых нас интересуют только system/bin и system/etc/terminfo. Первый содержит нужные нам утилиты; просто скопируй те, что тебе пригодятся, в отдельный каталог. Второй необходим для их корректного функционирования.

Выбранные утилиты и каталог terminfo скинь на карту памяти смартфона. Затем подключись к нему по SSH и введи следующие команды, чтобы получить возможность модификации системного каталога:

$ su # mount -o remount,rw /system

Далее скопируй все нужные утилиты в /system/xbin/ и установи на них бит исполнения (на примере bash):

# cp bash /system/xbin/ # chmod 755 /system/xbin/bash

Затем создай файл /sdcard/ssh/.bashrc, помести в него следующие строки:

export TERMINFO=/sdcard/terminfo export TMPDIR=/data/local/tmp export PS1="u@h:w $ "

Открой настройки SimpleSSHD на смартфоне и в опции Login Shell укажи /system/xbin/bash, останови и вновь запусти сервер. При следующем входе по SSH откроется bash и будут доступны скопированные тобой утилиты.

Чтобы добиться корректной работы Vim и mc, скопируй на карту памяти также каталоги etc/mc и etc/vim, а в файл /sdcard/ssh/.bashrc добавь строки

export MC_DATADIR=/sdcard/mc export VIMRUNTIME=/sdcard/vim

warning-icon.jpg#26759185

WARNING

Если сразу после логина вместо имени пользователя и хоста ты видишь -bash-4.2$, запусти bash повторно. Такая ошибка возникает из-за проблем с автоматическим определением домашнего каталога.

Отключаем энергосбережение

Как и любая другая мобильная ОС, Android всеми силами старается сберечь энергию. Поэтому сразу после отключения экрана он как можно скорее переводит смартфон в режим suspend, при котором прекращается/снижается подача питания не только на экран, но и на сам процессор (аналог suspend to ram в компах).

Нам такое поведение будет только мешать, поэтому его следует отключить. Для этого активируем так называемый wakelock, который заставит систему не переходить в режим suspend:

$ su # echo mylock > /sys/power/wake_lock

Wakelock будет оставаться активным, пока жива система, но после перезагрузки его придется активировать снова. В прошивках, основанных на LineageOS/CyanogenMod, это можно автоматизировать. Создай файл со следующим содержимым:

#!/system/bin/sh echo mylock > /sys/power/wake_lock

И скопируй его в каталог /system/etc/init.d.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Представьте ситуацию, когда Вы сделали работу по своему проекту, закоммитили все изменения, залили их на продакшен и уехали по своим делам (домой, на прогулку или куда-либо ещё). И тут вдруг Вы вспоминаете, что забыли включить в код одну важную функцию. Или вообще, Вы решили проверить по дороге свою работу, открываете Ваш проект с мобильного телефона и видите, что почему-то всё работает не так, как нужно и Вам срочно надо откатить все изменения на предыдущий коммит. Я сталкивался с такой ситуацией и понимаю, что в таких ситуациях действовать нужно незамедлительно, без лишнего шума и информирования начальника проекта 🙂

Решение заключается в установке одного приложения на свой мобильный телефон и подключения с его помощью к серверу через SSH. А имея SSH подключение, Вы сможете и отредактировать нужную функцию в нужном файле, и и откатить состояние проекта до нужного коммита, а также сделать новый коммит после этого.

Итак, как подключиться к серверу, используя свой мобильный телефон и Termux

Первым делом, устанавливаем на телефон программу Termux. Она доступна для всех современных устройств. Root-доступ не требуется. Программа бесплатна, регулярно обновляется, имеет оценку 4,7 балла и более 1 млн. скачиваний на момент написания данной статьи. Она позволяет использовать на Вашем мобильном телефоне оболочку Linux. Да, Вы поняли абсолютно правильно — полноценный Linux с командной строкой, bash и всеми остальными плюшками в Вашем телефоне! При желании Вы сможете также установить Pyton, PHP, Nodejs и многое другое. А самое главное — Вы сможете использовать полноценный пакет OpenSSH.

После установки приложения выполняем команду:

  pkg install openssh -y  

Вуа-ля! Теперь можем подключиться к любому серверу и выполнять там любые команды!

Т.к. в экстренной ситуации Вам будет не до поиска хоста, логина и пароля, предлагаю заранее создать аутентификацию по ключу и alias для подключения. После данных манипуляций Вам потребуется только лишь ввести команду алиаса и на Вашем экране отобразится командная строка сервера без необходимости вводить логины и пароли. Для этого заходим в папку .ssh

  cd .ssh  

Далее, имея перед собой хост, логин и пароль к серверу, выполняем команду:

  ssh-keygen -t rsa  

На все вопросы просто нажимаем Enter до тех пор, пока перед нами не появится визуальное обозначение нашего ключа, например вот такое:

  The key's randomart image is:  +---[RSA 2048]----+  |  ..Bo.oo..      |  | E B o...  o     |  |  + * .  .  o  . |  | . + o .  ..    o|  |  o   o S.  . +.+|  |   . o o ..  . B=|  |    . .    o   oO|  |            o +oO|  |             .o*=|  +----[SHA256]-----+  

Далее вводим команду, предварительно заменим логин@хост на свои значения:

  ssh-copy-id -i ~/.ssh/id_rsa.pub логин@хост

После этого появится вопрос о добавлении ключа. Вводим ‘yes‘ и нажимаем Enter.

Затем Вас запросят пароль. Вводим корректный пароль.

После этого Вы увидите сообщение о том, что Ваш ключ успешно добавлен и теперь Вы можете подключиться к серверу без ввода пароля, используя команду вида:

  ssh 'логин@хост'  

Теперь давайте создадим alias для быстрого запуска данной команды.

Вводим команду:

  locate .bashrc  

Если у Вас не установлена программа для поиска файлов locate, то Вы увидите сообщение об этом с инструкцией, как её установить. В частности, нужно будет выполнить:

  pkg install mlocate -y  

Поскольку база данных по файлам обновляется 1 раз в день, то обновим её вручную командой:

  updatedb  

После этого снова повторим команду поиска файла с настройками:

  locate .bashrc  

Теперь файл точно будет найден и Вы увидите путь к файлу. Возможно, он будет таким: /data/data/com.termux/files/usr/etc/bash.bashrc

Теперь нам нужно отредактировать этот файл и добавить alias для нашей команды. Используйте команду:

  nano /data/data/com.termux/files/usr/etc/bash.bashrc

У Вас наверняка не будет установлен редактор nano, установите его предложенной терминалом командой.

После открытия файла bash.bashrc для редактирования, впишите на новую строку алиас команды подключения. Например:

  alias server="ssh 'логин@хост'"  

Сохраните файл, используя Ctrl+X. Чтобы ввести эту команду с телефона, на котором отсутствует клавиша Ctrl, а также возможность зажатия клавиш, я рекомендую использовать любую виртуальную клавиатуру для разработчиков, например клавиатуру NextApp, которая также доступна для установки для любых мобильных устройств, или любую другую виртуальную клавиатуру, на которой есть стрелки и клавиши Alt, Shift, Ctrl.

При сохранении файла не забудьте нажать Y и Enter.

Теперь, чтобы перезагрузить терминал, наберите Exit и Enter, а затем заново запустите приложение Termux.

Теперь введите имя Вашего алиаса, например server и Вы увидите командную строку Вашего сервера, на котором Вы сможете использовать всё, что Вам потребуется.

P.S. Если у Вас возникнут трудности с созданием алиаса или с созданием аутентификации по ключу, то Вы можете обойтись и без этого. Имея установленный пакет OpenSSH, вы и так сможете подключиться к серверу с помощью обычной команды:

  ssh логин@хост

Или если у Вас отдельный порт для SSH:

  ssh логин@хост -p номер_порта

Ключ и alias мы добавили только для Вашего же удобства, чтобы иметь возможность подключаться к серверу с помощью ввода нескольких символов, не имея под рукой никаких данных о логинах и паролях.

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков Webdevelopmentblog!

Нужно маломощное устройство для запуска вашего сайта? Хотите освободить место, занимаемое вашим веб-сервером? Хотели бы вы поделиться информацией с людьми, друзьями или публикой, но у вас нет средств для запуска полномасштабного веб-сервера?

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

Android: недорогой веб-сервер у вас в кармане

Веб-сайтам не нужны дорогие серверы. Сейчас мы находимся на этапе, когда вы можете разместить на скромном устройстве динамический веб-сайт, управляемый базой данных.

Например, вы можете использовать стандартный настольный ПК или ноутбук. Но так как это занимает много места, вы можете сократить еще больше.

Это немедленно снимает ваши расходы на хостинг. Если количество просмотров страниц низкое, вы должны обнаружить, что ваш сайт работает без блокировки устройства (хотя вы не должны ожидать многозадачности во время работы сайта!).

Шаг 1: Установите Tiny Web Server для Android

Для Android доступны различные серверные приложения. Однако многие из них устарели и предназначены для более старых версий Android (таких как PAW Server).

Мы используем Tiny Web Server для этого урока. При этом мы загрузим основной файл index.html и перейдем к нему с ПК в той же сети, чтобы проиллюстрировать использование Android в качестве веб-сервера.

Подобные приложения основаны на тех же принципах. В основном, те же концепции и процессы необходимы для предоставления веб-страницы браузеру для просмотра.

Скачать:Tiny Web Server для Android (бесплатно)

Шаг 2: Настройте Tiny Web Server

Этот инструмент очень упрощенный способ подачи контента с вашего телефона. Тем не менее, он позволяет вам получить доступ к файлам удаленно. Например, вы можете просматривать память телефона из веб-браузера вашего компьютера, если оба находятся в одной сети.

Из-за этой простоты в Tiny Web Server нет возможности настройки. Это означает, что вы не можете принудительно установить его по умолчанию в файл index.html.

После установки Tiny Web Server запустите приложение. На главном экране у вас есть опция Изменить путь к серверу, что полезно, если вы хотите указать каталог для хранения ваших веб-файлов.

Вы также можете указать кодировку по умолчанию (полезно, если у вас нет сайта на английском языке) или порт сервера.

Шаг 3: Добавьте Index.html на Tiny Web Server

Чтобы использовать Tiny Web Server для обслуживания веб-страниц, вам нужно создать файл index.html и загрузить его в нужную папку. Вы можете сделать это на своем рабочем столе, используя текстовый редактор, например Notepad ++, или на Android, используя HTML или текстовый редактор.

muo-android-webserver-paw-html.png

Скопируйте файл в нужный каталог (через USB или с помощью файлового менеджера Android) на устройстве Android. На Android переместите файл в /storage/emulated/0.

Если вы копируете файл через USB на телефон, перейдите к хранилищу телефона в диспетчере файлов. Местоположением по умолчанию должен быть эмулируемый подкаталог. Скопируйте файл HTML в этот каталог, затем безопасно отключите устройство.

После того, как файл скопирован на Android, откройте Tiny Web Server и нажмите «Запустить сервер». Перейдите в своем браузере к URL-адресу по умолчанию, добавив /index.html в конец.

muo-android-web-server-page.png

Поздравляем, вы превратили свое Android-устройство в простой веб-сервер! Конечно, показанный пример является чрезвычайно простым и не имеет стиля. К счастью, легко добавить CSS с помощью обычной инструкции в файле HTML. Мы рассмотрели некоторые основы CSS если вы новичок. Лучше всего, вы все еще можете использовать свой телефон или планшет в обычном режиме во время хостинга сайта.

Как люди посещают страницы вашего веб-сервера Android?

Не имеет значения, размещаете ли вы свой сайт на смартфоне, планшете или даже на Android-телевизоре.

Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.

Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.

Построение веб-сервера Android

Мы рассмотрели основные этапы создания веб-сервера на платформе Android. На случай, если вы их пропустили, давайте напомним себе.

  • Убедитесь, что ваше Android-устройство подключено к сети
  • Установите Tiny Web Server
  • Создать HTML-файл (ы)
  • Загрузите файл (ы) на ваше устройство Android
  • Запустите Tiny Web Server

Если веб-сайт относительно простой, вы можете использовать свое Android-устройство в качестве хоста и сэкономить деньги на питании дорогого сервера. Точно так же вы можете повторно использовать пространство, используемое сервером или ПК, работающим в качестве веб-сервера. Возможно, вы можете использовать сервер для других целей.

В Android создание веб-сервера — это всего лишь один из вариантов. Взгляните на некоторые более полезные способы использования старого смартфона.

Используемые источники:

  • https://xakep.ru/2017/06/27/old-android-server/
  • https://blog.lisogorsky.ru/ssh-mobile
  • https://ip-calculator.ru/blog/ask/kak-prevratit-smartfon-na-android-v-veb-server/

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации