Этот скрипт автоматически обновляет A-записи для ваших доменов на хостинге Timeweb, когда ваш внешний IP-адрес меняется. Идеально подходит для домашнего сервера или любого другого устройства с динамическим IP.
Проект использует Python, Selenium для эмуляции действий в браузере и полностью упакован в Docker для легкого и изолированного развертывания на любом сервере.
- Автоматическая проверка IP: Скрипт периодически проверяет ваш внешний IP и сравнивает его с сохраненным.
- Интеллектуальное обновление: DNS-записи обновляются только в случае реального изменения IP-адреса.
- Поддержка нескольких доменов: Обновляйте A-записи сразу для нескольких доменов и поддоменов.
- Сохранение сессии: Скрипт сохраняет cookies после первого входа, что значительно ускоряет последующие запуски и снижает риск блокировки.
- Простота развертывания: Запуск одной командой благодаря Docker Compose.
- Интерактивный режим: Возможность вручную просматривать и изменять A-записи через консольное меню.
- Docker
- Docker Compose
Процесс установки и запуска максимально упрощен.
1. Клонируйте репозиторий
git clone https://github.com/MKultra6969/TimeWebDDNS.git
cd TimeWebDDNS2. Создайте файл конфигурации .env
Создайте в корне проекта файл с именем .env и скопируйте в него содержимое ниже, подставив свои данные.
# Данные для входа в панель управления Timeweb
TIMEWEB_LOGIN=ваш_логин_timeweb
TIMEWEB_PASSWORD=ваш_секретный_пароль
# Домены и поддомены для обновления, через запятую
TIMEWEB_DOMAINS=domain.ru,sub.domain.ru,another.com3. Соберите и запустите контейнер
Выполните одну команду, которая соберет образ и запустит контейнер в фоновом режиме (-d).
docker-compose up --build -dНа этом все! Скрипт запущен и будет работать в фоне, проверяя ваш IP-адрес с интервалом, указанным в настройках (по умолчанию 30 минут).
Чтобы посмотреть, что происходит внутри контейнера в реальном времени:
docker-compose logs -fdocker-compose downЕсли вам нужно вручную изменить A-запись или сбросить сессию, вы можете запустить интерактивное меню:
docker-compose run --rm timeweb-ddns python main.pyВсе основные параметры настраиваются через переменные окружения в файле .env.
| Переменная | Описание | Пример |
|---|---|---|
TIMEWEB_LOGIN |
Ваш логин от аккаунта Timeweb. | user12345 |
TIMEWEB_PASSWORD |
Ваш пароль от аккаунта Timeweb. | s3cr3t_p@ssw0rd |
TIMEWEB_DOMAINS |
Список доменов и/или поддоменов, для которых нужно обновлять A-запись. Перечисляются через запятую. | domain.ru,sub.domain.ru |
- Впрочем как всегда с ненавистью к людям, скрипт изначально написан для себя, решил выложить по причине: может пригодится другим. Лицензия как всегда WTFPL, поэтому DO WHAT THE FUCK YOU WANT To Public License
- При запуске в докере, режим с firefox работать не будет(firefox там тупо нет)
- Если есть желание можно добавить свои сервисы для получения ip в файле
utils.py
IP_SERVICES = [
'https://api.ipify.org?format=json',
'https://wtfismyip.com/text',
'https://api.myip.com/'
]- Так же не советую ставить задержку между запросами меньше 30 минут.