Хостим персональный сайт на роутере

Доброго времени суток.

Пару недель назад я решил создать персональный сайт с несколькими страницами о себе, своих достижениях, целях и контактах. Разумеется, одним из этапов его создания стал вопрос выбора хостинга. Отдавать деньги за размещение сайта на чьём-то сервере мне не хотелось, да и оставлять свой домашний компьютер постоянно включенным тоже.

Поразмыслив, я вспомнил интересную статью о настройке сервера ip-телефонии Asterisk на маршрутизаторе Mikrotik. Так как у меня дома установлен роутер именно этого проиводителя, не раздумывая, я решил поднять на нём веб-сервер nginx.

Итак, мы имеем зарегистрированное доменное имя, «белый» статический ip-адрес и маршутизатор Mikrotik RB751G-2HnD c замечательной функцией MetaRouter. Начнём с выбора образа openwrt для нашего маршрутизатора. Зайдём на роутер через программу winbox и посмотрим на его архитектуру. У модели RB751G-2HnD архитектура mipbse:



Скачиваем с сайта последний образ openwrt для mipbse отсюда. Копируем на роутер в Files:



Импортируем образ openwrt в метароутер, и добавляем сетевой интерфейс для нашего виртуального образа:
/metarouter import-image file-name=openwrt-mr-mips-rootfs-31411-basic.tar.gz memory=24 enabled=yes
/metarouter interface add virtual-machine=mr2 type=dynamic dynamic-bridge=bridge_local

Затем входим в консоль образа и первым делом устанавливаем пароль на пользователя root.



Редактируем настройки сети для получения сетевых реквизитов по dhcp от самого роутера:
vi /etc/config/network

config interface lan
option ifname eth0
option proto dhcp

Добавляем службу сети в автозагрузку и перезапускаем:
/etc/init.d/network enable
/etc/init.d/network restart

Мы получили сетевые реквизиты, и теперь у нас есть доступ к системе по ssh.



Редактируем конфигурационный файл пакет-менеджера для обновления репозитория и установки необходимых программ:
vi /etc/opkg.conf

src/gz snapshots http://openwrt.wk.cz/trunk/mr-mips/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay

Далее, обновляем репозиторий и устанавливаем nginx и php:
opkg update
opkg install nginx php5 php5-fastcgi

Переходим к настройке веб-сервера.
mv /etc/nginx/nginx.conf /etc/nginx/nginx_example.conf
vi /etc/nginx/nginx.conf

user nobody nogroup;
worker_processes  1;

error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
	include mime.types;
	index index.php index.html index.htm;
	default_type text/html;
		
	sendfile on;
	keepalive_timeout 65;
	gzip on;	
	gzip_buffers     4 16k;
	gzip_http_version 1.0;
	gzip_comp_level 2;
	gzip_types       text/plain application/x-javascript text/css application/xml;
	gzip_vary on;
	gzip_min_length  1k;

	server {
		listen	80; # слушающий порт
		server_name  172.16.0.12; # имя или ip-адрес сервера
		fastcgi_connect_timeout 300;
		fastcgi_send_timeout 300;
		fastcgi_read_timeout 300;
		fastcgi_buffer_size 32k;
		fastcgi_buffers 4 32k;
		fastcgi_busy_buffers_size 32k;
		fastcgi_temp_file_write_size 32k;
		client_body_timeout 10;
		client_header_timeout 10;
		send_timeout 60;
		output_buffers 1 32k;
		postpone_output 1460;
		root   /srv/www;		# Папка с файлами сайта
		
		location ~ \.php$ {
			fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
			include        fastcgi_params;
			
			if (-f $request_filename) {
				fastcgi_pass    127.0.0.1:1026; 
			}
		}
	}
}

Редактируем параметры php:
vi /etc/php.ini

doc_root = "srv/www"
cgi.force_redirect = 1
cgi.redirect_status_env = "yes";


И проверяем параметры fascgi:
vi /etc/nginx/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

Добавляем службы в автозагрузку и запускаем их:
/etc/init.d/nginx enable
/etc/init.d/nginx start
/etc/init.d/php5-fastcgi enable
/etc/init.d/php5-fastcgi start

Копируем файлы сайта на сервер в указанную папку и проверяем работоспособность сайта внутри локальной сети.
Не забываем поменять http порт нашего роутера и пробросить 80 порт сервера во внешку:
/ip service set port=8080 2 disabled=yes # or no
/ip firewall nat add chain=dstnat action=dst-nat dst-address=внешний_IP-адрес protocol=tcp dst-port=80 to-ports=80 to-addresses=172.16.0.12 in-interface=ether2 disabled=no # in-interface=WAN порт

На этом настройка закончена.

Заключение


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

Ну. И что?
Реклама
Комментарии 52
    +1
    Надо и с другими моделями попробовать, к стати может быть уже пробовали?
      +18
      А ссылочку на сайт, для проверки стрессоустойчивости маршрутизатора от «хабраэффекта»?
        –7
        github pages, bitbucket pages, aws free tier (бесплатный год), google websites
          +19
          автор же не говорит — делайте как я. Автор говорит — если захотите сделать как я, то делайте вот это, это и немножко вот этого. А хотеть или не хотеть — личное дело каждого.
          • НЛО прилетело и опубликовало эту надпись здесь
              +9
              Недостатков сервера «у себя» гораздо больше. Сам отказался от такого варианта лет 7 назад.
                +6
                Этот спор не конкретен, так как никто не назвал ни достоинства, ни недостатки.

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

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

                Что ещё?
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Доводы, конечно, убедительные и это всё действительно так.

                    С другой стороны:
                    1. А надо ли для персонального сайта (речь же в топике идёт именно об этом) большая устойчивость? Там планируется большая посещаемость? Думаю, маловероятно.
                    2. Доплата за «белый» IP? Да, есть такое. Хотя тоже не у всех провайдеров. Тем не менее, если за IP уже и так платишь (скажем, тебе временами нужен доступ извне к домашнему компу), то аргумент слабеет.
                    3. Стоимость электричества? А Вы дома домашний роутер всегда выключаете, когда уходите из дома или ложитесь спать? И всех своих домочадцев к этому тоже приучили? Полагаю, нет. Так что электричества он потребляет одинаково, что с сайтом, что без него.
                    4. Кому придёт в голову DDoS'ить Ваш персональный сайт? Кто будет так заморачиваться? И ради чего?

                    Так что для серьёзного проекта или проекта, который стремится таковым быть/стать, Вы всё верно излагаете. А для баловства (например, такого, как публикация странички о себе любимом) — вполне подойдёт.
                    • НЛО прилетело и опубликовало эту надпись здесь
                +1
                Не увидел в ваших словах лишь нескольких(на мой вгляд — достаточно важных) характеристик.
                Надёжность, безопасность, расширяемость
                Именно из-за них все вменяемые люди заказывают сервер не в зато-дешево.рф, расположенный на чьём-то балконе (который сейчас стоит 5 копеек)
                Именно для обеспечения надёжности и безопасности:
                • Устанавливают системы круглосуточного поддержания постоянной температуры
                • Устанавливают системы мониторинга состояния всех элементов
                • Устанавливают системы резервного энергоснабжения (мощнейшие ИБП, дизель-генераторы на подхвате)
                • Устанавливают резервные каналы с избыточной пропускной способностью
                • Устанавливают противопожарные системы
                • Устанавливают ограниченный доступ

                Что-же касается расширяемости — по статистике более 90% усилий и рабочего времени программистов тратится не на создание нового а поддержание работоспособности старого (стадия «сохранения» ПО). И тут ограниченность роутера сыграет злую шутку.

                Плюс, что делать когда нужно что-то хоть чуть-чуть большее чем 2-3 странички на html? Например хотя-бы sqlite?
                Я уж не говорю о таких «ненужных» вещах как Git либо SVN репозитарий.

                Домашний сервер хорош как сервер для бэкапов, для разработки и отладки кода. Для презентационных вопросов (при наличии статичного IP). Как сервер холодного подхвата в конце-концов.

                И то — это должен быть именно сервер, а не обрезанный со всех сторон, и не со слишком высокой безопасностью роутер. Скажем честно — после подобных «переработок» его безопасность ещё снижается…

                Вы знаете, есть простое правило (в принципе это правило денег):
                — не можешь потратить в месяц $10 на хостинг?
                — значит тебе просто не нужен этот сайт.

                В конце-концов этот роутер стоит около 2 500 рублей. То есть около 38 долларов. Этого хватит на 8 месяцев самой дешёвой (и гораздо более надёжной инстанции на digitalocean.com
                  –1
                  • Устанавливают системы круглосуточного поддержания постоянной температуры
                  • Устанавливают системы мониторинга состояния всех элементов
                  • Устанавливают системы резервного энергоснабжения (мощнейшие ИБП, дизель-генераторы на подхвате)
                  • Устанавливают резервные каналы с избыточной пропускной способностью
                  • Устанавливают противопожарные системы
                  • Устанавливают ограниченный доступ
                  А потом заливают свою homepage с счетчиком и гостевухой )
                    0
                    Задачи ведь могут решаться разные. Не зря даже в названии топика — «Хостим персональный сайт»

                    У меня, например, на роутере поднят веб-сервер с: генератором паролей, картинкой с пары камер наблюдения, данными с метеостанции и еще всякой всячиной. Это не серьезный сайт, который позволяет зарабатывать деньги. Поэтому отдавать за него на регулярной основе деньги хостеру — глупо. А своему провайдеру деньги я итак плачу каждый месяц, роутер итак давно куплен.

                    Безопасность при всем этом никак не нарушается — в web смотрит только директория с /www/ и /ftp/ папками, а ко всему остальному можно получить доступ, только войдя в сеть роутера (по Ethernet, WiFi или VPN).
                      0
                      Ок, давайте посмотрим на один нюанс — отличие вашей постановки задачи и автора:

                      Автор:… персональный сайт с несколькими страницами о себе, своих достижениях, целях и контактах.
                      Вы:… еще всякой всячиной. Это не серьезный сайт, который позволяет зарабатывать деньги.

                      Видите различие целей? Автор пишет о себе, и своих достижениях — это реклама. Вы же просто модифицировали домашний молоток, сделав его более эргономичным.

                      Вот тут-то и есть принципиальное различие: вы не готовы платить доп. деньги за пару эффектных плюшек, которые неплохи но нужны эпизодически а не в режиме в режиме 24*7*365, а автор размещает рекламирующий его как специалиста сайт в аналогичных условиях, экономя $5 на хостинге.
                0
                А как доменное имя прикрепить к такому хостингу?
                  +2
                  А какие могут быть проблемы с доменным именем? IP ведь «белый».
                    0
                    Белый ip + доменное имя ассоциировать с этим ip?
                      +1
                      Я сделал таким образом: купил домен, делегировал его на DNS-хостинг Яндекса (pdd.yandex.ru), заодно получив почту на своем домене. В настройках домена прописал А запись со своим статичным IP адресом. Через несколько часов домен стал отправлять на мой роутер.
                        0
                        А можно и не делегировать ничего яндексу, а просто там, где покупали домен (например, godaddy), прописать A запись, а почту гонять, например, через www.mailgun.com/
                          0
                          Яндекс был выбран, т.к. изначально стояла только задача организации почты на своем домене, а сайт было решено прикрутить уже позже) К слову, у Яндекса все это довольно прозрачно и удобно сделано, мне нравится =)
                            +1
                            Регистрация домена и dns хостинг — разные услуги.
                            Некоторые регистраторы дают dns хостинг бесплатно, некоторые — нет.
                              0
                              Ну так выбор богатый, можно выбрать регистратора с нужным функционалом.
                        +4
                        ИМХО в качестве эксперимента безусловно интересно. Практическое использование видится мне весьма сомнительным при нынешних ценах на хостинг, включая большое количество бесплатных вариантов.
                          0
                          Если это например общий веб-интерфейс управления домашними железками, то зачем вешать его на непонятный хостинг, и открывать соответствующие порты в сеть?
                            0
                            В этом случае, да. Однако автор говорит о личном сайте. И это явно не только для внутреннего пользования. Кстати, более эффективно использовать NAS для внутреннего сайта — там и PHP, и Apache/nginx, и Mysql поднять можно.
                        +2
                        Кстати, можно в таком случае получить и бесплатное доменное имя. Есть такой сервис www.dot.tk.
                        Однако ни в коем случае не используйте его для серьезного проекта.
                          0
                          Было время когда люди не доверяли вообще никаким сайтам в зоне .tk по банальнейшей причине — 90% сайтов там это вирусня и фишинг. Не знаю как с этим сейчас, но учесть это стоит.
                            0
                            А почему не использовать для серьезных проектов? Риск увода домена и требования выкупа? Или?
                              0
                              .tk и еще несколько доменных зон бесплатно предоставляет хостинг freenom.com, но пользоваться их бесплатными услугами никому не советую ибо есть такая фича как обязательное требование в подтверждении регистрации домена в течение 2 недель каждый год. Стоит просрочить подтверждение и все — домент тютю. Также он тютю если кто-то просто его выкупит по обычной стоимости.
                            +1
                            Есть один очень неприятный нюанс на, по крайней мере, Mikrotik RB2011UiAS-2HnD-IN:

                            После перезагрузки настроенная и работающая (обеспечивающая сервисы) виртуальная машина (на MetaRouter) просто перестает работать. Один дотошный человек провел исследования и выяснил, что после перезагрузки исчезает часть строк из вирт. машины. Я много экспериментировал с ними — веб-сервер, Asterisk, и прочее. После 1-2 перезагрузок машина перестает работать. Меня достали разочарования, и я достал старенький ПК и поднял сервер в серой сети.

                            Либо дело в прошивке — но я не знаю, какая не обладает для моего маршрутизатора этой особенностью.
                              –2
                              Дело в прошивке головы. Можно и электронным микроскопом гвозди забивать, и лазером ямы копать.
                              Вопрос лишь зачем?
                              0
                              А вы не смотрели в сторону опенсорсных прошивок? В них есть вполне себе штатные возможности настройки серверов
                              DD-WRT
                              http://www.dd-wrt.com/wiki/index.php/WEB_server
                              OpenWRT (тут даже целый набор серверов на выбор)
                              http://wiki.openwrt.org/doc/howto/http.overview
                                +3
                                >Пару недель назад я решил создать персональный сайт с несколькими страницами о себе, своих достижениях,
                                >целях и контактах. Разумеется, одним из этапов его создания стал вопрос выбора хостинга.
                                >Отдавать деньги за размещение сайта на чьём-то сервере мне не хотелось,
                                >да и оставлять свой домашний компьютер постоянно включенным тоже.

                                Развидеть, развидеть, развидеть.

                                P.S Бот.
                                  0
                                  На прошивке V1 для кинетиков можно было поднять, да думаю еще много на чем. Сам так делал. Но вообще хостинг сейчас стоит ну совсем не дорого. Если учесть, что статический IP стоит денег, то не уверен, что это такое уж хорошее решение. Кстати сайт можно поднять еще на кучи устройств которые можно подключить к сети.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      +1
                                      Я бы вообще не связывался с не х86 системами

                                      А как же ARM?
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                      +1
                                      Прочитал. Сижу думаю, может мне статический IP зароутить на часы и на них сайтик-то поднять? Или даже интересней — сайтик на контроллере вентиляции и отопления хостить! С чатиком, блекджеком и прочей «нужной» дребеденью… Извините, просто не удержался.
                                        0
                                        Легко! Достаточно поднять контроллер вентиляции на роутере :)
                                          0
                                          Не проблема, vps + туннель между ним и часиками, и ваши wear устройства начнут окупать себя! :)
                                            0
                                            А в чем проблема-то? Хостил несколько лет DC++-хаб на 20 человек на роутере с 32МБ оперативки. Работало достаточно стабильно.
                                            0
                                            Спасибо, интересно!
                                            Я тоже пробовал нечто подобное, но на OpenWrt. Нам были нужны небольшие временные landing page.
                                              0
                                              Пару недель назад я решил создать персональный сайт с несколькими страницами о себе, своих достижениях, целях и контактах.
                                              В случае роутера, рискуете получить лежачий сайт с достижениями в неподходящий момент.
                                              А если ради фана, роутер за 2500 — это перебор.
                                              Можно же взять дешевый tp-link за 800-1000 р. + *wrt
                                                0
                                                А если ради фана, роутер за 2500 — это перебор.
                                                Можно же взять дешевый tp-link за 800-1000 р. + *wrt

                                                С таким подходом Интел это тоже перебор, можно же взять дешёвый АМД.
                                                Для меня переплата в 1500 р. раз в 3-5 лет не является проблемой(хотя в данный момент переплата скорее будет ближе к 3000 р.)
                                                Поставил RB951G себе, родителям и паре знакомых, после этого тема маршрутизаторов перестала всплывать во время разговоров, для меня этого достаточно.
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    +1
                                                    По-моему, всё вполне однозначно, за те же деньги AMD всегда лучше.
                                                    А вот когда нужна максимально возможная производительность, можно заплатить существенно дороже и взять какой-нибудь Extreme i7.
                                                    +1
                                                    Для меня переплата в 1500 р. раз в 3-5 лет не является проблемой(хотя в данный момент переплата скорее будет ближе к 3000 р.)
                                                    Тогда следите за руками.
                                                    На lowendbox.com/ можно найти виртуалку за 1-2 $ в месяц.
                                                    И тут стоимость переплаты за роутер становится эквивалентна оплате VPS за год-два.
                                                    А даже самая дешевая VPS куда лучше нормального домашнего роутера.
                                                    Но for fun это вполне оправданно.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        Вообще пост был про установку сайта на роутере.
                                                        Где вы нашли про выбор процессора?
                                                        Может вы путаете пост с комментом?
                                                  0
                                                  По поводу хостинга на микротике
                                                  Это плохая идея. Встроенный в него webserver подходит только для статики, и используется для создания hotspotoв в основном (но кстати очень успешно) и заточен на работу с ip\mac абонента, а не с логикой. Хотя вэб-приложение на Angular с parse.com в роди бэка заработает хорошо.
                                                  По поводу применения MetaRouter. Это технология виртуализации в микротиках, причем очень крутая… Нужна она за тем чтобы виртуализтровать микротики внутри микротика. Грубо говоря я каждому абоненту включенному в сеть могу дать персональный микротик для управления его сеткой, qos etc. Это очень круто, и на самом деле на мой взгляд микротик феерически ошибается, с тем, что не поддерживает HyperV нормально, в котором с сеткой проблемы, т.к на нем сделать управление сеткой для клиентов в ДЦ (виртуальном) к примеру супер. В Том году Микротики выпустили стоечные CCR, CRS — роутеры и свичи для ДЦ, которые вообщем то на это и рассчитаны, но в железном варианте.
                                                  Окончим лирику, и по сути выясняем что архитектура процессоров микротиков железных MipsBE, Tile, и только иногда x86. Это значит что версия того что запускается в метароутере должно быть собранно под туже архитектуру (собери asterix под 36 ядерный tile), стандартный php или ngnix под эту архитектуру найти — та еще задачка.
                                                  Сам микротик выпустил DD_WRT собранный для ARM с поддержкой metarouter, то есть только для небольшой линейки микротиков. И любители пересобрали на него часть пакетов типа asterix. Но во первых это не самые новые пакеты, во вторых нет саппорта на такие костыли. А теперь к проблеме. Crash metarouter = ребут микротика. Даже читсый DD_WRT с всего лишь WINS сервером на борту крашился у меня дважды в день… Что как бы говорит о ненадежности. Поэтому запуск чего-то отличного от микротика в метароутере очень чревато.

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

                                                  Самое читаемое