Hola @pfaffman, la edición a la publicación original tiene un + erróneo en la línea to:, lo que rompe la expresión regular. Debería eliminarse.
Por separado, el siguiente párrafo necesita ser editado ya que ya no tiene sentido:
Hay dos patrones que deben ser reemplazados, uno que termina en --keylength y otro que termina en --fullchainpath (en el archivo real, tu dominio original está antes de cada uno de estos modificadores). Introduce tu (sub)dominio (y cualquier subdominio adicional precedido por -d ) y luego añade lo siguiente a la sección hooks de tu app.yml (hacia el final del archivo):
Sugiero:
Usa domain1 y domain2 en esta publicación para generar el código que necesitarás. domain1 es tu dominio original y domain2 es el dominio adicional que deseas agregar. Agrega el bloque after_ssl: resultante a la sección hooks: de tu app.yml y haz un launcher rebuild app.
falta en el contenedor de Docker. Por lo tanto, no se compilará. Solución alternativa: https://www.forcewww.com/
Así que esto dejó de funcionar:
## Añadir certificado Let's Encrypt para nombre de dominio no www y www
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.de -d www.example.de --keylength"
Antes de eliminar este tipo de herramientas/binarios del contenedor de Docker, sería bueno recibir una notificación…
¿Es este un cambio en la forma en que Discourse maneja LetsEncrypt o un cambio en LetsEncrypt en sí?
Tengo un servidor que actualmente se ve afectado por este problema. Por ahora, mi solución es comentar esa parte de app.yml, pero creo que necesitamos alguna forma de agregar estos certificados adicionales a la configuración en el futuro.
Discourse ha movido eso a otro archivo. Actualmente se está trabajando en ello. Intentaré echar un vistazo en los próximos días para ver qué se necesita para que sea posible admitir varios subdominios.
Errno::ENOENT: No existe tal archivo o directorio @ rb_sysopen - /usr/local/bin/letsencrypt
Ubicación del fallo: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
El reemplazo falló con los parámetros {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz/”, “to”=>“-d spokes.nz -d www.spokes.nz”}
El arranque falló con el código de salida 1 FALLÓ EL ARRANQUE por favor desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno.
Quizás intenta poner el reemplazo en la estrofa de abajo, donde solía estar la información de SSH, si eso tiene sentido (estoy en mi teléfono, intentaré mirar mañana).
Supongo que el error que estás recibiendo podría estar relacionado con la falta de un espacio antes de la barra final y las comillas finales en las respectivas líneas de la estrofa sugerida en tu archivo app.yml.
Infiero por el mensaje de error que tus respectivas líneas son (textualmente):
from: /-d spokes.nz/
to: “-d spokes.nz -d www.spokes.nz”
Lo digo porque en mi caso las líneas son:
from: /-d nzarchitecture.net.nz /
to: "-d nzarchitecture.net.nz -d www.nzarchitecture.net.nz "
Y con espacios justo antes del final de cada línea, como se muestra, ahora puedo reconstruir Discourse sin lanzar ese error. (si miras de cerca verás que la estrofa actualizada de @pfaffman publicada al principio de este hilo mostraba esos espacios adicionales).
Tampoco tengo ningún archivo en el directorio usr/local/bin/ (como se indica en tu mensaje de error), lo que me hizo sospechar que la falta de ese archivo letsencrypt no es lo que desencadena el error.
Dicho esto, para mí, aunque Discourse funciona bien en su URL nzarchitecture.net.nz, desafortunadamente todavía obtengo un error de certificado si escribo www.nzarchitecture.net.nz en un navegador, no sé si esto se debe a la falta de ese archivo.
Solo señalo que actualmente estoy intentando integrar esto en las variables de entorno para manejarlas directamente en discourse_docker, algo así como una lista separada por comas de alias de nombres de host. Parece un caso de uso lo suficientemente común como para manejarlo directamente.
Hará que la configuración sea más fácil para este caso, por lo que nadie necesitará hacer modificaciones en sus app.ymls.
Mi plan actual es con DISCOURSE_HOSTNAMEwww.domain.com
Permitir variables de entorno como: DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com extraerá el certificado, válido para todos los nombres de host.
(Mientras estoy en ello, las renovaciones automáticas de Let’s Encrypt tampoco parecen funcionar correctamente, así que también las estoy arreglando).
¡Me lo perdí! Hice lo que sugeriste, pero sigo teniendo un error de arranque:
FALLÓ
Errno::ENOENT: No such file or directory @ rb_sysopen - /usr/local/bin/letsencrypt
Ubicación del fallo: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
replace falló con los parámetros {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz /”, “to”=>"-d spokes.nz -d www.spokes.nz "}
bootstrap falló con el código de salida 1 FALLÓ EL ARRANQUE por favor desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno.
Probablemente no sea el problema central aquí, pero en mi intento de solución, también actualicé la versión de Docker que se ejecuta en Digital Ocean de 20.0.4 (creo) a 28.3.3; posiblemente eso ayudó, al menos con este error. Si no es más, eliminó las advertencias de ‘obsoleto’ de Docker que estaba recibiendo al principio del proceso de reconstrucción.
Hola a todos, solo para informarles, los dominios múltiples ahora están fusionados. En la última versión de discourse_docker, ahora pueden incluir las plantillas ssl y letsencrypt y configurar variables de entorno del tipo DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com para configurar nombres de host alternativos.
Su sitio además obtendrá los nombres de host configurados con la solicitud de certificado sin cambios adicionales en la configuración.
[quote=“featheredtoast, post:172, topic:56685”]Ahora puedes incluir las plantillas ssl y letsencrypt y configurar variables de entorno del tipo DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com para configurar nombres de host alternativos.
[/quote]
Perdona mi ignorancia, pero ¿se puede editar esto a través de alguna configuración del sitio o hay que editar algo en app.yml?
Si es lo primero, no tuve suerte encontrándolo después de actualizar a la última versión y, si es lo segundo, ¿qué se debería modificar específicamente en app.yml?
Sería aún mejor si hubiera alguna forma inteligente para que Discourse escribiera las alias proporcionadas por el administrador en el propio archivo app.yml al actualizar, o para dejar la información donde una instrucción de app.yml pueda leerla.