Веб-сервер на Raspberry Pi
Чтобы выложить информацию в открытый доступ, необязательно покупать аккаунт у хостинг-провайдера. Существует много альтернативных вариантов, в том числе бесплатных. Есть бесплатные хостинги для текста, картинок и файлов, начиная с Github Pages.
А если мы хотим держать сайт полностью под своим контролем, то можем разместить веб-сервер на домашнем компьютере, одноплатнике Raspberry Pi или даже на мобильном телефоне. Главное, чтобы устройство всё время было в онлайне.
Веб-сервер на домашнем компьютере
Домашний сервер в винтажном корпусе, источник
Старому компьютеру всегда можно найти применение: он может работать как торрент-клиент и медиасервер (раздавая видео через Plex на все телевизоры, ноутбуки и смартфоны), как файловое хранилище, архив бэкапов, а также как веб-сервер. Нет ничего проще.
Конечно, для стандартного программного стека лучше установить Linux, но и в Windows нет ничего зазорного. По крайней мере, 29,2% серверов в интернете работает под Windows, так что не обязательно менять операционную систему, если на компьютере изначально стояла она, тем более если вам привычно работать с такими инструментами, как ASP.NET и C.
Для простоты можно сразу установить весь комплект программ. Выбираем один из стеков AMP (Apache, MySQL/MariaDB, Perl/PHP/Python) под любую платформу: Windows, macOS, Linux, BSD. Например, комплект WampServer под Windows.
WampServer — это платформа для веб-разработки под Windows для динамических веб-приложений с помощью сервера Apache2, интерпретатора скриптов PHP и базы данных MySQL. В него также входит веб-приложение PHPMyAdmin для простой обработки баз данных.
Устанавливаем софт, получаем у провайдера внешний IP-адрес, прописываем в конфигурации доменное имя, открываем в маршрутизаторе порты 80, 3306 (MySQL), 21 (FTP), 22(SSH) или меняем их на нестандартные для уменьшения мусорного трафика от ботов-сканеров — и всё должно работать.
Подробнее см. статью «Подкроватный хостинг: жуткая практика домашних хостингов», а также большой список программного обеспечения, которое можно развернуть на собственном хостинге.
Хостинг на Raspberry Pi
Алгоритм понятен: нужно поднять веб-сервер на Raspberry Pi и подключить его к сети. Это не какая-то экзотика, а вполне штатное использование «малинки». На официальном сайте даже есть инструкции по установке Apache и Nginx.
Как вариант, веб-сервер можно поднять прямо на маршрутизаторе (с прошивкой OpenWRT).
После установки Nginx проверяем доступность сайта на адресе http://localhost/
на самом Pi или по IP-адресу устройства внутри сети, например, http://192.168.1.10
. Узнать свой внутренний IP-адрес можно командой hostname -I
.
Веб-страницы по умолчанию хранятся в директории /var/www/html
. Заходим туда и размещаем что угодно, заменив стандартные страницы. Адрес страницы по умолчанию прописывается в /etc/nginx/sites-available
.
Кроме Nginx, для более функционального сайта можно установить PHP:
sudo apt install php-fpm
Далее в /etc/nginx/sites-available
находим строчку index index.html index.htm;
и добавляем в середину index.php
, а в середине конфигурационного файла раскомменчиваем следующие строки:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
После этой процедуры перезагружаем конфигурационный файл.
Вообще, Raspberry Pi можно использовать для разных полезных DIY-проектов. Например, сделать настенный календарь, превратить USB-принтер в беспроводной принтер, установить собственный VPN-сервер и многое другое.
В целях эксперимента даже официальный сайт Raspberry Pi (а это большой и посещаемый сайт) однажды захостили на мини-компьютерах Raspberry Pi 3, пришлось соорудить кластер из восьми штук.
Кластер из четырёх Raspberry Pi Model B и одной Raspberry Pi Model B+, общая стоимость системы $183,34 (из другого проекта)
За сутки эксперимента кластер обслужил десятки миллионов посетителей.
Домашний веб-сервер на одноплатном компьютере потребляет совсем немного электроэнергии, для его работы достаточно единственной солнечной панели на балконе. В сентябре 2018 года энтузиаст из Low-tech Magazine запустил эксперимент с таким веб-сервером на одноплатнике Olimex Olinuxino A20 Lime 2, который к настоящему моменту почти бесперебойно работает примерно два года (аптайм около 95%).
Первый прототип солнечного сервера с контроллером заряда
По расчётам разработчика, расход энергии на одного уникального посетителя составляет 0,021 Вт⋅ч.
Упрощённая схема питания веб-сервера. На ней отсутствуют преобразователь напряжения с 12 на 5 вольт и счётчик ампер-часов
Блокчейн и распределённый хостинг
На базе блокчейна создан ряд экспериментальных проектов, в том числе криптовалюты, умные контракты, проверка подлинности документов, электронное голосование и многое другое, в том числе и децентрализованный хостинг. Одним из первых проектов такого рода стал Swarm от разработчика Ethereum Виктора Трона.
Welcome to the Swarm.... Bzzz Bzzzz Bzzzz / o ^ o / ( ) / ____________(%%%%%%%)____________ ( / / )%%%%%%%( ) (___/___/__/ ________) ( / /(%%%%%%%) ) (__/___/ (%%%%%%%) _____) /( ) / (%%%%%) (%%%) !
Децентрализованный хостинг предполагает, что сайт одновременно хранится сразу у нескольких участников сети. Теоретически, это повышает устойчивость сайта против DDoS-атак или государственной цензуры.
Программное обеспечение для работы Swarm выпускалось для всех основных платформ: Linux, macOS, Windows, Raspberry Pi, Android и iOS. Чтобы поднять у себя узел Swarm, нужно было скачать соответствующий бинарник с официальной страницы или поднять Swarm в контейнере Docker.
Однако новые версии для узлов Swarm не выходят с февраля 2020 года, так что сейчас работа сети под вопросом. Разработчики пишут, что они перешли к разработке нового клиента Bee, который основан на более продвинутом сетевом слое (libp2p). Они также считают, что проще переписать систему с нуля, чем исправлять ошибки. Так или иначе, но Swarm и Bee — это интересные эксперименты, которые демонстрируют концептуальную возможность распределённого хостинга.
Можно упомянуть ещё один P2P-проект: хостинг картинок ipfs.pics, основанный на распределённой файловой системе InterPlanetary File System. Он уже несколько лет работает без сбоев. Файлы здесь хранятся в P2P-сети пользователей. Когда картинка закачивается в сеть, для неё вычисляется 46-байтный хэш, который служит уникальным идентификатором файла. Хэш соответствует названию файла. Для загрузки файла достаточно знать его хэш. Например:
http://ipfs.pics/ipfs/QmcT99xWRNDAYunp7Zr8wGiwMKSgVfDpfbXw9hBtLCM4Mm
Файлы в распределённой сети IPFS практически невозможно удалить или заблокировать. Исходный код сервера опубликован на Github.
Чтобы защититься от мусора, сеть раздаёт на хранение новым пирам только те файлы, которые кто-то запрашивает.
Другой P2P-хостинг картинок можно организовать на фреймворке Tornado, если указать файловую систему GridFS. На Хабре публиковалась инструкция, как сделать такой сервис в 30-ти строчках кода.
«Хостинг» на чужих серверах
Если кто-то рискнёт открыть порты на своём компьютере и посмотрит в логи — то сразу поймёт, в какую враждебную среду он попал. Множество попыток сканирования по всем стандартным портам с запросами на установленное ПО. Если не принимать защитных мер, то в софте практически на любом сервере можно найти уязвимости — и получить к нему доступ с правами администратора.
Дальше злоумышленник уже сам выбирает, что делать с ресурсами, которые попали к нему в руки: сделать дефейс ради лулзов, установить майнер криптовалюты, добавить в ботнет для DDoS’а или разместить файлы для распространения. Это и называется «хостинг на чужих серверах» — незаконная опция, которой пользуются злоумышленники.
Например, самый крупный современный ботнет Emotet распространяет свою вредоносную нагрузку через сеть взломанных сайтов, которые бот-мастер с условным именем именем Иван контролирует через свои веб-шеллы, установленные там.
Так же работают некоторые другие ботнеты. В их состав которых входят домашние компьютеры, веб-серверы под Linux, смартфоны, маршрутизаторы и другие устройства интернета вещей, например, умные телевизоры под Android.
На устройствах из ботнета злоумышленник может размещать свои файлы как на своеобразном распределённом хостинге. Это довольно надёжное хранилище, потому что многие пользователи годами не обновляют софт, не используют файрвол и не следят за трафиком.
В общем, собственный хостинг имеет ряд преимуществ. Cервер в подвале или на балконе полностью находится под вашим контролем. Вы устанавливаете любое железо и программное обеспечение, на своё усмотрение. Никому не нужно платить ежемесячную плату за хостинг (даже наоборот, вы и сами можете предоставлять такие услуги). И главное преимущество — всегда интересно узнать что-то новое, в данном случае — освоить некоторые навыки инженера и девопса.
Если же вам нужен надёжный сервер, который работает как швейцарские часы, то милости просим в ВДСину! Только современное и брендовое оборудование, одни из лучших дата-центров в России и Нидерландах, защита от DDoS «из коробки», удобная панель управления серверами собственной разработки и ещё много других плюшек. Поспешите заказать!