Este script configura un proxy inverso de Traefik con los certs de LetsEnnpt para sus aplicaciones web públicas. En mi ejemplo, configuré un Dokuwiki (excelente texto sin formato con la aplicación Wiki Markdown). Mientras hacía esto, sentí que no había una guía realmente simple para lograr este resultado, y puede ser un poco confuso para otras personas, así que aquí tienes.
Nota: Esto actualmente funciona con Traefik V1. Soporte para que V2 llegue pronto.
Compré mi dominio a través de Namecheap. Cualquiera que sea el registrador de dominio que pase, necesitará configurar los registros DNS correctamente a través de ellos. Recomiendo Namecheap debido a lo simple que era, pero son casi lo mismo. Mientras el proveedor permita registros de DNS comodín, debe ser bueno para ir. En la pestaña "DNS avanzada" de Namecheap, solo agregué esto, cambie el valor de dirección IP a la dirección IP pública de su servidor:
| Tipo | Anfitrión | Valor | TTL |
|---|---|---|---|
| Un récord | * | Directorio | Automático |
Clon the Repo: git clone https://github.com/Starttoaster/docker-traefik.git
Directorio de cambio: cd docker-traefik
Ejecute el script: ./docker-traefik.sh
Directorio de cambio: cd /opt/traefik
Una vez que responda un par de preguntas, el guión debe completarse. Si se está ejecutando en un VPS (servidor en la nube), debe estar listo para ejecutar docker-compose up -d y mencionar sus aplicaciones. Si está autohospedando desde casa, pase a las siguientes secciones para las redes domésticas. Si desea agregar más u otras aplicaciones al archivo Docker-Compose, simplemente necesita agregar la sección Etiquetas a cada servicio y simplemente cambiar el subdominio a lo que desea que sea su URL.
Si ha realizado esta guía en un servidor utilizando una dirección IP privada (detrás de algún tipo de enrutador), asegúrese de abrir también la página de configuración de su enrutador y reenviar los puertos 80 y 443 a la dirección IP privada de su servidor. No puedo instruir sobre cómo hacer esto ya que cada enrutador tiene diferentes páginas de configuración, pero simplemente busque en Google su enrutador + "reenvío de puertos". Mientras esté aquí, también asegúrese de que su servidor tenga una IP privada asignada estáticamente. Esto ahorrará mucho dolor de cabeza si su servidor alguna vez se reinicia y se le asigna una nueva IP desde su grupo DHCP.
Configurar DNS dinámicos es completamente opcional. Los proveedores de servicios de Internet no suelen asignar direcciones IP públicas estáticas a los usuarios residenciales de los hogares. Puede encontrar un día que su módem/enrutador de cable se restableció por alguna razón. Después de que el módem/enrutador volvió a estar en línea, se le asignó una nueva dirección IP pública por el DHCP de su ISP. En este caso tiene dos opciones:
Encuentre manualmente su nueva dirección IP pública, (vaya a: https://diagnostic.opendns.com/myip) y cambie las secciones IP-Address para que coincidan con su nueva dirección IP en su DNS A Records con quien sea su proveedor de DNS. El mío es el DNS básico de Namecheap.
Configurar DNS dinámicos (DDNS). DDNS ejecuta una aplicación web mínima desde su servidor doméstico que envía periódicamente una actualización de la dirección IP que está utilizando actualmente para su proveedor DNS. Se autentica al proveedor de DNS a través de una (s) PassKey (s) asignada por el proveedor de DNS, y si su dirección IP alguna vez cambia, el proveedor de DNS actualizará sus registros A automáticamente. Recomiendo seguir las instrucciones de configuración aquí: https://github.com/qdm12/ddns-updater
El contenedor admite Namecheap, Cloudflare, GoDaddy, Duckdns y Dreamhost. Asegúrese de tener todos los parámetros necesarios para cuando el script los solicite siguiendo las instrucciones con el propietario del contenedor. Si está configurando CloudFlare, consulte mi esencia en las llamadas de la API de CloudFlare aquí.
Esto es completamente opcional. El tablero de Traefik ofrece información sobre las aplicaciones detrás de su proxy web. He agregado un condicional que le permite automatizar la configuración del tablero web. Necesitará un 'htpasswd' que he incluido una sección a continuación sobre cómo obtener una. Un htpasswd es solo un nombre de usuario con una contraseña hash. Consulte 'para generar un htpasswd' a continuación. Cuando se configure el tablero de Traefik, solo necesitará ingresar su nombre de usuario y contraseña en el cuadro de diálogo que aparece en https://dash.YOUR-DOMAIN.TLD
Esto es completamente opcional. Si desea que todas sus aplicaciones tengan una capa adicional de protección, puede configurar un htpasswd en el archivo traefik.toml. Un htpasswd es solo un nombre de usuario con una contraseña hash. He agregado un condicional en el script que lo configurará para usted. Todo lo que necesita es un "htpasswd" para ingresar cuando el script lo solicite. Cuando desee visitar una de sus aplicaciones web, deberá ingresar el nombre de usuario y la contraseña que eligió en el cuadro de diálogo que aparece.
htpasswd -nb user passwordAsegúrese de reemplazar al usuario con el nombre de usuario deseado y la contraseña con la contraseña deseada; o
http://www.htaccesstools.com/htpasswd-generator/Simplemente ingrese su nombre de usuario y contraseña deseados, luego copie esa cadena e ingrese en el script cuando lo solicite.
A GitHub User QDM12 por su imagen DNS DNS de actualización de DNS ligera. QDM12/DDNS-UPDATER
Al usuario de GitHub Szepeviktor por sus contribuciones a este script.
A Miroslav Prasil para obtener la mejor imagen Dockuwiki Docker en Docker Hub.