Saltar a contenido

DNS / TLS

Fecha: 2026-06-01

Que es

Es la capa real que publica por dominio los servicios HTTP/HTTPS del VPS por medio de nginx-proxy-manager, resolviendo DNS publico hacia 46.202.151.32, terminando TLS con certificados Let's Encrypt y reenviando trafico a los backends internos.

Para que sirve

  • exponer openclaw.alpuntodeventa.com.ar sin publicar OpenClaw directo al host
  • exponer www.portainer.alpuntodeventa.com.ar con TLS administrado por NPM
  • exponer doc.alpuntodeventa.com.ar como Knowledge Portal con TLS administrado por NPM
  • centralizar certificados, HSTS y configuracion de proxy
  • sostener la verificacion de disponibilidad y expiracion de certificados desde observabilidad

Donde corre

  • host: srv977009 en 46.202.151.32
  • contenedor: nginx-proxy-manager
  • stack: /docker/nginx-proxy-manager
  • binds reales:
  • /docker/nginx-proxy-manager/data
  • /docker/nginx-proxy-manager/letsencrypt
  • puertos publicados reales:
  • 80/tcp
  • 81/tcp
  • 443/tcp

Dominios y certificados observados

Proxy hosts reales observados

Proxy host Dominio Upstream Certificado
2.conf www.portainer.alpuntodeventa.com.ar https://portainer:9443 npm-2
3.conf openclaw.alpuntodeventa.com.ar http://openclaw-gateway:18789 npm-3
4.conf doc.alpuntodeventa.com.ar http://knowledge-portal:8085 npm-4

DNS real observado

Dominio Resolucion observada
openclaw.alpuntodeventa.com.ar 46.202.151.32
www.portainer.alpuntodeventa.com.ar 46.202.151.32
doc.alpuntodeventa.com.ar 46.202.151.32

Certificados reales observados

Cert Subject Issuer Validez
npm-2 www.portainer.alpuntodeventa.com.ar Let's Encrypt E7 2026-04-30 a 2026-07-29
npm-3 openclaw.alpuntodeventa.com.ar Let's Encrypt YE1 2026-05-29 a 2026-08-27
npm-4 doc.alpuntodeventa.com.ar Let's Encrypt YE2 2026-06-01 a 2026-08-30

Let's Encrypt y renovacion

  • La evidencia real en /docker/nginx-proxy-manager/letsencrypt/renewal/npm-2.conf y /docker/nginx-proxy-manager/letsencrypt/renewal/npm-3.conf y /docker/nginx-proxy-manager/letsencrypt/renewal/npm-4.conf muestra:
  • server = https://acme-v02.api.letsencrypt.org/directory
  • authenticator = webroot
  • webroot_path = /data/letsencrypt-acme-challenge
  • preferred_chain = ISRG Root X1
  • key_type = ecdsa
  • elliptic_curve = secp384r1
  • La renovacion depende de que el dominio siga resolviendo al VPS y de que el challenge HTTP siga atendible por NPM.

Que protege

  • la UI publica de OpenClaw en https://openclaw.alpuntodeventa.com.ar/
  • la UI publica de Portainer en https://www.portainer.alpuntodeventa.com.ar/
  • el Knowledge Portal en https://doc.alpuntodeventa.com.ar/
  • el trafico HTTP/HTTPS expuesto por NPM

No protege a Grafana hoy porque obs-grafana sigue publicado solo en 127.0.0.1:3000 y no tiene proxy host real observado.

Dependencias y relaciones

  • depende de:
  • DNS publico correcto
  • nginx-proxy-manager
  • /docker/nginx-proxy-manager/data
  • /docker/nginx-proxy-manager/letsencrypt
  • reachability a openclaw-gateway:18789
  • reachability a portainer:9443
  • reachability a knowledge-portal:8085
  • dependen de esta capa:
  • svc-openclaw
  • svc-portainer
  • knowledge-portal
  • probes TLS y de disponibilidad de observabilidad
flowchart LR
    DNS[DNS publico]
    TLS[TLS Let's Encrypt]
    NPM[Nginx Proxy Manager]
    OC[OpenClaw 18789 interno]
    PT[Portainer 9443 interno]
    KP[Knowledge Portal 8085 interno]
    OBS[Blackbox / Prometheus]

    DNS --> NPM
    TLS --> NPM
    NPM --> OC
    NPM --> PT
    NPM --> KP
    OBS --> NPM

Relacion con OpenClaw

  • openclaw.alpuntodeventa.com.ar termina en npm-3
  • el upstream real observado es openclaw-gateway:18789
  • curl -I https://openclaw.alpuntodeventa.com.ar/ devolvio HTTP/2 200
  • el probe real de Blackbox devolvio:
  • probe_success 1
  • probe_http_status_code 200

Relacion con Knowledge Portal

  • doc.alpuntodeventa.com.ar termina en npm-4
  • el upstream real observado es knowledge-portal:8085
  • curl -I http://doc.alpuntodeventa.com.ar/ devolvio 301 a HTTPS
  • curl -I https://doc.alpuntodeventa.com.ar/ devolvio HTTP/2 200
  • search/search_index.json respondio 200
  • la pagina governance/knowledge/infrastructure/dns-tls/ devolvio contenido con mermaid

Relacion con Grafana y observabilidad

  • Grafana no depende de esta capa para uso actual porque corre en 127.0.0.1:3000
  • observabilidad si depende indirectamente de esta capa para medir servicios publicados:
  • target real https://openclaw.alpuntodeventa.com.ar/
  • target real http://host.docker.internal:81/
  • alertas reales:
    • OpenClawHttpsDown
    • NpmLocalAdminDown
    • BlackboxProbeFailed
    • CertificateExpiryWarning
    • CertificateExpiryCritical

Como verificar que funciona

  1. Confirmar DNS: getent ahostsv4 doc.alpuntodeventa.com.ar
  2. Confirmar proxy host y upstream: revisar /docker/nginx-proxy-manager/data/nginx/proxy_host/4.conf
  3. Confirmar certificado: openssl x509 -in /docker/nginx-proxy-manager/letsencrypt/live/npm-4/fullchain.pem -noout -subject -issuer -dates
  4. Confirmar respuesta publica: curl -I https://doc.alpuntodeventa.com.ar/
  5. Confirmar upstream interno: docker exec nginx-proxy-manager curl -I http://knowledge-portal:8085/
  6. Confirmar observabilidad: revisar probe_success, probe_ssl_earliest_cert_expiry y alertas de certificados en Prometheus

Que hacer si falla

  • si falla DNS: revalidar que el dominio siga resolviendo a 46.202.151.32
  • si falla TLS: revisar renewal/*.conf, expiracion de fullchain.pem y logs de nginx-proxy-manager
  • si falla solo OpenClaw publico: revisar primero el upstream openclaw-gateway:18789 antes de tocar DNS o certificados
  • si falla Portainer publicado: revisar primero https://portainer:9443 desde NPM
  • si falla Knowledge Portal publicado: revisar primero http://knowledge-portal:8085 desde NPM
  • si falla renovacion: confirmar que /data/letsencrypt-acme-challenge siga accesible y que los dominios mantengan reachability por 80/443
  • si falta evidencia: usar RESTORE-NPM.md para recovery controlado