sonyps4.ru

Программа для хостинга на своем компьютере. Как сделать бесплатный хостинг на своем компьютере

Здравствуйте, уважаемые читатели хабра. С данного материала мы начинаем серию публикаций о том, как построить VPS-хостинг с нуля на базе RUVDS White Label API .

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

Вам нужен сайт


Чтобы организовать ваш собственный VPS-сервис Вам в первую очередь понадобятся 2 вещи - сайт, на котором вы будете предлагать услуги аренды VPS-серверов и поставщик услуг, предоставляющий Вам для этих целей выгодные партнёрские условия, свою инфраструктуру и надежное API с широкими возможностями. Что же такое API? Это некий интерфейс, используя который вы сможете предоставить Вашим клиентам все те же возможности по управлению серверами, что и предоставляет Ваш поставщик услуг своим клиентам.

Интегрировать сайт с вашим VPS -провайдером посредством API будет намного дешевле и быстрее, чем создавать свою облачную инфраструктуру с нуля, так как он в этом случае «берёт на себя» множество вопросов: не нужно заботиться о наличии достаточного количества ресурсов у провайдера, о том, как организовать широкий и отказоустойчивый канал для доступа в интернет с виртуальных серверов, как собирать и хранить данные об использовании ресурсов серверами и так далее.

Теперь о сайте. Здесь может быть много вариантов, мы перечислим самые распространённые:

  • вы владелец сайта, который предлагает смежные услуги (проверка / регистрация доменов, аренда DNS-сервера, удалённое администрирование серверов).
  • вы создаёте ваш сайт с нуля с использованием популярной CMS и плагинов к ней.
  • вы заказываете сайт у веб-студии
  • впишите свой вариант
Первый - наилучший вариант, так как для того, чтобы добавить новую услугу аренды VPS-серверов, доработок понадобится совсем немного: не придётся писать с нуля многие вещи, которые перечислены ниже. При создании вашего сайта с нуля, сроки запуска могут существенно измениться в худшую сторону. Вам нужно будет самостоятельно реализовать все компоненты из списка ниже (или воспользоваться реализациями сторонних разработчиков, предварительно протестировав и адаптировав их под ваш проект). Воспользоваться третьим вариантом мы рекомендуем только в случае недостатка у Вас необходимых знаний по созданию сайтов или невозможности сделать Ваш сайт таким, каким вы хотите.

Стартуем


Что должно быть реализовано на этом сайте?

Регистрация, аутентификация / авторизация пользователей, восстановление паролей, форма обратной связи.

Это есть у всех без исключения хостинг-провайдеров. Ваш будущий клиент обязан иметь возможность зарегистрироваться, восстановить пароль в случае его утраты, иметь личный кабинет на сайте с актуальной информацией о его балансе, купленных серверах и т.д. Также, ему обязательно нужно предоставить возможность сообщить о возникшей проблеме в технической поддержку. Для того, чтобы избежать массовой регистрации «фэйковых» аккаунтов, мы рекомендуем не пренебрегать средствами дополнительной защиты, вроде капчи на формах, а также сохранять о пользователе максимальное количество доступной информации, которая может помочь в случае выявления каких-либо нарушений с его стороны. В данном случае, есть множество готовых решений, требующих небольших доработок. Если вы планируете создавать ваш сайт на основе CMS, то вышеописанная функциональность в ней или какой-то степени реализована, или же легко подключается с помощью плагинов.

Управление личными данными клиента

Должно быть в какой-то мере реализовано, однако можно обойтись и без этого. Данная функциональность не является блокирующей запуск вашего сервиса.

Управление серверами клиента

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

Возможность использования тестового периода

Очевидно, что для первоначального продвижения вашего нового сервиса VPS-хостинга Вам понадобиться реализовать возможность использования тестового периода. Это необходимо для того, чтобы ваш клиент мог сам решить, насколько объявленная вами цена за аренду VPS соответствует качеству, предоставляемых вами услуг. Что нужно учесть при реализации? В первую очередь, нужно выбрать количество дней. Не стоит делать тестовый пеериод слишком длинным - на вашем сервисе будут регистрироваться клиенты, которые просто хотят заполучить бесплатный сервер на определённый срок, а после того, как тестовый период завершится, зарегистрируют новый аккаунт и попытаются воспользоваться тестовым периодом снова. Для того, чтобы в какой-то мере обезопасить Вас от таких клиентов, вам обязательно нужно научиться их идентифицировать. Это особенно важно на начальном этапе развития вашего сервиса, как из-за каждого такой клиента вы будете недополучать потенциальную прибыль. Следует также учитывать, что длинный тестовый период будет Вам не слишком выгоден, так как на вашем партнёрском аккаунте, к которому привязываются все созданные вами сервера, тестового периода нет.

Биллинг

А как клиенты будут пополнять баланс и покупать сервера? Разумеется, нам понадобится ещё один очень важный компонент, это биллинг. Что мы включаем в понятие «биллинг»? Безусловно, в него входит создание / редактирование текущих тарифов, интерфейсы для приема платежей клиентов, внутренние механизмы обработки платежей, создание акций / скидок, средства мониторинга.

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

Разумеется, до интеграции с платёжным агрегатором, Ваш сайт должен удовлетворять определённым требованиям. В качестве примера можно привести требования у платёжного агрегатора paymaster:

  • сайт должен быть полностью заполнен информацией, функционировать;
  • сайт должен состоять более чем из одной страницы;
  • на сайте должна быть размещена информация о реализуемых товарах и услугах, а также о стоимости этих товаров и услуг;
  • сайт не должен быть размещен на бесплатном хостинге;
  • товары и услуги, предлагаемые на сайте, не должны противоречить действующему законодательству РФ и международному праву;

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

Финансовый аспект


Мы подошли к одному из самых важных аспектов (если не самому важному) - финансовому. Работать с Вашим поставщиком VPS-услуг должно быть выгодно. Давайте, посчитаем, почему организовывать сервис аренды VPS-серверов, выбрав в качестве поставщика услуг провайдера RUVDS выгодно.

Возьмем наиболее популярные конфигурации VPS на базе операционной системы Windows Server 2012 R2 и приведём некоторые данные, которые мы получили при анализе рынка VPS-услуг в России по состоянию на февраль 2016:


Конфигурация

1

2

3

4

5

Количество процессоров

1

2

4

6

8

Объем оперативной памяти, Гб

1

2

4

8

16

Объем диска, Гб, HDD

20

40

120

300

600

Количество адресов IPv4

1

1

1

1

1

Текущая цена конфигурации

При оплате за месяц

300 р.

600 р.

1400 р.

2980 р.

5720 р.

При оплате за год

2880 р.

5760 р.

13440 р.

28608 р.

54912 р.

Для того, чтобы оценить ваш потенциальный заработок, приводим выигрыш по цене конфигураций перед усреднённой ценой конкурентов:

Также, не забываем, что у нас есть расходы на выплату комиссии за перевод и вывод платёжным системам.

Текущая скидка на создание серверов с помощью API составляет 10% .
Как оценить потенциальный заработок с одного сервера заданной конфигурации, купленного на месяц? Можно воспользоваться следующей формулой:
Заработок = Тек. цена RUVDS * 10% + Разница с усреднённой конфигурацией - Расходы на выплату комиссий.

Пример расчета для конфигурации 3:

Заработок = 1400 * 0.1 + 794 (округляем в меньшую сторону) -240 = 694 рубля .

Это заработок с одного сервера. При покупке вашими клиентами 25-30 серверов такой конфигурации, вы выходите на сумму заработка уже в 20 тысяч рублей в месяц .

В следующих статьях мы расскажем в деталях о возможностях

Знакомьтесь - Демьян. Начинающий русский блогер, которому надоело постить свои записки на Тамблере и он хочет свой сайт. Вот только Демьян - жадный. Настолько жадный, что ему жалко $3 в месяц за хостинг.

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

В этой статье, мы расскажем о том, как Демьян делал себе хостинг. А также о том, почему скупой платит дважды.

Подготовка

Превратить компьютер в хостинг Демьян сможет где-то за час. Но сначала ему нужно подготовиться.

Компьютер

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

Покупать компьютер в местных магазинах Демьян не хочет - все знают, что местные цены выше! Поэтому он заходит на буржуйский http://pcpartpicker.com и, оплакивая свои кровные, собирает себе системный блок. Останавливается Демьян на двухъядерном Pentium G4560 и 4 ГБ ОЗУ, что обходится ему в $250. Еще $50 он тратит на доставку.

Увидев цены на Виндоус, Демьян падает в обморок. Но с Линукс Демьян вообще не дружит и знакомиться не хочет. Он скачивает пиратскую Виндоус и устанавливает её, обещая купить лицензию потом - с первой прибыли.

Интернет

Без хорошего интернета Демьяну не обойтись - как же еще к нему будут заходить толпы восторженных читателей? А нынешние 10 Мбит/с даже YouTube ему нормально посмотреть не дают.

Тоскливо вздыхая, Демьян ходит по провайдерам в поисках дешевых 100 Мбит/с. Узнав, зачем ему такой канал, все провайдеры тут же тыкают пальцем в Соглашение Пользователя и предлагают только специальные тарифы для хостинга - в 5 раз дороже. А некоторые вообще хостинг не разрешают. Наконец, Демьян находит нового провайдера, который готов подключить его хостинг за 500 рублей в месяц - но только на первое время.

Там же Демьян подключает выделенный IP-адрес. Это обходится еще в 100 рублей в месяц.

Установка серверного ПО

Собрав свою машину и подключив к ней найденный на барахолке монитор, Демьян наконец приступает к работе. Почитав форумы, он узнаёт - чтобы его хостинг работал с современными CMS, нужны специальные программы - сервер Apache, PHP, MySQL, PHPMyAdmin и т.д.

Можно скачать их и установить по одной - но это долго, сложно и может привести к конфликту версий. К счастью, Демьяну показывают набор программ, который всё установит и настроит за него - Wampserver .

Полчаса спустя Демьян разбирается в том, как правильно установить Wampserver, регистрирует домены, подключает их к серверу, и довольно потирая руки начинает устанавливать WordPress.

Рентабельность

Давайте посчитаем, сколько денег Демьян умудрился сэкономить:

  1. Электроэнергия . Средний тариф на электроэнергию по России - 5,31 р/кВт*ч. Средний компьютер потребляет около 600 Вт*ч. Это значит, что только за электричество Демьян платит 2300 рублей в месяц.
  2. Интернет. 100 Мбит/с стоят Демьяну 500 рублей в месяц + 100 за IP. И ему еще очень сильно повезло с щедрым провайдером.

Отсюда получаем, что выделенный сервер обходится Демьяну в 2950 рублей в месяц.

При этом:

  1. Нет техподдержки. Все проблемы решает сам Демьян, пользуясь инструкциями и форумами.
  2. Демьяну снятся кошмары о счетах за электроэнергию. Хорошо еще, что у него однотарифная система и ему не приходится платить за перерасход.
  3. Наличие блога в интернете зависит от городской электросети.
  4. Нелицензионная Windows на сервере вынуждает Демьяна дергаться при каждом дверном звонке.

А Unihost предлагает примерно такой же сервер всего за 2500 рублей в месяц, без всех вышеперечисленных проблем. То есть Демьян «обул» себя сам на 450 рублей в месяц, а также получил проблемы с законом.

У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

В то-же время в наличии имеется:

  • Домашний сервер на Ubuntu
  • Быстрый ethernet-интернет от МТС
Но не имеется ключевого - статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com , но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).

Что делать?

Я не буду останавливаться на том, как настроить linux сервер (и тем более как его выбрать), поскольку предполагаю, что он у вас уже есть. Также я не буду подробно расписывать настройки nginx и Apache, поскольку опять-таки предполагаю, что вы с этим справитесь самостоятельно.

Первое с чем у меня возникли проблемы - это как перенаправить посетителей с моих доменов (у меня есть 2 домена) на мой домашний сервер. То есть чтобы клиент который набрал domain.com попал ровно на мой домашний сервер с учетом того, что на нем каждый день меняется IP-адрес.

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

Итак, нам нужен DNS сервер, варианты решения:

Рассмотрим оба варианта.

Используем сервисы которые предоставляют нам DNS-хостинг

Для этого есть ряд бесплатных сервисов, из которых самым популярным является freedns.afraid.org . На таких сервисах можно добавить свой домен(ы) и получить возможность через API обновлять у них A-запись при помощи небольшого скрипта.

Выглядит вполне неплохо, но подвох в том, что эти сервисы оставляют за собой право довешивать к вашему домену поддомены третьего уровня. То есть вы зарегистрировали у них user.ru, а они спокойно довешают свои сайты вида hello.user.ru, shop.user.ru и так далее. Разумеется от этого можно отказаться, но… за деньги. Платить деньги за такие сервисы смысла я не вижу, поскольку за сравнимые деньги вы можете купить полноценный хостинг на каком-нибудь провайдере без всяких плясок вокруг DNS настроек.

Остальные сервисы рассматривать не будем, а сосредоточимся на втором варианте.

Используем собственный DNS-сервер в связке с DDNS-доменом

Для этого варианта у нас, во-первых, должен быть DDNS-домен (который обновляется при смене IP), например, domain.ddns.net, а во-вторых, придется установить и настроить BIND на нашем сервере.

Всего необходимо сделать ровно 5 шагов. Везде под словами «domain» или «domain.ru» подразумевается ваше имя домена (короткое или полное).

1. Настроить 2 или 3 DDNS-поддомена
Почему 2 или 3? Потому, что ряд регистрантов не разрешит вам использовать домен только с одним NS-сервером. Самое обидно, что не все про это скажут - ваш домен просто не будет работать, но вы не будете понимать почему.

Тут все просто - идем на noip.com , там регистрируем аккаунт и добавляем 3 бесплатных поддомена (больше 3 не даст).

2. Настраиваем собственный DNS-сервер
Устанавливаем BIND:

$ sudo apt-get install bind9
Создаем зоны (по одной зоне на каждый наш домен):

$ sudo nano /etc/bind/zones.my
с содержимым:

Zone "domain.ru" { type master; file "/etc/bind/db.domain.ru"; };
и собственно файл с настройками зоны:

$ nano /etc/bind/db.domain.ru
и пишем внутри:

; ; BIND data file for local loopback interface ; $TTL 60 @ 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.
Примечание: обращаю внимание, что TTL устанавливаем равным 60 секунд. В файле /etc/bind/named.conf.local добавляем подключение нашей зоны:

Include "/etc/bind/zones.my";
Все, рестартуем BIND:

$ sudo service bind9 restart
И глянем /var/log/syslog чтобы там не было сообщений об ошибках

3. Настроить наш домен(ы)
Идем в панель управления регистратора и там в настройках нашего домена в качестве NS-серверов указываем созданные DDNS-поддомены:

Nameserver1 = domain.ddns.net nameserver2 = domain.ddnsking.com nameserver3 = domain.myftp.biz
После этого возможно придется подождать несколько часов (или даже сутки) пока настройки среплицируются между всеми серверами.

4. Настроить периодическое обновление IP-адресов
Мой роутер поддерживает обновление IP-адреса на одном домене, но мне нужно это делать сразу для 3-х доменов. Плюс нам надо обновлять IP-адрес в конфиге BIND"а, поэтому напишем скрипт который будет делать:
  1. Определять наш внешний IP-адрес
  2. Проверять изменился ли IP адрес, если не изменился, то ничего делать не надо
  3. Обновлять IP-адрес у всех DDNS-поддоменов через API сервиса noip.com
  4. Прописывать новый IP адрес в конфиг BIND"а
  5. Перезапускать BIND
Сам скрипт пусть будет на шелле:

#!/bin/sh # This script works via noip.com service + local Bind server # Settings ZONES_CONFIG=zones.my IP_FILE=./current_ip.txt DDNS_USER=user DDNS_PASS=password DDNS_HOST=domain.ddns.net DDNS_HOSTS=domain.ddns.net,domain.ddnsking.com,domain.myftp.biz # Start DATE=$(date +"%Y-%m-%d %H:%M:%S") # detect an external IP IP=$(dig +short $DDNS_HOST) if [ $? -ne 0 ] || [ -z $IP ] || [ $IP = "0.0.0.0" ] ; then echo "$DATE Can"t detect a remote IP. Aborting." exit 1 fi # verify IP changing PREV_IP="(unknown)" if [ -e $IP_FILE ] ; then PREV_IP=$(cat $IP_FILE) fi if [ $IP = $PREV_IP ] ; then echo "$DATE IP "$IP" has not changed" else echo "$DATE IP has been changed from "$PREV_IP" to "$IP"" echo "$DATE IP will be updated on DDNS server" /usr/bin/curl -u $DDNS_USER:$DDNS_PASS "https://dynupdate.no-ip.com/nic/update?hostname=$DDNS_HOSTS&myip=$IP" fi echo $IP > $IP_FILE # check BIND config cd /etc/bind if [ ! -e $ZONES_CONFIG ] ; then echo "$DATE File $ZONES_CONFIG not found!" exit 1 fi # read the list of active zones ZONE_FILES=$(grep file $ZONES_CONFIG | grep -v ^# | perl -ne "/file "(.+)"/ && print "$1\n"") for ZONE_FILE in $ZONE_FILES; do echo "$DATE Process the zone config $ZONE_FILE" cat $ZONE_FILE | perl -ne "s/([\t ]+IN[\t ]+A[\t ]+)[\d\.]*/\${1}${IP}/; print \${_}" > $ZONE_FILE.tmp if [ $(diff -w $ZONE_FILE $ZONE_FILE.tmp | wc -l) -ne 0 ] ; then # update serial number STAMP=$(date +%s) cat $ZONE_FILE.tmp | perl -ne "s/\d+(?=.+Serial)/$STAMP/; print \${_}" > $ZONE_FILE # reload BIND service bind9 reload echo "$DATE Config $ZONE_FILE is updated" else # nothing to do rm $ZONE_FILE.tmp echo "$DATE Config $ZONE_FILE is NOT changed" fi done
Скрипт нужно запускать под рутом (чтобы ему хватило прав обновлять конфиги BIND"а и рестартовать его). Добавляем в crontab рута его запуск каждую минуту:

* * * * * cd /home/root && ./update_bind_config.sh >> /var/log/update_bind_config.log
Пару слов про определение текущего IP-адреса. В скрипте выше это делается через резолвинг DDNS-поддомена domain.ddns.net. То есть сначала наш роутер его туда прописывает, а потом мы читаем. Это не очень хороший вариант, поскольку мы завязываемся на роутер и можем потерять несколько минут пока на DDNS-поддомене обновится IP-адрес на актуальный. Все это время наш сервер будет недоступен.

Поэтому у себя я использовал улучшенный вариант, который заодно не лазит в интернет:

IP=$(perl -le "use LWP::UserAgent; my $content=LWP::UserAgent->new->get("http://router")->decoded_content(); $content =~ q(([\d\.]+)); print $1")
В данном варианте мы загружаем главную страницу роутера (через http), дальше регэкспом находим на ней текущий IP-адрес. Разумеется, этот вариант подходит далеко не всем, но на DD-WRT прошивках работает.

5. Настройка роутера
Про необходимость настроить обращение к DDNS-сервису я уже писал, но еще не забывайте про необходимость настроить форвардинг портов на вашем роутере:
  • HTTP - TCP, 80-ый порт
  • DNS - TCP+UDP, 53 порт

Вывод

Итак, что я получил в итоге:
  • Мои сайты живут на домашнем сервере, за который я никому не плачу;
  • Мои домены резолвятся через мой собственный DNS-сервер, время жизни записей 1 минута, то есть обновление происходит очень быстро;
  • В качестве NS-записей указаны не реальные IP-адреса (которые у меня часто меняются), а DDNS-поддомены;
  • Актуальность записей в DDNS-поддоменах и в конфиге моего DNS-сервера обеспечивается автоматически, без какого-либо вмешательства со моей стороны.
По моим замерам, когда МТС (мой провайдер) обновляет мне IP-адрес, то мои сайты начинают работать спустя где-то 2 минуты. Это вполне приемлемо для меня.

P.S. Если кому-то понравилась данная заметка, то я могу написать вторую часть, где расскажу как настроить работу с использованием DNS-хостинга Яндекса. Это позволит отказаться от собственного DNS-сервера, отказаться от DDNS-поддоменов, плюс чуть улучшит надежность работы (поскольку DNS-сервер никогда не будет менять свой IP). Именно такую схему я использую в настоящий момент.

  • DNS ,
  • Хостинг
  • У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

    В то-же время в наличии имеется:

    • Домашний сервер на Ubuntu
    • Быстрый ethernet-интернет от МТС
    Но не имеется ключевого - статического IP. Если бы он был, то все было-бы намного проще и данную статью я бы точно не писал. А выдавать статический IP мой МТС абсолютно не желает (если только я не подключусь как бизнес-клиент).

    Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com , но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).

    Что делать?

    Я не буду останавливаться на том, как настроить linux сервер (и тем более как его выбрать), поскольку предполагаю, что он у вас уже есть. Также я не буду подробно расписывать настройки nginx и Apache, поскольку опять-таки предполагаю, что вы с этим справитесь самостоятельно.

    Первое с чем у меня возникли проблемы - это как перенаправить посетителей с моих доменов (у меня есть 2 домена) на мой домашний сервер. То есть чтобы клиент который набрал domain.com попал ровно на мой домашний сервер с учетом того, что на нем каждый день меняется IP-адрес.

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

    Итак, нам нужен DNS сервер, варианты решения:

    Рассмотрим оба варианта.

    Используем сервисы которые предоставляют нам DNS-хостинг

    Для этого есть ряд бесплатных сервисов, из которых самым популярным является freedns.afraid.org . На таких сервисах можно добавить свой домен(ы) и получить возможность через API обновлять у них A-запись при помощи небольшого скрипта.

    Выглядит вполне неплохо, но подвох в том, что эти сервисы оставляют за собой право довешивать к вашему домену поддомены третьего уровня. То есть вы зарегистрировали у них user.ru, а они спокойно довешают свои сайты вида hello.user.ru, shop.user.ru и так далее. Разумеется от этого можно отказаться, но… за деньги. Платить деньги за такие сервисы смысла я не вижу, поскольку за сравнимые деньги вы можете купить полноценный хостинг на каком-нибудь провайдере без всяких плясок вокруг DNS настроек.

    Остальные сервисы рассматривать не будем, а сосредоточимся на втором варианте.

    Используем собственный DNS-сервер в связке с DDNS-доменом

    Для этого варианта у нас, во-первых, должен быть DDNS-домен (который обновляется при смене IP), например, domain.ddns.net, а во-вторых, придется установить и настроить BIND на нашем сервере.

    Всего необходимо сделать ровно 5 шагов. Везде под словами «domain» или «domain.ru» подразумевается ваше имя домена (короткое или полное).

    1. Настроить 2 или 3 DDNS-поддомена
    Почему 2 или 3? Потому, что ряд регистрантов не разрешит вам использовать домен только с одним NS-сервером. Самое обидно, что не все про это скажут - ваш домен просто не будет работать, но вы не будете понимать почему.

    Тут все просто - идем на noip.com , там регистрируем аккаунт и добавляем 3 бесплатных поддомена (больше 3 не даст).

    2. Настраиваем собственный DNS-сервер
    Устанавливаем BIND:

    $ sudo apt-get install bind9
    Создаем зоны (по одной зоне на каждый наш домен):

    $ sudo nano /etc/bind/zones.my
    с содержимым:

    Zone "domain.ru" { type master; file "/etc/bind/db.domain.ru"; };
    и собственно файл с настройками зоны:

    $ nano /etc/bind/db.domain.ru
    и пишем внутри:

    ; ; BIND data file for local loopback interface ; $TTL 60 @ 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.
    Примечание: обращаю внимание, что TTL устанавливаем равным 60 секунд. В файле /etc/bind/named.conf.local добавляем подключение нашей зоны:

    Include "/etc/bind/zones.my";
    Все, рестартуем BIND:

    $ sudo service bind9 restart
    И глянем /var/log/syslog чтобы там не было сообщений об ошибках

    3. Настроить наш домен(ы)
    Идем в панель управления регистратора и там в настройках нашего домена в качестве NS-серверов указываем созданные DDNS-поддомены:

    Nameserver1 = domain.ddns.net nameserver2 = domain.ddnsking.com nameserver3 = domain.myftp.biz
    После этого возможно придется подождать несколько часов (или даже сутки) пока настройки среплицируются между всеми серверами.

    4. Настроить периодическое обновление IP-адресов
    Мой роутер поддерживает обновление IP-адреса на одном домене, но мне нужно это делать сразу для 3-х доменов. Плюс нам надо обновлять IP-адрес в конфиге BIND"а, поэтому напишем скрипт который будет делать:
    1. Определять наш внешний IP-адрес
    2. Проверять изменился ли IP адрес, если не изменился, то ничего делать не надо
    3. Обновлять IP-адрес у всех DDNS-поддоменов через API сервиса noip.com
    4. Прописывать новый IP адрес в конфиг BIND"а
    5. Перезапускать BIND
    Сам скрипт пусть будет на шелле:

    #!/bin/sh # This script works via noip.com service + local Bind server # Settings ZONES_CONFIG=zones.my IP_FILE=./current_ip.txt DDNS_USER=user DDNS_PASS=password DDNS_HOST=domain.ddns.net DDNS_HOSTS=domain.ddns.net,domain.ddnsking.com,domain.myftp.biz # Start DATE=$(date +"%Y-%m-%d %H:%M:%S") # detect an external IP IP=$(dig +short $DDNS_HOST) if [ $? -ne 0 ] || [ -z $IP ] || [ $IP = "0.0.0.0" ] ; then echo "$DATE Can"t detect a remote IP. Aborting." exit 1 fi # verify IP changing PREV_IP="(unknown)" if [ -e $IP_FILE ] ; then PREV_IP=$(cat $IP_FILE) fi if [ $IP = $PREV_IP ] ; then echo "$DATE IP "$IP" has not changed" else echo "$DATE IP has been changed from "$PREV_IP" to "$IP"" echo "$DATE IP will be updated on DDNS server" /usr/bin/curl -u $DDNS_USER:$DDNS_PASS "https://dynupdate.no-ip.com/nic/update?hostname=$DDNS_HOSTS&myip=$IP" fi echo $IP > $IP_FILE # check BIND config cd /etc/bind if [ ! -e $ZONES_CONFIG ] ; then echo "$DATE File $ZONES_CONFIG not found!" exit 1 fi # read the list of active zones ZONE_FILES=$(grep file $ZONES_CONFIG | grep -v ^# | perl -ne "/file "(.+)"/ && print "$1\n"") for ZONE_FILE in $ZONE_FILES; do echo "$DATE Process the zone config $ZONE_FILE" cat $ZONE_FILE | perl -ne "s/([\t ]+IN[\t ]+A[\t ]+)[\d\.]*/\${1}${IP}/; print \${_}" > $ZONE_FILE.tmp if [ $(diff -w $ZONE_FILE $ZONE_FILE.tmp | wc -l) -ne 0 ] ; then # update serial number STAMP=$(date +%s) cat $ZONE_FILE.tmp | perl -ne "s/\d+(?=.+Serial)/$STAMP/; print \${_}" > $ZONE_FILE # reload BIND service bind9 reload echo "$DATE Config $ZONE_FILE is updated" else # nothing to do rm $ZONE_FILE.tmp echo "$DATE Config $ZONE_FILE is NOT changed" fi done
    Скрипт нужно запускать под рутом (чтобы ему хватило прав обновлять конфиги BIND"а и рестартовать его). Добавляем в crontab рута его запуск каждую минуту:

    * * * * * cd /home/root && ./update_bind_config.sh >> /var/log/update_bind_config.log
    Пару слов про определение текущего IP-адреса. В скрипте выше это делается через резолвинг DDNS-поддомена domain.ddns.net. То есть сначала наш роутер его туда прописывает, а потом мы читаем. Это не очень хороший вариант, поскольку мы завязываемся на роутер и можем потерять несколько минут пока на DDNS-поддомене обновится IP-адрес на актуальный. Все это время наш сервер будет недоступен.

    Поэтому у себя я использовал улучшенный вариант, который заодно не лазит в интернет:

    IP=$(perl -le "use LWP::UserAgent; my $content=LWP::UserAgent->new->get("http://router")->decoded_content(); $content =~ q(([\d\.]+)); print $1")
    В данном варианте мы загружаем главную страницу роутера (через http), дальше регэкспом находим на ней текущий IP-адрес. Разумеется, этот вариант подходит далеко не всем, но на DD-WRT прошивках работает.

    5. Настройка роутера
    Про необходимость настроить обращение к DDNS-сервису я уже писал, но еще не забывайте про необходимость настроить форвардинг портов на вашем роутере:
    • HTTP - TCP, 80-ый порт
    • DNS - TCP+UDP, 53 порт

    Вывод

    Итак, что я получил в итоге:
    • Мои сайты живут на домашнем сервере, за который я никому не плачу;
    • Мои домены резолвятся через мой собственный DNS-сервер, время жизни записей 1 минута, то есть обновление происходит очень быстро;
    • В качестве NS-записей указаны не реальные IP-адреса (которые у меня часто меняются), а DDNS-поддомены;
    • Актуальность записей в DDNS-поддоменах и в конфиге моего DNS-сервера обеспечивается автоматически, без какого-либо вмешательства со моей стороны.
    По моим замерам, когда МТС (мой провайдер) обновляет мне IP-адрес, то мои сайты начинают работать спустя где-то 2 минуты. Это вполне приемлемо для меня.

    P.S. Если кому-то понравилась данная заметка, то я могу написать вторую часть, где расскажу как настроить работу с использованием DNS-хостинга Яндекса. Это позволит отказаться от собственного DNS-сервера, отказаться от DDNS-поддоменов, плюс чуть улучшит надежность работы (поскольку DNS-сервер никогда не будет менять свой IP). Именно такую схему я использую в настоящий момент.

    Каждый, кто хоть раз создавал свой сайт и размещал его в сети Интернет, пользовался услугами хостинг компании. Без невозможно сделать сайт доступным в сети. И мы просто вынуждены покупать хостинг для своего сайта. Многим в этот момент приходила мысль о том, можно ли сделать хостинг самому? Если Вы один из них, то эта статья именно для Вас.

    Развенчиваем мифы

    Можно ли сделать хостинг на своем домашнем компьютере? Ответ - Да! Но, существует несколько условий для осуществления этого смелого плана:

    • Во-первых – дисковое пространство для хранения всех файлов вашего сайта.
    • Во-вторых – бесперебойный Интернет, чтобы обеспечить постоянный поток посетителей на Ваш сайт.
    • В-третьих – бесперебойное питание Вашего компьютера, то есть он должен быть включен 24 часа в сутки, чтобы обеспечить доступ к Вашему сайту в любое время.

    Всего три основных условия для того, чтобы разместить Ваш сайт на собственном хостинге. Это что касается желания сэкономить на платном хостинге.

    Ну а если же Вы решили зарабатывать на предоставлении хостинг услуг, то тут все немного сложнее.

    Создание «Хостинг компании»

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

    Материальная база

    1. Вам понадобиться мощный компьютер или сервер с большим дисковым пространством, для того, чтобы Ваши клиенты смогли размещать свои ресурсы на Вашем хостинге. (от 700$)
    2. Выбор платформы для создания хостинга и управления системы. Это может быть хостинг на базе Unix/Linux, либо на базе . ( Server от 700$)
    3. Ну и конечно, программное обеспечение – прием платежей, управление серверами имен и . Таких панелей сегодня много, самые популярные из них cPanel, ISPmanager, Plesk, DirectAdmin. Лицензию на их использование придется оплатить.
    4. Техническая поддержка на сайте хостинга осуществляется квалифицированными сотрудниками, которых придется нанять на работу. Так как если Вы самостоятельно решили осуществлять поддержку клиентов, то Вам придется круглосуточно, 7 дней в неделю не отходить от компьютера и отвечать на вопросы и решать проблемы и неполадки системы.

    Хостинг «без сервера»

    Если такая задача финансово недоступна для Вас, то существует, как минимум два способа решить проблему создания хостинга без физического обладания сервером.

    1. Выделенный сервер

    Почти каждая хостинг компания предоставляет услугу , то есть места на одно из своих сервере, отведенного только для Вашего размещения и использования. Такая услуга обходится дороже, чем обычный хостинг, но дешевле, чем покупка собственного сервера (можно найти за 70$ в месяц). Выделенный сервер Вы можете использовать по желанию. А Ваше желание, использовать его как сервер своей хостинг компании. И Вам остается только создать сайт, на котором Вы будете размещать информацию о своих хостинг услугах. Однако, покупка выделенного сервера – это решение лишь одной задачи – покупки сервера физического. А все остальные задачи придется решать самому. Это выбор платформы и программного обеспечения сервера. При этом техническую поддержку никто не отменял и Вам придется позаботиться об ее обеспечении своим клиентам.

    2. Реселлер хостинг

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

    Для примера американский провайдер предлагает реселлер аккаунт за $24.95, который содержит:

    • 50ГБ дискового пространства
    • 500ГБ трафика
    • Безлимитное количество доменов, баз данных MySQL , аккаунтов почты и FTP,
    • Бесплатное ПО: WHMCS или WHM AutoPilot Client Management / Для приема платежей
    • 400+ видеоуроков для ваших клиентов
    • Частный неймсервер
    • Последнюю версию WHM Control Panel для вас и cPanel для ваших клиентов
    • 24/7/365 Премиум поддержку для Вас через телефон, чат или систему тикетов
    • Автоматический Бекап
    • 24/7/365 мониторинг сервера

    Специально для читателей сайта, которые желают приобрести , Hostgator подготовил купон. Введите в поле Coupon Code: AmericanRes и Вы получите 25% скидку на первый платеж. То есть, например, план Aluminum вместо $24.95 в месяц Вам обойдется в $18.71.

    Регистрация хостинга

    Если Вы уже решили первую и главную задачу по созданию собственного хостинга – покупка или аренда сервера, то переходите смело к следующим шагам.

    Шаг 1. Регистрация доменного имени хостинга

    Шаг 2. Выбор Дата Центра

    Дата центр – это центр хранения и обработки данных, который представлен в виде помещения или здания для размещения серверного оборудования, которое подключено к сети Интернет. Выбор дата центра очень важный шаг, так как от него зависит работа вашего хостинга. Дата центр отвечает за хранение, обработку и распространение информации. Качество каналов связи и их пропускная способность непосредственно влияют на работу предоставляемых Вами хостинг услуг. Самым главным критерием надежности работы дата центра является показатель . Поэтому при выборе дата центра для размещения своего сервера или выборе хостинг провайдера, у которого Вы покупаете выделенный сервер или реселлер хостинг необходимо уделить внимание именно этому показателю. Было бы неплохо, если бы дата центр был расположен в непосредственной близости от Вас, то есть географическое его местонахождение должно быть тоже самое, что и у Ваших клиентов.

    Компания Hostgator дает UpTime Гарантию в 99,9% (это самая высокая цифра), то есть если ваш сайт/сайты были недоступны более этого времени по вине компании, то вам будет возвращены деньги за время простоя.

    Вывод

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



    Загрузка...