Зачем хостить сайт самостоятельно и как это сделать

Зачем хранить свой сайт или сервис у себя — и что для этого нужно в домашних условиях

В большинстве случаев сайты и веб-сервисы размещаются на специализированных хостингах, виртуальных и выделенных серверах. Но несмотря на то, что хостить свой небольшой сайт можно за 100–200 ₽ в месяц (или вообще бесплатно), всё чаще айтишники стараются делать это самостоятельно — и вот почему.

Это интересно. Селф-хостинг — это конструктор: и сервисов, и навыков. Можно начать с основ, постепенно настраивая свой сервер и оснащая его сервисами для хостинга почты, фотографий, виджетов. Например, можно поднять свой сервер в Mastodon и вести «новый Twitter» без страха быть заблокированным.

Это безопасно. Традиционный хостинг может пасть жертвой ограничений. Например, российские пользователи GitHub или Cloudfire часто сталкиваются с блокировками — и личные сайты оказываются недоступны. Ограничить селф-хостинг принудительно не получится, поэтому ваш сайт будет в безопасности.

Автор этой статьи регулярно ведёт блог с 2010 года и успел потерять около 30 постов: прокуратура изъяла у хостинга серверы, на которых хранилась в том числе часть записей блога. В результате потерянные посты удалось восстановить с большим трудом и не полностью.

Что вообще для этого потребуется

Для селф-хостинга сайта потребуется standby-устройство. В простейшем случае подойдёт ноутбук или домашний компьютер.

Однако лучше развернуть селф-хостинг на MiniPC (например, Raspberry Pi или MinusForum). Это небольшое устройство размером с книгу, внутри которого — маломощный компьютер, SSD и сетевое оборудование. На MiniPC удобно размещать свои сайты или сервисы: он всегда доступен, не занимает много места и не тратит много энергии. Конфигурировать его можно удалённо. Такое устройство будет стоить от 20–30 тысяч рублей, подойдёт любое — главное, чтобы на него можно было накатить Ubuntu.

Также вам потребуется стабильный доступ в интернет (Ethernet и выше). Однако есть ещё кое-что, без чего развернуть сайт локально не удастся.

Статический IP

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

Чтобы хостить сайт, нужно сперва настроить DNS-сервер с записями SOA, NS, MX, A, CNAME. Также важно иметь возможность настраивать TTL (time to live), чтобы задавать записям небольшое время существования — до 60 секунд. В противном случае при смене IP-адреса сервера пользователи долго не смогут попасть на наш сервер (из-за кеширования).

Artboard

DNS-сервисы. Проще всего воспользоваться сервисом, где можно указать свой домен и получать А-запись через API. Например, во FreeDNS это бесплатно. Но важно понимать, что подобные сервисы могут незаметно для вас «подмешивать» домены третьего уровня, фактически «паразитируя» на сайтах, которые становятся популярными.

Свой DNS + DDNS. Полезно зарегистрироваться на noip и добавить до трёх поддоменов бесплатно. После этого установите BIND и настройте зоны для каждого поддомена. Лучше зарегистрировать сразу минимум два поддомена, чтобы не столкнуться с ограничениями регистратора:

$sudo apt-get install bind9

$sudo nano /etc/bind/zones.my

zone «domain.ru» {

	type master;

	file «/etc/bind/db.domain.ru»;

};

А после — сконфигурировать (установите $TTL в пределах 60–100 секунд):

;

; BIND data file for local loopback interface

;

$TTL	100

@	IN	SOA	domain.ru. admin.domain.ru. (

			1477015437	; Serial

			10800		; Refresh

			3600		; Retry

			604800		; Expire

			1800 )		; Negative Cache TTL

@	IN	NS	domain.ddns.net.

@	IN	NS	domain.ddnsking.com.

@	IN	NS	domain.myftp.biz.

@	IN	MX	10 mx.yandex.net.

@	IN	A	1.2.3.4

mail	IN	CNAME	domain.mail.yandex.net.

*	IN	CNAME	domain.ru.

Затем укажите свои поддомены:

nameserver1 = domain.ddns.net

nameserver2 = domain.ddnsking.com

nameserver3 = domain.myftp.biz

Не забывайте про необходимость настроить форвардинг портов на вашем роутере:

  • HTTP-TCP — на 80-м порте;

  • DNS-TCP+UDP — на 53-м порте.

Также можно использовать DNS-хостинг от Яндекса: так вы сможете не создавать собственный DNS-сервер, отказаться от DDNS-поддоменов и повысить надёжность работы (поскольку DNS-сервер никогда не будет менять свой IP). Кроме того, Яндекс сам настроит доменную почту.

Что дальше

После того как вы поднимете и сконфигурируете собственный сервер, можно почитать знаменитый список Awesome-Selfhosted и установить столько приложений, сколько захочется. Вот что, например, можно хостить самостоятельно:

  • Собрать собственный доступный из веба умный дом с помощью Home Assistant.

  • Поднять своё хранилище файлов (и отказаться от Dropbox).

  • Создать веб-доступную галерею фото и видео.

  • Поднять локальный GitHub и настроить исполнение cron-задачек.

И сделать для себя и друзей сервис из трёх запрещённых букв для захода на всякие там сайты.

Краткий пересказ от Yandex GPT