как сделать телефон сервером
Как превратить смартфон на Android в веб-сервер
Нужно маломощное устройство для запуска вашего сайта? Хотите освободить место, занимаемое вашим веб-сервером? Хотели бы вы поделиться информацией с людьми, друзьями или публикой, но у вас нет средств для запуска полномасштабного веб-сервера?
Или вы можете разместить свою веб-страницу, используя смартфон или планшет на 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 или текстовый редактор.
Скопируйте файл в нужный каталог (через USB или с помощью файлового менеджера Android) на устройстве Android. На Android переместите файл в /storage/emulated/0.
Если вы копируете файл через USB на телефон, перейдите к хранилищу телефона в диспетчере файлов. Местоположением по умолчанию должен быть эмулируемый подкаталог. Скопируйте файл HTML в этот каталог, затем безопасно отключите устройство.
После того, как файл скопирован на Android, откройте Tiny Web Server и нажмите «Запустить сервер». Перейдите в своем браузере к URL-адресу по умолчанию, добавив /index.html в конец.
Поздравляем, вы превратили свое Android-устройство в простой веб-сервер! Конечно, показанный пример является чрезвычайно простым и не имеет стиля. К счастью, легко добавить CSS с помощью обычной инструкции в файле HTML. Мы рассмотрели некоторые основы CSS если вы новичок. Лучше всего, вы все еще можете использовать свой телефон или планшет в обычном режиме во время хостинга сайта.
Как люди посещают страницы вашего веб-сервера Android?
Не имеет значения, размещаете ли вы свой сайт на смартфоне, планшете или даже на Android-телевизоре.
Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.
Как люди посещают страницы вашего веб-сервера Android?
Не имеет значения, размещаете ли вы свой сайт на смартфоне, планшете или даже на Android-телевизоре.
Какое бы устройство Android вы не выбрали, при использовании вместе с клиентом динамического обновления DNS (из них No-IP.com имеет приложение для Android), вы сможете обслуживать веб-страницы на компьютерах вне домашней или корпоративной сети. Эти приложения связывают динамический IP-адрес вашего устройства с выделенным URL-адресом через устанавливаемое клиентское приложение.
Построение веб-сервера Android
Мы рассмотрели основные этапы создания веб-сервера на платформе Android. На случай, если вы их пропустили, давайте напомним себе.
Если веб-сайт относительно простой, вы можете использовать свое Android-устройство в качестве хоста и сэкономить деньги на питании дорогого сервера. Точно так же вы можете повторно использовать пространство, используемое сервером или ПК, работающим в качестве веб-сервера. Возможно, вы можете использовать сервер для других целей.
В Android создание веб-сервера — это всего лишь один из вариантов. Взгляните на некоторые более полезные способы использования старого смартфона.
Делаем сервер из Android-телефона
Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.
На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.
Ну и в-четвёртых, мне просто было жаль их выбрасывать. Консьюмеризм в наше время предписывает каждый год-два покупать новые смартфоны, производители блокируют возможности железа, которые им невыгодны, прекращают поддержку старых моделей, оставляя людей беспомощными. Миллионы смартфонов отправляются на свалку истории каждый год, хотя каждый из них это мощный компьютер.
TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.
Сразу хочу оговориться — я понимаю, что есть типовые решения, например Termux или UserLAnd, и спектр поддерживаемых устройств у них шире. Но все они работают как надстройки над основной системой, Android, и подвержены её ограничениям, таким как агрессивное сокращение энергопотребления или перенос задач на LITTLE-ядра при выключении экрана. Будущее Termux, например, вообще неясно из-за всё более жёстких гаек безопасности в Android 11. UserLAnd, помимо этого, работает через PRoot, который при всей своей пользе ощутимо замедляет процессы с большим количеством системных вызовов. В этой статье мы разбираем именно создание сервера на железе без Android.
Часть первая. Прошивка
Проект PostmarketOS был создан именно ради этой цели — сохранение вычислительных устройств после прекращения их поддержки производителями. Список поддерживаемых устройств можно найти здесь.
Для установки требуется телефон с разблокированным загрузчиком. В качестве примера буду использовать OnePlus One из-за простоты разлочки со стороны производителя. Для каждого производителя список шагов разный, ниже привожу обобщённые действия для смартфона 2018-2021 года выпуска:
Далее авторизуем подключение на самом телефоне
После разблокировки телефон сбросит данные снова перезагрузится в Android, перезапустите его в режим fastboot комбинацией клавиш или повторите релевантные для этого шаги 3 и 4.
Если разблокировка прошла успешно, далее можно следовать стандартной процедуре установки PmOS:
На этом этапе pmbootstrap запросит пароль и задаст довольно много вопросов о том, как сконфигурировать систему и целевое устройство. Итоговый результат будет записан в
Затем с помощью pmbootstrap install сразу же начинаем сборку образа целевой системы. После сборки её предлагается установить самому, так как механизм установки варьируется от модели к модели. Пример того, как это делается стандартно, и как вышло у меня, ниже.
После завершения процесса sideload жмём «Reboot to system». Должен пойти процесс загрузки ядра и далее самой PostmarketOS.
Часть вторая. Настройка PostmarketOS
По сути своей, PostmarketOS построена на основе дистрибутива Linux под названием Alpine. Это позволяет создать работающую систему минимального размера, что для большого количества старых устройств с ограниченной внутренней памятью критично.
Однако, есть и подводные камни. О них ниже:
Итак, после загрузки телефона с PostmarketOS нам необходимо каким-то образом с ним взаимодействовать. Если вы ставили оболочку Phosh или Plasma Mobile, скорее всего вы сможете это сделать напрямую с тачскрина телефона. Если по каким-то причинам графический интерфейс не сработал, подключайте телефон к компьютеру USB-кабелем, PostmarketOS автоматически создаст дополнительную сеть:
После чего к телефону можно будет подключиться с именем и паролем пользователя, который вы указывали при pmbootstrap install :
Если вы видите эти строчки — значит PostmarketOS установлена верно. В противном случае попробуйте посмотреть секцию Troubleshooting для вашего устройства на вики PmOS, измените конфигурацию для pmbootstrap install или спросите мейнтейнеров в IRC или Matrix чате (все три пункта ваш покорный слуга в итоге и сделал).
Настройка сети
Если не получилось настроить WiFi сеть через графическую оболочку, ниже пример как сделать это через консоль. Предварительно подключите телефон к USB-интерфейсу вашего ПК.
Простой клиент-сервер на Android (интернет-мессенджер)
Важно. Все написанное ниже не представляет собой какой либо ценности для профессионалов, но может служит полезным примером для начинающих Android разработчиков! В коде старался все действия комментировать и логировать.
Поехали. Многие мобильные приложения (и не только) используют архитектуру клиент-сервер. Общая схема, думаю, понятна.
Уделим внимание каждому элементу и отметим:
Клиент, установленный на устройстве А, посылает сообщение для клиента, установленного на устройстве Б. И наоборот. Сервер играет роль связующего звена между устройством А и Б… С, Д… и т.д. Также он играет роль «накопителя» сообщений, для их восстановления, на случай удаления на одном из клиентских устройств.
Для хранения сообщений используем SQL БД как на сервере, так и на устройствах-клиентах (в принципе, вся работа клиентов интернет-мессенджеров и сводится к постоянной синхронизации локальной и удаленной БД с сообщениями). Дополнительно, наш интернет-чат будет уметь стартовать вместе с запуском устройства и работать в фоне. Взаимодействие будет происходить путем HTTP запросов и JSON ответов.
Более логично, если синхронизация происходит через порт/сокет, это с одной стороны упрощает задачу (не нужно циклично слать HTTP запросы на проверку новых сообщений, достаточно проверять состояние прослушиваемого сокета), но с другой стороны, это усложняет создание серверной части приложения.
Делаем сервер
Для реализации «сервера», нам нужно зарегистрироваться на любом хостинге, который дает возможность работы с SQL и PHP.
Создаем пустую SQL БД, в ней создаем таблицу.
Структура запросов к api:
Клиентская часть
Теперь структура Android приложения:
В фоне работает FoneService.java, который, в отдельном потоке, каждые 15 секунд делает запрос на сервер. Если ответ сервера содержит новые сообщения, FoneService.java записывает их в локальную БД и отправляет сообщение ChatActivity.java о необходимости обновить ListView, с сообщениями. ChatActivity.java (если она в этот момент открыта) получает сообщение и обновляет содержимое ListView из локальной БД.
Отправка нового сообщения из ChatActivity.java происходит сразу на сервер, минуя FoneService.java. При этом наше сообщение НЕ записывается в локальную БД! Там оно появится только после получения его назад в виде ответа сервера. Такую реализацию я использовал в связи с важным нюансом работы любого интернет-чата — обязательной группировкой сообщений по времени. Если не использовать группировку по времени, будет нарушена последовательность сообщений. Учитывая, что клиентские приложения просто физически не могут быть синхронизированы с точностью до миллисекунд, а возможно будут работать даже в разных часовых поясах, логичнее всего будет использовать время сервера. Так мы и делаем.
Создавая новое сообщение, мы передаем запросом на сервер: имя автора сообщения, имя получателя сообщения, текст сообщения. Получая эту запись назад, в виде ответа сервера, мы получаем то, что отправляли + четвертый параметр: время получения сообщения сервером.
Делаем полноценный домашний сервер из старого смартфона на Android
Содержание статьи
Описанные шаги производились на смартфоне возрастом пять лет с Android 4.4. Если твой смартфон еще старше — будь готов к тому, что гайд для него не подойдет (например, из-за отсутствия поддержки LineageOS или использованных в статье утилит). Да, жизнь жестока.
Подготовка
Для начала выполним несколько подготовительных шагов.
Чистим смартфон
Первое, что нам необходимо сделать, — это очистить аппарат от мусора. Удаляем все файлы с карты памяти (внутренней и съемной), а затем делаем сброс до заводских настроек (Настройки → Восстановление и сброс → Сброс настроек). Это нужно, чтобы избавиться от установленных приложений, которые тоже могут висеть в памяти и жрать оперативку.
Также настоятельно рекомендую установить на смартфон LineageOS, а поверх нее пакет gapps-pico. Так ты получишь смартфон с доступом к маркету, но без огромного количества блоата, который так любят предустанавливать производители и Google.
После регистрации в Google сразу отключи все виды синхронизации, перейдя в «Настройки → Аккаунты → Google». На сервере от этой синхронизации никакого прока, она будет только мешать. Функции пробуждения при получении уведомления и always on display, а также светодиодный индикатор тоже не нужны. Перейди в «Настройки → Приложения» и отключи весь софт, который возможно отключить. Email, браузер, службы Exchange — все это нам не нужно.
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 можно так:
При подключении на экране смартфона появится одноразовый пароль, который следует указать в приглашении клиента. Это очень безопасный, но не очень удобный способ аутентификации, поэтому рекомендую использовать аутентификацию по ключам. Просто переименуй свой открытый ключ ( id_rsa.pub ) в authorized_keys и положи в каталог ssh на карте памяти.
Bash, nano, tmux, mc
BusyBox содержит только базовый набор утилит командной строки, многие из которых к тому же имеют сильно урезанную функциональность. В BusyBox нет ни bash, ни вменяемых консольных редакторов (Vi в расчет не берем, это не Vim), ни mc и tmux, без которых многие админы не представляют себе жизни.
Если тебе все это нужно, придется установить утилиты самостоятельно. Правильный способ это сделать — скачать компилятор Linaro, исходники утилит и собрать их самому. Быстрый способ — выдрать из уже имеющегося приложения, например из Terminal IDE.
Выбранные утилиты и каталог terminfo скинь на карту памяти смартфона. Затем подключись к нему по SSH и введи следующие команды, чтобы получить возможность модификации системного каталога:
Далее скопируй все нужные утилиты в /system/xbin/ и установи на них бит исполнения (на примере bash):
WARNING
Отключаем энергосбережение
Как и любая другая мобильная ОС, Android всеми силами старается сберечь энергию. Поэтому сразу после отключения экрана он как можно скорее переводит смартфон в режим suspend, при котором прекращается/снижается подача питания не только на экран, но и на сам процессор (аналог suspend to ram в компах).
Нам такое поведение будет только мешать, поэтому его следует отключить. Для этого активируем так называемый wakelock, который заставит систему не переходить в режим suspend:
Wakelock будет оставаться активным, пока жива система, но после перезагрузки его придется активировать снова. В прошивках, основанных на LineageOS/CyanogenMod, это можно автоматизировать. Создай файл со следующим содержимым:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
DLNA для Android: как сделать медиа-сервер для Андроид-устройств?
DLNA – это технология для соединения компьютеров, ноутбуков, телевизоров, планшетов, смартфонов, подключенных к домашней сети, в единую цифровую сеть. То есть, ваши устройства в домашней сети могут обмениваться и воспроизводить в режиме реального времени медиаконтент. Рассмотрим, какое программное обеспечение можно использовать для DLNA-Android.
Общие сведения о DLNA
Для потоковой передачи мультимедиа эта технология подходит наилучшим образом. Качество картинки остается на должном уровне, а пропускная способность и обработка файлов больших размеров полностью будет зависеть от загруженности канала маршрутизатора, характеристик процессора, оперативной памяти и накопителя сервера и клиента.
Клиентом для Андроид, поддерживающим технологию DLNA, может быть любой продвинутый плеер. Лучшими в этом плане можно назвать:
Они позволяют проигрывать и просматривать любой медиаконтент, даже обычные фонографии, загруженные в память телефона через вайбер или ватсап. Но, чтобы открыть доступ к данным на устройстве Android по DLNA-протоколу, нужно установить на нем сервер.
Как смотреть файлы с телефона на планшете или ТВ, рассказывается в следующем видео:
DLNA-сервер
В качестве DLNA-сервера для Андроид рекомендуется использоваться готовые решения в виде программного обеспечения, которые настраивают все за вас. Среди таких выделяются:
Нюансы
Важно, чтобы устройство, с которого вы будете проигрывать медиаконтент, поддерживало работу с DLNA. Если это:
Настройка
Установите на устройство с Андроид приложение, помогающее создать DLNA-сервер. Сделайте следующее:
Важно понимать, что активное подключение к серверу будет расходовать заряд устройства. Поэтому, рекомендуется его поставить на зарядку перед двухчасовым просмотром фильма на телевизоре.
Для включения медиаконтента:
Заключение
Настроить в домашней сети доступ по DLNA-протоколу очень просто. Для этого нужно с помощью специального программного обеспечения открыть доступ к файлам на одном устройстве и по соответствующим протоколам передачи медиаконтента принимать его через проигрыватели на другом девайсе.























