Как получить бесплатный хостинг?

Кстати, это один из самых популярных запросов в поисковых системах посвещеных хостингу, кроме этого, пользователии еще ищут «бесплатный VPS сервер», «бесплатный VPS windows», «бесплатный хостинг и домен». Что я могу сказать по этому поводу? — Это лажа. Вы нигде не найдете такую халяву, чтобы вам дали сервер на блюдечке с голубой каёмочкой и еще даром. Пффф.. :) Но я попытаюсь раскрыть этот вопрос так, чтобы прояснить детали и показать способ все-таки как-то получить желаемое с минимальными затратами.

Шаг первый. Требования

Моя задача была в том, чтобы разместить 2 небольших сайта в интернете. Это сайты, которые не приносят никакого дохода, поэтому вкладываться деньгами в это тоже не было смысла. Поиски в интернете по теме бесплатных хостингов показали, что они действительно существуют. Везде есть свои ограничения, какие-то неудобности или реклама. Я этого не люблю и осуждать тоже не могу потому, что сервера работают, потребляют электричество, их обслуживают администраторы. За все надо платить.
Было принято решение хоститься дома.

Что нам потребуется, чтобы развернуть свой мини хостинг дома:

  • Внешний IP адрес
  • Сервер
  • Прямые руки и голова на плечах

Какими характеристиками должен обладать наш хостинг:

  • Низкое энергопотребление
  • Низкий уровень шума
  • Компактные размеры
  • Низкое тепловыделение == низкая пожароопасность
  • Достаточная производительность
  • Быстрый отклик пользователю

Смотрю на это список, самому смешно становится — сферический сервер в вакууме :)
Теперь вкатце разберем каждый пункт, всё должно быть оправдано иначе придется купить хостинг. Так будет проще :)

Энергопотреблнение. Если сервер будет «жрать» много электричества, то это не годится.
Шум. У вас есть в квартире кладовка, где можно поставить шумящий сервер? У меня нет. Со времен общежития я уже отвык спать в шуме куллеров, поэтому нам необходимо, чтобы у сервера было пассивное охлаждение или ну очень тихие куллеры.
Размеры. Опять таки, если у вас есть хорошая кладовка — можно не обращать на это внимания. Иначе — обязательно что-то компактное.
Пожароопасность. Система не должна перегреваться, иначе такой сервер должен быть под постоянным присмотром. В квартире с такой штукой даже спать будет опасно.
Производительность. Всё должно быть взвешено. Если вам надо хостить сайт визитку то, абсолютно незачем держать работающий Core i7 или xeon круглые сутки. В вашей системе должен быть запас лишь ~15-20% в производительности.
Отклик пользователю. Необходимо оптимизировать все так, чтобы посетители вашего ресурса ждали не больше 2х секунд для открытия. Тут уже можно поколдовать.

Шаг второй. Выбор платформы

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

Это может быть:

  • raspberry pi
  • неттоп или другой мини компьютер
  • старый нетбук
  • сетевое хранилище
  • сетевой роутер

В моём случае нашелся роутер ASUS RT-N13U состояния кирпича. Я его перепрошил на OpenWRT и установил Lighttpd + php. О восстановлении и настройке напишу в другом посте.
Из характеристик этого роутера:

  • Процессор 384 МГц
  • RAM 64 Mb
  • Память 4 Mb + 4 GB флешка
  • 100 mbit LAN

Этих данных полностью хватает, чтобы отдавать статику посетителям сайта за 48 ms, это очень хороший показатель. Конечно я немного лукавлю, так как что-то наподобие WordPress работает на этом роутере несколько туго. Мои эксперементы показали, что роутер страницу на WordPress собирает не меньше, чем за 4 секунды, что непозволительно долго. А если добавить разных плагинов — просто не хватит памяти.

И тем не менее я нашел вариант как хостить этот блог на роутере.
Тут большой инновации нет :) Идея была сгенерирована из одного тз к тому, что надо было максимально дешево хостить сетку сайтов на статическом хостинге, прибегая к php шаблонизаторам. Я выбрал крайне простой вариант. Все пользуются разными серверными пакетами для локальной разработки такими как Denwer, OpenServer, XAMPP.
На локальной машине был развернут блог, сюда вносятся различные изменения, а после все выливается с помощью wget в статике, которую будет отдавать Lighttpd.
Многие могут найти в этом подходе много изьянов, но мне пока на это наплевать. Посты я выкладываю не часто, комментарии организованы за счет Вконтакте, мне их даже хранить у себя не надо, функций, требующих динамики от моего сайта пока что нет.
Более того — второй «сайт» это на данный момент просто статичная html страница с моими контактами. Так спрашивается зачем же платить каждый месяц за то, что не приносит прибыли?

Формула расчета месячной стоимости вашего хостинга в течение одного года получается примерно такой:

Цена_сервера + Цена_IP + Расход_электричества / 12 месяцев

Роутер достался мне бесплатно. Но прикинем около 500 грн (~ $19.2 ). У многих он и так по любому дома уже есть, поэтому в некоторых случаях можно даже не учитывать.

Внешний IP мой хостинг провайдер даёт бесплатно. В месяц, это 120 грн (~ $4.6). Интернетом я пользовался бы в любом случае, поэтому цену на него я даже не учитываю.

Расход электричества, судя по блоку питания, 12 ватт в час, в месяц 0.012 * 24 * 31 = 8.928 квт , за год 107 кВт. В Украине 1 КВт на 1.09.2016 стоит 71,4 коп. В год это выходит 76,39 грн (~$2.9) Опять таки, если у вас и так стоял роутер и вы пользуетесь им для доступа в интернет, можно не учитывать эту цифру сюда.

Итого — получается, что расходы от 0 до 170.6 грн в месяц в течение первого года.
Может быть не особо убедительно, ведь можно за $6 в месяц приобрести хостинг. Для меня было убедительно. Ведь все равно почти у каждого есть роутер с интернетом, сейчас никого не удивишь шириной канала в 100 мегабит а у многих уже 1 гигабит дома есть. Всё равно эти расходы уже существуют, значит их нужно оптимизировать, пусть железки трудятся. Но есть еще способ как сделать это более выгодным, надо возложить больше функциональности на сервер и чем больше её будет тем более экономичеки целесообразной затеей это будет. На OpenWrt можно организовать довольно много разных плюшек, но это уже другая история.