Foro Discourse con Nginx en Debian o Ubuntu

Actualizado el miércoles, 8 noviembre, 2017

Foro Discourse con Nginx en Debian o Ubuntu. Discurse es un excelente forum de código abierto.  Está escrito en JavaScript y Ruby on Rails  y usa el framework Ember.js. Usa PostgreSQL como sistema de base de datos.

La verdad es que no tiene nada que ver con otros sistemas de foros, Discurse está orientado a ser un sistema mucho más social que técnico, de forma que se mejora la calidad de los hilos del foro, al ser todo mucho más interactivo.

Solo tiene un inconveniente… no es un simple script que lo instalas y ya corre, requiere una instalación un pelín más laboriosa. Ademas requiere de un VPS o al menos una parte importante (mínimo) en exclusividad para el.

Foro Discourse con Nginx en Debian o Ubuntu 1

Procedemos a la instalación de un foro discourse con Nginx en Debian o Ubuntu.

 

Instalación de un foro Discourse con Nginx

Se requiere la instalación de un Docker.

wget -qO- https://get.docker.com/ | sh

Una vez instalado, comprueba el estado.
systemctl status docker

Que inicie con el sistema.
systemctl is-enabled docker

Ahora instalaremos y configuraremos Discourse, no te saltes ningún paso.
mkdir -p /var/discourse

git clone https://github.com/discourse/discourse_docker.git /var/discourse

cd /var/discourse

cp samples/standalone.yml containers/app.yml

Editamos app.yml.
nano containers/app.yml

Por defecto, las solicitudes HTTP y HTTPS son manejadas por el proxy de Docker. Pero nosotros queremos usar Nginx y no el proxy de Docker.

Abrimos el puerto ‘2045’ y le asignamos el 80 del docker. Para ello cambia el puerto http por el 2045 y descomentas la linea de https, debe quedar de la siguiente forma:

expose:
  - "2045:80"   # http
  - "443:443" # https

En el mismo archivo modifica el hostname según tus preferencias.
DISCOURSE_HOSTNAME: 'discourse.midominio.es'

Agrega el email.
DISCOURSE_DEVELOPER_EMAILS: 'sololinux@midominio.es'

Configuramos SMTP.
DISCOURSE_SMTP_ADDRESS: smtp.midominio.es 
DISCOURSE_SMTP_PORT: 587 
DISCOURSE_SMTP_USER_NAME: user@midominio.es 
DISCOURSE_SMTP_PASSWORD: my-password

Ya está… guarda el archivo y cierra el editor.

Creamos una nueva imagen de Discourse Docker basada en el archivo que configuramos anteriormente.

sudo ./launcher bootstrap app

sudo ./launcher start app

Verifica que está en funcionamiento.
docker ps -a

Verifica los puertos abiertos y asegúrate que está abierto el 2045.
netstat -plntu

Con esto terminamos la instalación de Discourse Forum en el contenedor docker.

 

Generar SSL Letsencrypt

Foro Discourse con Nginx en Debian o Ubuntu 2

Instalamos el certificado gratuito SSL Let’s Encrypt.

sudo apt install letsencrypt -y

Generamos los certificados.
letsencrypt certonly

Aparecerá un menú Gui, en el cual te hará una serie de preguntas, tu email, aceptar las condiciones, etc…

Cuando termine ese proceso, se generaran lo certificados en:

/etc/letsencrypt/live

 

Instalar y configurar Nginx como proxy inverso

sudo apt install nginx -y

systemctl start nginx

systemctl enable nginx

Con estos simples comandos ya tenemos instalado y corriendo nuestro Nginx, podemos verificar que por defecto corre por el puerto 80.
netstat -plntu

Ahora creamos un nuevo archivo para el host virtual del doker de discourse.
cd /etc/nginx/

nano sites-available/discourse

Copia y pega el siguiente código en el nuevo archivo. Modifica los datos de tu dominio, etc…
server {
    listen 80; listen [::]:80;
    server_name discourse.midominio.es;
 
    return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl http2;  
    server_name discourse.midominio.es;

    ssl_certificate /etc/letsencrypt/live/discourse.midominio.es/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/discourse.midominio.es/privkey.pem;
    include /etc/nginx/snippets/ssl.conf;
 
    location / {
        proxy_pass ;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect  ;
    }
}

Guarda y cierra el editor.

Creamos el archivo de configuración SSL.

nano snippets/ssl.conf

Copia y pega el siguiente código:
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Guarda y cierra el editor.

Activamos el host virtual.

ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/

Comprobamos que todo sea correcto y reiniciamos  Nginx.
nginx -t

systemctl restart nginx

La instalación de Nginx a terminado, no te preocupes, ni desesperes, ya hemos terminado. Solo queda instalar el Discourse propiamente dicho.

 

Instalar la web de Discourse

Abre la url del nuevo foro desde cualquier navegador web.


te redirigirá automáticamente a:

Tan solo debes rellenar los campos solicitados, mail, usuario, password, etc… y ya lo tienes en marcha.

Foro Discourse con Nginx en Debian o Ubuntu 3

Foro Discourse con Nginx en Debian o Ubuntu 4

Disfruta de tu flamante nuevo foro discourse.

Agregar comentario