Este é um guia how-to para configurar variáveis de ambiente em uma instalação autohospedada do Discourse.
Nível de usuário necessário: Administrador
As variáveis de ambiente desempenham um papel crucial na configuração da sua instância do Discourse. Elas podem armazenar dados sensíveis como chaves de API e senhas de banco de dados, tornando sua instalação mais segura e flexível. No Discourse, as variáveis de ambiente são definidas no arquivo app.yml dentro da configuração do seu contêiner Docker.
Adicionar variáveis de ambiente a um arquivo .yml (YAML) é simples. Aqui está um exemplo básico:
# Este é um arquivo YAML com variáveis de ambiente
env:
NOME_DA_VARIAVEL: "Valor da Variável"
OUTRA_VARIAVEL: "Outro Valor"
No contexto de um contêiner Docker do Discourse, as variáveis de ambiente são armazenadas na seção env do seu arquivo app.yml.
Aqui está um exemplo de um arquivo app.yml:
## este é o template de contêiner Docker do Discourse tudo-em-um e autônomo
##
## Após fazer alterações neste arquivo, você deve reconstruir
## /var/discourse/launcher rebuild app
##
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar o Let's Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## consulte https://meta.discourse.org/t/17247 para obter detalhes
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Defina db_shared_buffers para um máximo de 25% da memória total.
## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
db_shared_buffers: "256MB"
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Quantas requisições web concorrentes são suportadas? Depende da memória e dos núcleos da CPU.
## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
UNICORN_WORKERS: 3
## TODO: O nome de domínio que esta instância do Discourse responderá
DISCOURSE_HOSTNAME: 'discourse.example.com'
## Descomente se você quiser que o contêiner seja iniciado com o mesmo
## nome de host (-h option) especificado acima (padrão "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de e-mails separados por vírgula que serão administradores e desenvolvedores
## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (obrigatório)
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, padrão true)
## Se você adicionou o template Let's Encrypt, descomente abaixo para obter um certificado SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## O endereço CDN para esta instância do Discourse (configurado para puxar)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins vão aqui
## consulte https://meta.discourse.org/t/19157 para detalhes
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Quaisquer comandos personalizados a serem executados após a compilação
run:
- exec: echo "Início dos comandos personalizados"
## Se você quiser definir o endereço de e-mail 'De' para o seu primeiro registro, descomente e altere:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
- exec: echo "Fim dos comandos personalizados"
Vamos começar a adicionar variáveis de ambiente ao seu site! ![]()
As instruções a seguir são escritas para uma Instalação Padrão do Discourse
Faça Login no Seu Servidor
Use uma ferramenta como PuTTY ou o terminal em sistemas baseados em Unix para fazer SSH no seu servidor.
ssh username@your-server-ip
Navegue até o Diretório do Discourse
Uma vez que você tenha acesso ao seu servidor, navegue até o diretório que contém a configuração do Docker do Discourse, que geralmente está localizado em /var/discourse.
cd /var/discourse
Abra o Arquivo app.yml
Você precisará abrir o arquivo app.yml em um editor de texto. Para este exemplo, usaremos nano.
nano containers/app.yml
Adicione Suas Variáveis de Ambiente
No arquivo app.yml, você encontrará uma seção env. É aqui que você pode adicionar suas variáveis de ambiente.
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 exemplo, se você quisesse definir a variável de ambiente DISCOURSE_ENABLE_CORS como true para habilitar o Compartilhamento de Recursos de Origem Cruzada (CORS), você adicionaria a seguinte linha à seção env:
env:
DISCOURSE_ENABLE_CORS: "true"
...
O espaço em branco e a formatação são importantes aqui, então certifique-se de manter a indentação correta (dois espaços) para a nova linha.
Depois de modificar suas variáveis, salve e feche o arquivo.
Reconstrua o Contêiner do Discourse
Finalmente, você precisará reconstruir seu contêiner Docker do Discourse para que as alterações entrem em vigor. Você pode fazer isso com o seguinte comando:
./launcher rebuild app
Alternativamente, para atualizar variáveis de ambiente para um contêiner em execução sem reconstruir, você também pode usar:
./launcher destroy app
./launcher start app
Após a conclusão do processo de reconstrução, suas variáveis de ambiente atualizadas estarão disponíveis para sua aplicação Discourse! ![]()