Minha rede atual:

Minha rede atual:

Minha rede atual:

Router         - 192.168.1.1   (static)
Windows PC     - 192.168.1.10  (static)
Synology NAS   - 192.168.1.11  (static)
DockerPihole   - 192.168.1.12  (macvlan-static)
DockerUnbound  - 192.168.1.13  (macvlan-static)
DockerTraefik  - 192.168.1.14  (macvlan-static)

Rede Docker Bridge (para que o Traefik funcione)

DockerTraefik  - 192.168.10.2  (bridge-static)
DockerNginx1   - 192.168.10.10 (bridge-static)
DockerNginx2   - 192.168.10.20 (bridge-static)
  • Estou executando o Docker no meu Synology NAS
  • Estou executando DNS em meu Synology NAS (o aplicativo DNS integrado). Pi-Hole, Unbound e Traefik estão sendo executados em um macvlan compartilhado.
  • Criei uma rede bridge para o Traefik se conectar a cada contêiner.
  • Estou configurando Labels na pilha de cada contêiner no portainer para lidar com a configuração do Traefik.
  • Estou tentando seguir o tutorial aquihttps://youtu.be/wLrmmh1eI94mas isso não estava em uma sinologia, então é um pouco diferente.
  • Embora eu seja o proprietário do domínio que estou tentando usar, entendo que isso não deveria ser necessário, desde que eu possa apontar para meu servidor DNS Synology que lida com esse domínio.

A principal diferença é que o Synology já está usando 80 e 443 então minha solução foi colocar o Traefik em um macvlan para não ter conflitos de porta.

Quase tudo funcionou, mas estou tendo problemas para descobrir essa (espero que a última). Nos logs do Traefik posso ver que letsencrypt.org está tendo problemas com meu DNS.

Aqui está o erro do log:

level=error
msg=Unable to obtain ACME certificate for domains "nginx2.mydomain.com": 
    unable to generate a certificate for the domains [nginx2.mydomain.com]:
error: one or more domains had a problem:
      [nginx2.mydomain.com] acme: error: 400 :: urn:ietf:params:acme:error:dns :: DNS problem: NXDOMAIN looking up A for nginx2.mydomain.com
      - check that a DNS record exists for this domain; DNS problem: NXDOMAIN looking up AAAA for nginx2.mydomain.com
      - check that a DNS record exists for this domain
providerName=staging.acme
routerName=nginx2@docker
rule=Host(`nginx2.mydomain.com`)
ACME CA=https://acme-staging-v02.api.letsencrypt.org/directory

Configurei o DNS no Synology e configurei meu roteador para ter o Synology como meu primeiro servidor DNS. Quando faço ping em nginx2.mydomain.com do meu PC e ele retorna o IP do contêiner DockerTraefik 192.168.1.14. Acredito que este seja o comportamento correto.

Além disso, quando olho meu arquivo acme.json (que estava vazio), vejo que ele foi preenchido com um certificado que diz "status": "válido" (por enquanto, a produção está vazia). Acredito que este seja o comportamento correto.

Não tenho certeza do que estou perdendo, mas quando navego para nginx2.mydomain.com, o certificado no navegador diz

Emitido para: TRAEFIK DEFAULT CERT Emitido por: TRAEFIK DEFAULT CERT

Espero que diga: Emitido para: nginx2.mydomain.com Emitido por: (STAGING)...

Aqui estão meus objetivos:

  1. (concluído) Acesse meus contêineres Docker por nome. ex: nginx.meudominio.com
  2. (concluído) Acesse meus contêineres Docker sem DNS (em caso de problemas). ex: 192.168.1.14:10080
  3. O navegador diz "seguro" quando acesso meus contêineres pelo nome.
  4. Posso querer expor um ou dois deles externamente mais tarde, portanto, manter essa opção facilmente disponível é fundamental, mas ATM pretendo usar uma VPN para tudo.

Problemas que resolvi até agora:

  1. Não posso dar ao Traefik acesso direto ao 80/443 porque o NAS está usando essas portas.
    • Coloquei o Traefik em uma rede macvlan
  2. Os contêineres não conseguiram executar ping no pai
    • Ao adicionar portas à pilha (ex: "Portas:/n - 180:80/n - 1443"), isso me permitiu acessar o contêiner diretamente com o DNS (meta nº 2) e também corrigiu o problema de ping para o pai.

informação relacionada