Supongamos que estás utilizando AWS RDS, o un servidor PostgreSQL existente gestionado externamente. Es bastante sencillo conseguir que Discourse utilice dicha configuración, sin necesidad de otorgar privilegios de superusuario a nada de lo que Discourse ejecute. A continuación, te explicamos cómo hacerlo.
Prerrequisitos
Discourse requiere que la versión principal de PostgreSQL coincida con la que incluimos en nuestras imágenes de Docker; si intentas ejecutarlo con una versión más nueva o más antigua, podría funcionar, pero no lo garantizamos, y si algo se rompe en el futuro, te quedas con las dos partes. También requerimos algunas extensiones que se distribuyen en el paquete postgresql-contrib (o su equivalente). También necesitarás la extensión pgvector (paquete postgresql-<versión>-pgvector), que es requerida por el complemento Discourse AI que se incluye con el núcleo de Discourse.
Genera aleatoriamente una contraseña para la conexión (más de 20 caracteres). En esta guía, usaremos s3kr1t como marcador de posición.
Configuración de la DB
Como superusuario de la base de datos, ejecuta lo siguiente:
CREATE USER discourse PASSWORD 's3kr1t';
CREATE DATABASE discourse OWNER discourse;
\c discourse
CREATE EXTENSION hstore;
CREATE EXTENSION pg_trgm;
CREATE EXTENSION unaccent;
CREATE EXTENSION vector;
Eso es todo lo que hay que hacer para preparar la DB para su uso por Discourse.
Configurar Discourse
Configura Discourse de la manera habitual, y luego edita containers/app.yml de la siguiente manera:
-
Elimina la línea
- "templates/postgres.template.yml"bajo la clave principaltemplates(cerca de la parte superior del archivo); -
Bajo la clave principal
env, establece lo siguiente:DISCOURSE_DB_USERNAME: discourse DISCOURSE_DB_PASSWORD: s3kr1t DISCOURSE_DB_HOST: <IP o nombre de host> DISCOURSE_DB_NAME: discourse -
También debes configurar lo siguiente si tu base de datos no utiliza el puerto predeterminado (5432):
DISCOURSE_DB_PORT: <puerto> DISCOURSE_DB_BACKUP_PORT: <puerto> -
Recompila con
./launcher rebuild app, y deberías estar listo para empezar.