Mi red actual:

Mi red actual:

Mi red actual:

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)

Docker Bridge Network (para que Traefik funcione)

DockerTraefik  - 192.168.10.2  (bridge-static)
DockerNginx1   - 192.168.10.10 (bridge-static)
DockerNginx2   - 192.168.10.20 (bridge-static)
  • Estoy ejecutando Docker en mi Synology NAS
  • Estoy ejecutando DNS en mi Synology NAS (la aplicación DNS integrada). Pi-Hole, Unbound y Traefik se ejecutan en un macvlan compartido.
  • Creé una red puente para que Traefik se conectara a cada contenedor.
  • Estoy configurando etiquetas en la pila de cada contenedor en Portainer para manejar la configuración de Traefik.
  • Estoy intentando seguir el tutorial aquí.https://youtu.be/wLrmmh1eI94pero esto no fue en una sinología, por lo que es ligeramente diferente.
  • Aunque soy propietario del dominio que estoy intentando utilizar, tengo entendido que no debería ser necesario siempre que pueda señalar mi servidor DNS de Synology que maneja ese dominio.

La principal diferencia es que Synology ya usa 80 y 443, por lo que mi solución fue poner Traefik en un macvlan para no tener conflictos de puertos.

Conseguí que casi todo funcionara, pero tengo problemas para entender esto (con suerte, el último). En los registros de Traefik puedo ver que letsencrypt.org está teniendo problemas con mi DNS.

Aquí está el error del registro:

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

Configuré el DNS en Synology y tengo mi enrutador configurado para tener Synology como mi primer servidor DNS. Cuando hago ping a nginx2.mydomain.com desde mi PC y devuelve la IP del contenedor DockerTraefik 192.168.1.14. Creo que este es el comportamiento correcto.

Además, cuando miro mi archivo acme.json (que estaba vacío), veo que se ha completado con un certificado que dice "estado": "válido" (en preparación por ahora, la producción está vacía). Creo que este es el comportamiento correcto.

No estoy seguro de lo que me falta, pero cuando busco nginx2.mydomain.com, el certificado en el navegador dice

Emitido a: TRAEFIK DEFAULT CERT Emitido por: TRAEFIK DEFAULT CERT

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

Aquí están mis objetivos:

  1. (hecho) Acceder a mis contenedores Docker por nombre. ej: nginx.midominio.com
  2. (hecho) Acceder a mis contenedores Docker sin DNS (en caso de problemas). ejemplo: 192.168.1.14:10080
  3. El navegador dice "seguro" cuando accedo a mis contenedores por nombre.
  4. Es posible que desee exponer uno o dos de ellos externamente más adelante, por lo que mantener esa opción fácilmente disponible es clave, pero en ATM planeo usar una VPN para todo.

Problemas que he resuelto hasta ahora:

  1. No puedo darle a Traefik acceso directo a 80/443 porque el NAS está usando esos puertos.
    • Puse a Traefik en una red macvlan
  2. Los contenedores no pudieron hacer ping a sus padres
    • Al agregar puertos a la pila (por ejemplo: "Puertos:/n - 180:80/n - 1443") me permitió acceder al contenedor directamente con DNS (objetivo n.° 2) y también solucionó el problema de ping al padre.

información relacionada