A pesar de tener toda la intención de dejar Discourse debido a la absoluta falta de documentación actual que no esté hiperenfocada en CentOS/Nginx, una persona increíblemente generosa y paciente de DigitalOcean respondió a un hilo que había creado allí y, tras algunos ensayos y errores, ayudó a elaborar un tutorial sencillo de seguir para usuarios potenciales de Discourse que se encuentran en las mismas circunstancias que yo.
Como recordatorio, esas circunstancias son:
Instalar Discourse en el mismo servidor que Apache | Usando Ubuntu 18.04 | DigitalOcean
créditos a Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (primera respuesta)
Requisitos previos
- Por precaución, asegúrate de hacer una copia de seguridad de tu Droplet, para que, si algo sale mal, puedas volver a una versión funcional.
- Conéctate por SSH a tu Droplet.
- Apache instalado; puedes seguir los pasos para hacerlo aquí:
Paso 1: Instalar Docker
Para instalar Docker, sigue los pasos aquí:
Paso 2: Descargar Discourse
Primero, crea un directorio donde almacenarás los archivos de Discourse:
mkdir /var/discourse
Después, clona la imagen oficial de Docker de Discourse en /var/discourse:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Paso 3: Configurar Discourse para escuchar en el puerto 8080
Usaremos la plantilla standalone.yml, que incluye todos los servicios necesarios como PostgreSQL, Redis, etc.
Copia el archivo de muestra con el siguiente comando:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
Después, edita el archivo con tu editor favorito. Abre /var/discourse/containers/app.yml y actualiza los puertos en las líneas 23 y 24:
## ¿Qué puertos TCP/IP debe exponer este contenedor?
expose:
- "8080:80" # reenvía el puerto 8080 del host al puerto 80 del contenedor (HTTP)
- "8443:443" # reenvía el puerto 8443 del host al puerto 443 del contenedor (HTTPS)
Además, si aún no tienes un certificado SSL, asegúrate de comentar la línea 16:
#- "templates/web.ssl.template.yml"
Simplemente añade el símbolo # al principio de la línea - "templates/web.ssl.template.yml"; de lo contrario, Discourse no se iniciará.
Paso 4: Configurar Discourse
Cambia de directorio:
cd /var/discourse
Luego, inicia Discourse (ya que es la primera vez que inicias el servicio, se realizará el arranque de la aplicación con los nuevos cambios que tengas en tu archivo app.yml):
./discourse-setup
Nota: Asegúrate de proporcionar una configuración válida del servidor de correo; de lo contrario, la configuración podría fallar.
Paso 5: Configurar Apache
En tu /etc/apache2/sites-available/, crea un nuevo archivo llamado forum.example.com.conf y agrega el siguiente contenido de Vhost:
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- Habilita el Vhost con el siguiente comando:
a2ensite forum.example.com
- Habilita el módulo proxy:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Reinicia Apache:
systemctl restart apache2
Después de esto, podrás acceder a Discourse directamente mediante tu nombre de dominio.
Nota 1: Al instalar Discourse, es posible que app.yml se sobrescriba y las líneas 16/17 (SSL) se descomenten. Tendrás que volver a comentar esas líneas y luego reconstruir la aplicación (no olvides cambiar de directorio): ./launcher rebuild app
Nota 2: SSL no está habilitado para Discourse con esta guía. Como era de esperar, parece que no existe documentación para habilitar SSL de Let’s Encrypt si ya lo tienes habilitado para Apache. Si alguien encuentra una solución para esto, por favor, comunícate.