Dies ist eine #how-to::tag-Anleitung zum Einrichten von Umgebungsvariablen in einer selbst gehosteten Discourse-Installation.
Erforderliches Benutzerniveau: Administrator
Umgebungsvariablen spielen eine entscheidende Rolle bei der Konfiguration Ihrer Discourse-Instanz. Sie können sensible Daten wie API-Schlüssel und Datenbankpasswörter speichern, wodurch Ihre Installation sicherer und flexibler wird. In Discourse werden Umgebungsvariablen in der Datei app.yml innerhalb Ihrer Docker-Container-Einrichtung festgelegt.
Das Hinzufügen von Umgebungsvariablen zu einer .yml (YAML) Datei ist unkompliziert. Hier ist ein grundlegendes Beispiel:
# Dies ist eine YAML-Datei mit Umgebungsvariablen
env:
VARIABLE_NAME: "Variablenwert"
ANOTHER_VARIABLE: "Anderer Wert"
Im Kontext eines Discourse Docker-Containers werden Umgebungsvariablen im Abschnitt env Ihrer app.yml-Datei gespeichert.
Hier ist ein Beispiel für eine app.yml-Datei:
## Dies ist die All-in-One, Standalone Discourse Docker Container-Vorlage
##
## Nach Änderungen an dieser Datei müssen Sie neu erstellen
## /var/discourse/launcher rebuild app
##
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports soll dieser Container verfügbar machen?
## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Setzen Sie db_shared_buffers auf maximal 25% des Gesamtspeichers.
## wird automatisch von bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können überschreiben
db_shared_buffers: "256MB"
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
## wird automatisch von bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können überschreiben
UNICORN_WORKERS: 3
## TODO: Der Domainname, auf den diese Discourse-Instanz reagieren wird
DISCOURSE_HOSTNAME: 'discourse.example.com'
## Kommentieren Sie dies aus, wenn der Container mit demselben
## Hostnamen (-h Option) wie oben angegeben gestartet werden soll (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste von durch Kommas getrennten E-Mails, die bei der ersten Anmeldung Administrator und Entwickler werden
## Beispiel: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO: Der SMTP-Mailserver, der zum Validieren neuer Konten und zum Senden von Benachrichtigungen verwendet wird
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (obligatorisch)
DISCOURSE_SMTP_PORT: 587 # (optional)
DISCOURSE_SMTP_USER_NAME: user@example.com # (optional)
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword # (optional)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard true)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Die CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins kommen hierher
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Alle benutzerdefinierten Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die E-Mail-Adresse des Absenders für Ihre erste Registrierung festlegen möchten, kommentieren Sie sie aus und ändern Sie sie:
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Nach Erhalt der ersten Registrierungs-E-Mail kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
- exec: echo "Ende der benutzerdefinierten Befehle"
Lassen Sie uns mit dem Hinzufügen von Umgebungsvariablen zu Ihrer Website beginnen! ![]()
Die folgenden Anweisungen sind für eine Standard-Discourse-Installation geschrieben
Melden Sie sich bei Ihrem Server an
Verwenden Sie ein Tool wie PuTTY oder das Terminal auf Unix-basierten Systemen, um sich per SSH bei Ihrem Server anzumelden.
ssh benutzername@ihre-server-ip
Navigieren Sie zum Discourse-Verzeichnis
Sobald Sie Zugriff auf Ihren Server haben, navigieren Sie zu dem Verzeichnis, das Ihre Discourse Docker-Einrichtung enthält. Dieses befindet sich normalerweise unter /var/discourse.
cd /var/discourse
Öffnen Sie die Datei app.yml
Sie müssen die Datei app.yml in einem Texteditor öffnen. Für dieses Beispiel verwenden wir nano.
nano containers/app.yml
Fügen Sie Ihre Umgebungsvariablen hinzu
In der Datei app.yml finden Sie einen Abschnitt env. Hier können Sie Ihre Umgebungsvariablen hinzufügen.
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
Wenn Sie beispielsweise die Umgebungsvariable DISCOURSE_ENABLE_CORS auf true setzen möchten, um Cross-Origin Resource Sharing (CORS) zu aktivieren, würden Sie die folgende Zeile zum Abschnitt env hinzufügen:
env:
DISCOURSE_ENABLE_CORS: "true"
...
Der Leerraum und die Formatierung sind hier wichtig, stellen Sie also sicher, dass Sie die richtige Einrückung (zwei Leerzeichen) für die neue Zeile beibehalten.
Sobald Sie Ihre Variablen geändert haben, speichern und schließen Sie die Datei.
Erstellen Sie den Discourse-Container neu
Schließlich müssen Sie Ihren Discourse Docker-Container neu erstellen, damit die Änderungen wirksam werden. Dies können Sie mit dem folgenden Befehl tun:
./launcher rebuild app
Alternativ können Sie Umgebungsvariablen für einen laufenden Container aktualisieren, ohne ihn neu zu erstellen, indem Sie auch Folgendes verwenden:
./launcher destroy app
./launcher start app
Nach Abschluss des Neuerstellungsprozesses sind Ihre aktualisierten Umgebungsvariablen für Ihre Discourse-Anwendung verfügbar! ![]()