Как превратить старый телефон в веб-сервер
Руководство по использованию старого Android-смартфона в качестве домашнего сервера с помощью postmarketOS.
О чем пойдет речь
Эта веб-страница размещена на старом Fairphone 2 2015 года, который лежал в ящике стола, под управлением postmarketOS ↗.
В этом руководстве мы пройдем через шаги, необходимые для достижения этого результата.
В итоге вы получите небольшой домашний сервер, способный запускать базовые сервисы.
Мы стремимся сократить количество электронных отходов, поощрить повторное использование и дать вторую жизнь забытым чипам.
Вам понадобятся:
- Неиспользуемый Android-смартфон
- Зарядное устройство и источник питания
- Wi-Fi соединение
- Компьютер с Linux (нативно или в виртуальной машине)
Шаг 1: Установка postmarketOS
Первый шаг — установка postmarketOS на ваш телефон.
Найдите свое устройство на странице устройств ↗ и убедитесь, что оно поддерживается должным образом.
Держите эту страницу открытой на протяжении всего процесса установки.
Установите pmbootstrap ↗, основное консольное приложение для postmarketOS.
Сначала мы сгенерируем образ, а затем прошьем его на устройство.
Генерация образа
Обновите порты и инициализируйте информацию о вашем устройстве:
$ pmbootstrap pull
$ pmbootstrap init
При запросе кодового имени устройства укажите то, которое указано на странице вашего устройства, открытой ранее.
При запросе интерфейса пользователя можно выбрать console (самый минималистичный вариант) или fbkeyboard для наличия минимальной клавиатуры на экране (она не должна понадобиться благодаря SSH, но на всякий случай, это забавно).
Сгенерируйте образ:
$ pmbootstrap install
Прошивка образа
Проверьте на странице устройства, как загрузить его в режиме прошивки (flash mode).
Обычно это означает включение устройства с зажатой кнопкой уменьшения громкости (“volume down”).
Подключите телефон к компьютеру и загрузите его в режиме прошивки.
Затем проверьте раздел Installation на странице устройства и следуйте инструкциям.
Наконец, если вы еще этого не сделали, прошейте образ на устройство:
$ pmbootstrap flasher flash_rootfs
Затем перезагрузите устройство и убедитесь, что postmarketOS запускается корректно.
Шаг 2: Настройка сервера
Теперь, когда на телефоне установлена postmarketOS, давайте войдем в систему.
Комбинация имени пользователя и пароля по умолчанию в postmarketOS: user / 147147.
Оставьте телефон подключенным к компьютеру и подключитесь по SSH:
$ ssh user@172.16.42.1
Подключите телефон к вашей Wi-Fi сети:
$ nmcli device wifi connect your_wifi_network --ask
Поздравляем, теперь у вас официально есть маленький локальный телефонный сервер.
Выполнение следующей команды должно показать локальный IP-адрес телефона:
$ ip -4 addr show wlan0 | grep inet | awk '{print $2}' | cut -d'/' -f1
На типичном домашнем роутере он будет иметь вид 192.168.1.x.
Теперь можно подключить телефон к питанию в безопасном месте и подключаться к нему по Wi-Fi:
$ ssh user@192.168.1.x
Шаг 3: Размещение веб-страницы
Создайте директорию /var/www/html/:
$ sudo mkdir -p /var/www/html/
Напишите простой HTML-файл “hello world”:
$ sudo sh -c 'echo "<h1>hello world</h1>" > /var/www/html/index.html'
Добавьте правило nftables для разрешения входящих пакетов на порт 80 в файл /etc/nftables.d/99_http.nft:
inet filter input tcp dport 80 ct state new accept
Затем перезапустите nftables:
$ sudo systemctl restart nftables
Запустите веб-сервер следующей командой:
$ httpd -h /var/www/html/
Проверьте сервер, выполнив curl запрос с вашего компьютера:
$ curl 192.168.1.x
Вы должны увидеть текст <h1>hello world</h1>.
Теперь введите IP-адрес в веб-браузере любого устройства, подключенного к той же Wi-Fi сети, и наслаждайтесь своим собственным крошечным локальным цифровым садом.
Обратите внимание, что этот HTTP-сервер не будет автоматически перезапущен, если телефон перезагрузится по какой-либо причине.
Дополнительно: Удаленный доступ
В качестве превентивной меры безопасности я рекомендую не открывать порт 22 (используемый для SSH) для широкого интернета.
Вместо этого настройте VPN-доступ к вашему роутеру (большинство поддерживают это в веб-интерфейсе), если вам нужен удаленный доступ.
Подключившись к локальной сети, вы сможете получать доступ к телефону по SSH, как и раньше.
Если вы знаете, что делаете, и все же хотите открыть порт 22 в интернет, не забудьте отключить вход по паролю и настроить SSH-ключи.
Дополнительно: Обслуживание
Для обновления пакетов на вашем сервере выполните:
$ sudo apk update
$ sudo apk upgrade