# Traefik + SSL Let's Encrypt DNS challenge + домен Reg.ru + серый динамический IP

**URL:** <https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973>\
**Category:** Traefik\
**Tags:** reverse-proxy\
**Created:** [21.Сентябрь.2025 16:40:43 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973 "2025-09-21T16:40:43Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![TriSSS91](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/t/b38774/32.png) [@TriSSS91](https://forum.samohosting.ru/u/TriSSS91)\
**Post date:** [21.Сентябрь.2025 16:40:43 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/1 "2025-09-21T16:40:43Z")

</div>

Возник вопрос по работе в Traefik с SSL сертификатами к домену от [reg.ru](http://reg.ru) при сером динамическом IP. Задача - ходить внутри сети по доменным именам с сертами. Находясь вне дома окажусь внутри через Netbird, этого достаточно.  
Ранее стоял Nginx Proxy Manager, серты получал скриптом с помощью certbot и плагином для работы с [reg.ru](http://reg.ru) (по DNS Challenge, в качестве IP указывал в ЛК внутренний адрес NPM), потом подкладывал ручками в NPM.

Т.к. предыдущий инстанс хоумлабы помер (он был полутестовый), решил в новом перейти на Traefik (установлен в LXC по методичке Stilicho) и пока не получается наладить работу с сертами. Вижу, что Traefik работает с провайдерами, доступными Lego for ACME и там есть [reg.ru](http://reg.ru) в списке доступных DNS Providers ([тыц](https://go-acme.github.io/lego/dns/regru/)). Однако наладить получение серта так и не получилось, и не разобрался как подкладывать Traefik’у полученные скриптом серты. Вроде известный продавец доменов, а инфы толком нет, не нашёл кейсов кто и как делал. В идеале автоматизировать бы получение и обновление сертов через DNS Challenge.

Может кто-то уже проходил такой путь с [reg.ru](http://reg.ru) и поделится, что и где нужно прописывать / настраивать?

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [21.Сентябрь.2025 17:15:07 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/2 "2025-09-21T17:15:07Z")

</div>

Если не получается настроить, то какие ошибки вылазят или на каком моменте затык?

Согласно документации

### 1. Получение самим traefik

```auto
certificatesResolvers:
  regru:
    acme:
      storage: /etc/traefik/acme/acme.json
      dnsChallenge:
        provider: regru
        delayBeforeCheck: 5
        resolvers:
          - 1.1.1.1:53
          - 8.8.8.8:53

```

Ну и передать переменные окружения

```auto
REGRU_PASSWORD	API password
REGRU_USERNAME	

```

resolvers может удалить или прописать яндека, я для cloudflare прописывал это, иначе проверка не срабатывала

### 2. Подсунуть существующие серты (в файловом конфиге)

```auto

---
tls:
  certificates:
    - certFile: /secrets/certs/domain1.ru.crt
      keyFile: /secrets/certs/domain1.ru.key
      stores:
        - default
    - certFile: /secrets/certs/domain2.ru.crt
      keyFile: /secrets/certs/domain2.ru.key

```

**P.S.**  
[reg.ru](http://reg.ru) не настраивал, но там все стандартно

---

<div class="post-metadata">

**Author:** ![TriSSS91](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/t/b38774/32.png) [@TriSSS91](https://forum.samohosting.ru/u/TriSSS91)\
**Post date:** [22.Сентябрь.2025 09:12:59 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/3 "2025-09-22T09:12:59Z")

</div>

Спасибо! Сейчас приведу конфиги и ошибки.

Вот такой статический конфиг ( **`/etc/traefik/traefik.yaml`** ):

```yaml
global:
  checkNewVersion: true # traefik стоит 3.5.2
  sendAnonymousUsage: false
# Enable traefik ui dashboard
api:
  dashboard: true
  insecure: true # false # access to http://traefikIP:8080/dashboard/ is disabled
  debug: true
  disableDashboardAd: false # true
entryPoints:
  web:
    address: ":80"
    http:
      redirections: 
        entryPoint:
            to: websecure
            scheme: https
  websecure:
    address: ":443"
serversTransport:
    insecureSkipVerify: true
providers:
  file:
    directory: /etc/traefik/dynamic
    watch: true
    #filename: /etc/traefik/config.yaml # when a specific file is desired
#-https://doc.traefik.io/traefik/https/acme/
certificatesResolvers:
  regru:
    acme:
      storage: /etc/traefik/acme.json
      dnsChallenge:
        provider: regru
        delayBeforeCheck: 5 # пробовал разные варианты, например 60
# resolvers: # пробовал добавлять и разные комбинации, не помогло
# - 77.88.8.8:53
# - 77.88.8.1:53
# - 1.1.1.1:53
# - 8.8.8.8:53

```

Вот динамический конфиг ( **`/etc/traefik/dynamic/config.yaml`** ):

```yaml
http:
# https://doc.traefik.io/traefik/routing/routers/
  routers:
   # harden dashboard access: can only be accessed with a username/password
    dashboard:
      entryPoints:
        - websecure 
      rule: "Host(`traefik-dashboard.mydomain.ru`)"
      service: api@internal
      middlewares:
        - auth
      tls:
        certResolver: regru
  middlewares:
# Middleware for Redirection
# This can be used instead of global redirection
#
    auth:
      basicAuth:
        users: # users and their MD5 hashed passwords, granted access to the traefik dashboard 
          - "admin:hashedpassword" # openssl passwd -1 "hashedpassword"
#
    https-redirect:
      redirectScheme:
        scheme: https
        permanent: true
#
    default-headers:
      headers:
        frameDeny: true
        browserXssFilter: true
        contentTypeNosniff: true
        forceSTSHeader: true
        stsIncludeSubdomains: true
        stsPreload: true
        stsSeconds: 15552000
        customFrameOptionsValue: SAMEORIGIN
        customRequestHeaders:
          X-Forwarded-Proto: https
tls:
  options:
    default:
      minVersion: VersionTLS12 # change to a lower version if you expect to service Internet traffic from around the world
      curvePreferences: # below priority sequence can be changed
        - X25519 # the most commonly used 128-bit
        - CurveP256 # the next most commonly used 128-bit
        - CurveP384 # 192-bit
        - CurveP521 # 256-bit
      sniStrict: true # true if our own certificates should be enforced
      cipherSuites:
        - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
        - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
        - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  stores:
    default:
      defaultGeneratedCert:
        resolver: regru
        domain:
          main: mydomain.ru
          sans:
            - "*.mydomain.ru"

```

Вот что происходит в консоли:

```bash
root@traefik:~# export REGRU_USERNAME="myemail@mailprovider.ru"

root@traefik:~# export REGRU_PASSWORD="mypassword"

root@traefik:~# traefik

2025-09-22T10:46:34+03:00 ERR Error while creating certificate store error="unable to find certificate for domains \"*.mydomain.ru,mydomain.ru\": falling back to the internal generated certificate" tlsStoreName=default

2025-09-22T10:46:34+03:00 ERR Error while creating certificate store error="unable to find certificate for domains \"*.mydomain.ru,mydomain.ru\": falling back to the internal generated certificate" tlsStoreName=default

2025-09-22T10:49:10+03:00 ERR Unable to obtain ACME certificate for domain error="unable to generate a certificate for the domains [mydomain.ru *.mydomain.ru]: error: one or more domains had a problem:\n[*.mydomain.ru] propagation: time limit exceeded: last error: authoritative nameservers: NS ns2.reg.ru.:53 did not return the expected TXT record [fqdn: _acme-challenge.mydomain.ru., value: <somevalue>]: <somevalue>\n[mydomain.ru] propagation: time limit exceeded: last error: authoritative nameservers: NS ns2.reg.ru.:53 did not return the expected TXT record [fqdn: _acme-challenge.mydomain.ru., value: <somevalue>]: qerGznFtt5HHne0aIXTmIdF6lYeCXCKzq4wJcXvSif8\n" ACME CA=https://acme-v02.api.letsencrypt.org/directory acmeCA=https://acme-v02.api.letsencrypt.org/directory domains=["mydomain.ru","*.mydomain.ru"] providerName=regru.acme tlsStoreName=default

```

Было бы круто всё таки наладить выпуск сами Traefik’ом. Есть мысли, что поправить нужно?

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [22.Сентябрь.2025 09:32:46 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/4 "2025-09-22T09:32:46Z")

</div>

судя по логам DNS сервер [reg.ru](http://reg.ru) не отдает нужную TXT запись, посмотрите в админке домена,

- если запись там есть, то проблема с кешированием,
- если записи нет, то проблема с api [reg.ru](http://reg.ru)

в качестве альтернативного варианта я активно использую [acme-dns](https://cert-manager.io/docs/configuration/acme/dns01/acme-dns/). Суть в том, что это отдельный DNS сервер, при регистрации вы получаете файл с кредами от него, а потом надо руками 1 раз прописать CNAME записи в своей админке, которые будут вести на этот acme-dns DNS сервер

```auto
                     +-------------------+
                     | Let's Encrypt |
                     | ACME-сервер CA |
                     +---------^---------+
                               |
                               | проверка DNS-01 challenge
                               |
                     +---------v---------+
                     | acme-dns |
                     | (под управлением|
                     | пользователя) |
                     +---------^---------+
                               |
                               | CNAME-запросы
                               |
   +-------------------+ |       
   | DNS Reg.ru |-------+
   | (основная зона) | ^
   | _acme-challenge | |
   | CNAME -> acme-dns | |
   +-------------------+ |
                               |
                               |
             +-----------------+-----------------+
             | |
   +---------v---------+ +---------v---------+
   | Certbot | | Конфигурируемый |
   | (у пользователя) | | web/mail/etc. |
   +-------------------+ | сервер |
             | +-------------------+
             | API-запросы
             v
       (автоматическая
         запись token
       в acme-dns)

```

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [23.Сентябрь.2025 11:20:32 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/5 "2025-09-23T11:20:32Z")

</div>

> [@TriSSS91](#):
>
> ```auto
> dnsChallenge:
> provider: regru
> 
> ```

вчера смотрел список поддерживаемых провайдеров и что-то этого не видел  
откуда вы берете этих провайдеров?

делал кто-то поддержу своего провайдера?

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [23.Сентябрь.2025 11:47:07 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/6 "2025-09-23T11:47:07Z")

</div>

> [@kalobyte](#):
>
> откуда вы берете этих провайдеров?

[DNS Providers :: Let’s Encrypt client and ACME library written in Go.](https://go-acme.github.io/lego/dns/) вот тут список провайдеров

> [@kalobyte](#):
>
> делал кто-то поддержу своего провайдера?

В lego не делал, для certbot писал свой скрипт для yandex cloud, он брал системный аккаунт виртуалки и с ним обновлял DNS зону

Ну и в случае отсутствия провайдера всегда можно воспользоваться [acme-dns](https://go-acme.github.io/lego/dns/acme-dns/), у меня корпоративный развернут для дополнительной безопасности. Дома пользовал публичный.

---

<div class="post-metadata">

**Author:** ![TriSSS91](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/t/b38774/32.png) [@TriSSS91](https://forum.samohosting.ru/u/TriSSS91)\
**Post date:** [23.Сентябрь.2025 16:27:49 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/7 "2025-09-23T16:27:49Z")

</div>

Резюмирую по своему опыту с [reg.ru](http://reg.ru), Traefik и SSL.

1. Выпускать сертификаты напрямую из Traefik не вышло (описано выше, скорее всего кэширование - записи появлялась на [reg.ru](http://reg.ru))
2. При установке Traefik в LXC не получилось и использовать имеющиеся сертификаты (которые получал скриптом certbot + плагин для [reg.ru](http://reg.ru)): или явные ошибки ловил, или не подтягивались серты в Traefik. Возможно, что-то не понял.
3. acme-dns не пробовал
4. При установке Traefik в Docker имеющиеся сертификаты получилось прокинуть без проблем, хотя конфиги ± те же. Заработало.
5. При установке Traefik в Docker пробовать наладить автоматическое получение сертификатов к домену [reg.ru](http://reg.ru) самим уже не стал, остановился на варианте 4.

Пока кажется, что работать с Traefik проще когда он в Docker.

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [24.Сентябрь.2025 03:08:07 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/8 "2025-09-24T03:08:07Z")

</div>

> [@KRom](#):
>
> Ну и в случае отсутствия провайдера всегда можно воспользоваться [acme-dns](https://go-acme.github.io/lego/dns/acme-dns/), у меня корпоративный развернут для дополнительной безопасности.

а можеш в кратце написать, как это работает? лист посмотрел, своего хостера не нашел, хотя они пишут, что их апи как у powerdns

так что я попробую powerdns провайдера для начала, потом через костыль этот

---

<div class="post-metadata">

**Author:** ![KRom](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/krom/32/362_2.png) [@KRom](https://forum.samohosting.ru/u/KRom)\
**Post date:** [24.Сентябрь.2025 06:50:03 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/9 "2025-09-24T06:50:03Z")

</div>

> [@kalobyte](#):
>
> а можеш в кратце написать, как это работает?

[Вот тут описывал](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/4). 1 раз для домена надо прописать cname записи в своем основном домене, а потом certbot уже работает через API с acme-dns сервером. т.е. можно подцепить к любому DNS провайдеру.

Из минусов невозможность привязки нескольких аккаунтов к одному домену, но я решал тем, что копировал acme-dns.json на другие сервера

---

<div class="post-metadata">

**Author:** ![kalobyte](https://forum.samohosting.ru/user_avatar/forum.samohosting.ru/kalobyte/32/243_2.png) [@kalobyte](https://forum.samohosting.ru/u/kalobyte)\
**Post date:** [24.Сентябрь.2025 07:00:42 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/10 "2025-09-24T07:00:42Z")

</div>

> [@KRom](#):
>
> раз для домена надо прописать cname записи в своем основном домене

ааа 🫩  
я думал бот через апи как-то сам создает поддомены и записи тхт или чего там ему надо

хотелось бы просто трафику домен добавить и чтобы само дальше

---

<div class="post-metadata">

**Author:** ![pbugaev](https://forum.samohosting.ru/letter_avatar_proxy/v4/letter/p/7ab992/32.png) [@pbugaev](https://forum.samohosting.ru/u/pbugaev)\
**Post date:** [12.Октябрь.2025 13:57:52 UTC](https://forum.samohosting.ru/t/traefik-ssl-lets-encrypt-dns-challenge-domen-reg-ru-seryj-dinamicheskij-ip/973/11 "2025-10-12T13:57:52Z")

</div>

Попробуйте увеличить delayBeforeChecks.  
У меня с такими настройками в докере сертификаты поттягиваются:

```auto
certificatesResolvers:
  regru-dns:
    acme:
      email: user@mail.ru
      storage: /etc/traefik/acme/acme.json
      dnsChallenge:
        provider: regru
        propagation:
          delayBeforeChecks: 300
        resolvers:
          - "1.1.1.1:53"
          - "8.8.8.8:53"

```
