Esta es una guía #cómo-hacer::tag para configurar variables de entorno en una instalación autoalojada de Discourse.
Nivel de usuario requerido: Administrador
Las variables de entorno juegan un papel crucial en la configuración de tu instancia de Discourse. Pueden almacenar datos sensibles como claves API y contraseñas de bases de datos, haciendo tu instalación más segura y flexible. En Discourse, las variables de entorno se configuran en el archivo app.yml dentro de la configuración de tu contenedor Docker.
Añadir variables de entorno a un archivo .yml (YAML) es sencillo. Aquí tienes un ejemplo básico:
# Este es un archivo YAML con variables de entorno
env:
NOMBRE_VARIABLE: "Valor de la Variable"
OTRA_VARIABLE: "Otro Valor"
En el contexto de un contenedor Docker de Discourse, las variables de entorno se almacenan en la sección env de tu archivo app.yml.
Aquí tienes un ejemplo de un archivo app.yml:
## esta es la plantilla de contenedor Docker de Discourse todo en uno y autónoma
##
## Después de realizar cambios en este archivo, debes reconstruir
## /var/discourse/launcher rebuild app
##
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 añadir 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 a un máximo del 25% de la memoria total.
## será establecido automáticamente por bootstrap basado en la RAM detectada, o puedes anularlo
db_shared_buffers: "256MB"
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.
## será establecido automáticamente por bootstrap basado en las CPUs detectadas, o puedes anularlo
UNICORN_WORKERS: 3
## TODO: El nombre de dominio al que responderá esta instancia de Discourse
DISCOURSE_HOSTNAME: 'discourse.example.com'
## Descomenta si deseas que el contenedor se inicie con el mismo
## nombre de host (-h option) que el especificado anteriormente (por defecto "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (obligatorio)
DISCOURSE_SMTP_PORT: 587 # (opcional)
DISCOURSE_SMTP_USER_NAME: user@example.com # (opcional)
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword # (opcional)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, por defecto true)
## Si añadiste la plantilla Lets Encrypt, descomenta abajo para obtener un certificado SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## La dirección CDN para esta instancia de Discourse (configurada para tirar)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## El contenedor Docker no tiene 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 construcción
run:
- exec: echo "Comenzando comandos personalizados"
## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Después de recibir el primer correo electrónico de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
- exec: echo "Fin de los comandos personalizados"
¡Empecemos a añadir variables de entorno a tu sitio! ![]()
Las siguientes instrucciones están escritas para una Instalación Estándar de Discourse
Inicia sesión en tu servidor
Usa una herramienta como PuTTY o la terminal en sistemas basados en Unix para conectarte por SSH a tu servidor.
ssh username@your-server-ip
Navega al Directorio de Discourse
Una vez que tengas acceso a tu servidor, navega al directorio que contiene tu configuración Docker de Discourse, normalmente ubicado en /var/discourse.
cd /var/discourse
Abre el archivo app.yml
Necesitarás abrir el archivo app.yml en un editor de texto. Para este ejemplo, usaremos nano.
nano containers/app.yml
Añade tus variables de entorno
En el archivo app.yml, encontrarás una sección env. Aquí es donde puedes añadir tus variables de entorno.
env:
DISCOURSE_HOSTNAME: 'discourse.example.com'
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword
Por ejemplo, si quisieras establecer la variable de entorno DISCOURSE_ENABLE_CORS a true para habilitar Compartir Recursos Entre Orígenes (CORS), añadirías la siguiente línea a la sección env:
env:
DISCOURSE_ENABLE_CORS: "true"
...
El espacio en blanco y el formato son importantes aquí, así que asegúrate de mantener la indentación correcta (dos espacios) para la nueva línea.
Una vez que hayas modificado tus variables, guarda y cierra el archivo.
Reconstruye el contenedor de Discourse
Finalmente, necesitarás reconstruir tu contenedor Docker de Discourse para que los cambios surtan efecto. Puedes hacerlo con el siguiente comando:
./launcher rebuild app
Alternativamente, para actualizar las variables de entorno de un contenedor en ejecución sin reconstruir, también puedes usar:
./launcher destroy app
./launcher start app
¡Después de que el proceso de reconstrucción se complete, tus variables de entorno actualizadas estarán disponibles para tu aplicación Discourse! ![]()