Recientemente he instalado Discourse en un VPS con Ubuntu Focal Fossa y funciona genial, pero tengo dificultades para resolver algunas peculiaridades de las URL.
A continuación se muestra el comportamiento que estoy observando (en Safari). He creado registros A con el nombre @, WWW y * en mi proveedor de dominio.
example.com [muestra la página 'Welcome to nginx!'] FALLA
www.example.com [redirige a https://example.com] ÉXITO
http://example.com [muestra la página 'Welcome to nginx!'] FALLA
http://www.example.com [redirige a https://example.com y funciona correctamente] ÉXITO
https://example.com [funciona como se esperaba, no redirige] ÉXITO
https://www.example.com [muestra el error 'Esta conexión no es privada'] FALLA
Me gustaría que mi instalación estuviera en la raíz/pico, por lo que ingresé example.com durante la configuración.
Hola @Falco, gracias por tu respuesta. Que yo sepa, no. La imagen del proveedor de VPS simplemente se llama “Focal Fossa Clean OS”, lo que supongo significa que no contiene herramientas de terceros.
Esto es directamente de la caja, siguiendo la ruta de instalación de “30 minutos” publicada.
sudo su
wget -qO- https://get.docker.com/ | sh
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
./discourse-setup
¿Podrías compartir aquí tu archivo app.yml (elimina los datos sensibles como las contraseñas)? El archivo se encuentra en /var/discourse/containers/app.yml.
¡Claro que sí, gracias! ¿Podría causar algún problema que mi dominio tenga una TLD extraña? (es un .community).
## esta es la plantilla del contenedor Docker de Discourse todo en uno y autónomo
##
## Después de realizar cambios en este archivo, DEBES reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TEN *MUCHO* CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES EN LOS ESPACIOS EN BLANCO O EN LA ALINEACIÓN!
## visita http://www.yamllint.com/ para validar este archivo según sea necesario
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Establece db_shared_buffers en un máximo del 25% de la memoria total.
## se establecerá automáticamente durante el arranque según la RAM detectada, o puedes sobrescribirlo
db_shared_buffers: "768MB"
## puede mejorar el rendimiento de ordenamiento, pero aumenta el uso de memoria por conexión
#db_work_mem: "40MB"
## ¿Qué revisión de Git debe usar este contenedor? (por defecto: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
## se establecerá automáticamente durante el arranque según las CPU detectadas, o puedes sobrescribirlo
UNICORN_WORKERS: 8
## TODO: El nombre de dominio al que responderá esta instancia de Discourse
## Obligatorio. Discourse no funcionará con una dirección IP desnuda.
DISCOURSE_HOSTNAME: example.com
## Descomenta si deseas que el contenedor se inicie con el mismo
## nombre de host (opción -h) que se especificó anteriormente (por defecto "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de correos electrónicos separados por comas que serán administradores y desarrolladores
## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'email@gmail.com'
## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
# La dirección, el nombre de usuario y la contraseña de SMTP son obligatorios
# ADVERTENCIA: el carácter '#' en la contraseña de SMTP puede causar problemas
DISCOURSE_SMTP_ADDRESS: smtp.postmarkapp.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: username
DISCOURSE_SMTP_PASSWORD: "password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, por defecto true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (requerido por algunos proveedores)
## Si agregaste la plantilla de Lets Encrypt, descomenta lo siguiente para obtener un certificado SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: email@gmail.com
## La dirección CDN http o https para esta instancia de Discourse (configurada para extraer)
## consulta https://meta.discourse.org/t/14857 para obtener detalles
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## La clave de dirección IP de geolocalización de Maxmind para la búsqueda de direcciones IP
## consulta https://meta.discourse.org/t/-/137387/23 para obtener detalles
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## El contenedor Docker es sin estado; todos los datos se almacenan en /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Los plugins van aquí
## consulta https://meta.discourse.org/t/19157 para obtener detalles
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Cualquier comando personalizado para ejecutar después de la compilación
run:
- exec: echo "Comienzo de los comandos personalizados"
## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
## Después de recibir el primer correo de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin de los comandos personalizados"
y
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
465fbf1c3fb8 local_discourse/app "/sbin/boot" 47 minutes ago Up 46 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
HTTP/1.1 301 Movido Permanentemente Servidor: nginx/1.18.0 Fecha: lun, 25 ene 2021 20:18:00 GMT Tipo de contenido: text/html Longitud del contenido: 169 Conexión: keep-alive Ubicación: https://example.com
¿Esto significa que ya estaba instalado? (lo siento, soy un n00b en esto)
Bueno, claramente soy un tonto. Lo intenté desde mi teléfono con 4G (para verificar el DNS local) y todas esas URLs funcionaron bien. Me volví a conectar al WiFi y todo funcionó bien. Entonces, limpié la caché de Safari en el escritorio y, ¡zas! — todo funciona allí también.
Debe haber sido de cuando estaba probando inicialmente el servidor y la caché no se ha vaciado desde entonces. Muchas gracias por tu ayuda para solucionar el problema y perdona por ocupar tu tiempo.