feat: Cloudflare DNS management with automatic record sync
Add flexible DNS management to Docker Watcher. By default, wildcard DNS is assumed (current behavior). When disabled, users can configure a Cloudflare DNS provider with API token and zone selection. DNS A records are automatically created/updated/deleted in sync with proxy consumers (deployed instances and standalone proxies). - Settings: wildcard_dns toggle, dns_provider, cloudflare credentials - Cloudflare client: Provider interface with EnsureRecord/DeleteRecord/ListRecords - DNS lifecycle hooks in deployer and proxy manager (best-effort) - Settings UI: DNS config section with provider picker, zone selector, test button - DNS Records page at /dns with filtering, sync status, reconciliation - Records visible in both wildcard and managed modes - Cleanup on provider change: removes old records when switching modes
This commit is contained in:
@@ -16,7 +16,8 @@
|
||||
"proxies": "Прокси",
|
||||
"events": "События",
|
||||
"settings": "Настройки",
|
||||
"logout": "Выйти"
|
||||
"logout": "Выйти",
|
||||
"dns": "DNS-записи"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Панель управления",
|
||||
@@ -243,7 +244,26 @@
|
||||
"noCertificate": "Нет (без SSL)",
|
||||
"clearCertificate": "Очистить",
|
||||
"loadingCertificates": "Загрузка сертификатов...",
|
||||
"noCertificatesFound": "Wildcard-сертификаты в NPM не найдены"
|
||||
"noCertificatesFound": "Wildcard-сертификаты в NPM не найдены",
|
||||
"dnsConfig": "Настройки DNS",
|
||||
"wildcardDns": "Wildcard DNS настроен",
|
||||
"wildcardDnsHelp": "Когда включено, все поддомены разрешаются на ваш сервер через wildcard DNS правило. Отключите для управления DNS-записями для каждого сервиса.",
|
||||
"dnsProvider": "DNS-провайдер",
|
||||
"dnsProviderHelp": "Выберите DNS-провайдера для автоматического управления записями",
|
||||
"cloudflareApiToken": "API-токен Cloudflare",
|
||||
"cloudflareApiTokenHelp": "API-токен с правами редактирования DNS для вашей зоны",
|
||||
"cloudflareApiTokenPlaceholder": "Введите API-токен Cloudflare",
|
||||
"cloudflareApiTokenConfigured": "API-токен настроен",
|
||||
"cloudflareZone": "Зона Cloudflare",
|
||||
"cloudflareZoneHelp": "Выберите DNS-зону для управления записями",
|
||||
"selectZone": "Выбрать зону",
|
||||
"noZone": "Зона не выбрана",
|
||||
"loadingZones": "Загрузка зон...",
|
||||
"noZonesFound": "Зоны для этого токена не найдены",
|
||||
"testConnection": "Проверить соединение",
|
||||
"testingConnection": "Проверка...",
|
||||
"connectionSuccess": "Соединение успешно",
|
||||
"connectionFailed": "Ошибка соединения"
|
||||
},
|
||||
"settingsRegistries": {
|
||||
"title": "Реестры контейнеров",
|
||||
@@ -540,6 +560,43 @@
|
||||
"proxies": "Прокси",
|
||||
"recentErrors": "Недавние ошибки"
|
||||
},
|
||||
"dns": {
|
||||
"title": "DNS-записи",
|
||||
"description": "Просмотр и управление DNS-записями, созданными Docker Watcher.",
|
||||
"wildcardActive": "Режим Wildcard DNS активен",
|
||||
"wildcardActiveDesc": "DNS-записи управляются внешне через wildcard DNS. Отключите wildcard DNS в настройках для индивидуального управления записями.",
|
||||
"refresh": "Обновить",
|
||||
"syncNow": "Синхронизировать",
|
||||
"syncing": "Синхронизация...",
|
||||
"syncComplete": "Синхронизация завершена: {created} создано, {deleted} удалено, {synced} уже синхронизировано",
|
||||
"syncFailed": "Ошибка синхронизации DNS",
|
||||
"searchPlaceholder": "Поиск по FQDN...",
|
||||
"allConsumers": "Все потребители",
|
||||
"managed": "Управляемые (инстансы)",
|
||||
"standalone": "Автономные прокси",
|
||||
"orphaned": "Осиротевшие",
|
||||
"allStatuses": "Все статусы",
|
||||
"statusSynced": "Синхронизировано",
|
||||
"statusMissing": "Отсутствует",
|
||||
"statusOrphaned": "Осиротевшее",
|
||||
"columnFqdn": "FQDN",
|
||||
"columnType": "Тип",
|
||||
"columnValue": "Значение",
|
||||
"columnConsumer": "Потребитель",
|
||||
"columnStatus": "Статус",
|
||||
"columnActions": "Действия",
|
||||
"noConsumer": "Нет потребителя",
|
||||
"noRecords": "DNS-записи не найдены. Записи появятся здесь после развёртывания сервисов.",
|
||||
"noMatchingRecords": "Нет записей, соответствующих текущим фильтрам.",
|
||||
"deleteRecord": "Удалить запись",
|
||||
"recordDeleted": "DNS-запись {fqdn} удалена",
|
||||
"deleteFailed": "Не удалось удалить DNS-запись",
|
||||
"loadFailed": "Не удалось загрузить DNS-записи",
|
||||
"totalRecords": "Всего: {count}",
|
||||
"syncedCount": "Синхронизировано: {count}",
|
||||
"missingCount": "Отсутствует: {count}",
|
||||
"orphanedCount": "Осиротевших: {count}"
|
||||
},
|
||||
"language": {
|
||||
"en": "Английский",
|
||||
"ru": "Русский"
|
||||
|
||||
Reference in New Issue
Block a user