/dynamic-dns-beget

Dynamic DNS BeGet

Primary LanguageJavaScriptMIT LicenseMIT

Dynamic DNS BeGet

Что это

Это утилита для автоматического назначения A записи для доменов BeGet. На запуске она определяет текущий внешний IP адрес, проходится по доменам и меняет A-запись на текущий IP.

Лицензия: MIT.

Как использовать

1. Панель управления / DNS

Домены, для которых нужно сконфигурировать приложение должны быть в подзоне, и у них должен быть одна A запись.

Возможны и записи других типов: TXT, MX, прочие... но A запись должна быть только одна!

Не важно какую A запись вы создадите, приложение её перезатерёт. Поэтому можно смело делать A запись на что угодно, например 1.1.1.1

пример

2. Панель управления / Домены и поддомены

Домены, для которых нужно сконфигурировать приложение должны быть в "моих доменах" (после редактирования DNS их можно туда просто добавить).

пример

3. Подготовка к запуску

Склонируйте репозиторий на компьютер/сервер, чей внешний айпи нужно назначить для днс-записи доменов.

Зайдя в каталог с репозиторием, запустите npm install для установки зависимостей проекта.

Для конфигурации приложения (обязательно) нужно создать файл .config.json в корне репозитория. Пример:

{
  "login": "amogus228",                              // ваш логин в beget
  "password": "123456",                              // ваш пароль в beget
  "domains": ["gallery.vy.ru.net", "src.vy.ru.net"]  // список доменов для смены IP адресов
}

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

Логин и пароль указывать в тексте и хранить его на жестком диске крайне не безопасно! Но наличие их является требованием для работы с Beget.API. Поэтому, при запуске приложения на сервере/на компьютере сделайте всё возможное, чтобы ни один пользователь, ни одна мальварь на вашей железяке не смогла дотянуться до файла конфигурации, кроме текущего приложения!

Комментарии в JSONе выше представлены для понятности. Их нужно удалить при создании конфигурации!

4. Тестовый запуск

Чтобы проверить, что всё работает, и конфигурация указана верно, нужно запустить команду из корня репозитория: node ./index.js. Если всё прошло успешно, программа выдаст all records updated successfully. Иначе - подробное сообщение об ошибке.

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

5. Настройка интервального запуска приложения

Поскольку нужно менять A-запись динамично, при каждой смене внешнего IP адреса, программа должна запускаться с каким-то интервалом постоянно. Самый простой способ для этого - cron.

Допустим, репозиторий находится в каталоге /root/dynamic-dns-beget, тогда запускаем crontab -e, и прописываем строчку:

*/5 * * * *  node /root/dynamic-dns-beget/index.js

Готово!

Логи приложения можно чекать в каталоге с репозиторием в папке logs.