In diesem Beitrag zeige ich Ihnen genau, wie Sie Discourse hinter einem Nginx Reverse Proxy ausführen. Und das unter Verwendung der unterstützten Installationsmethoden.
Voraussetzungen:
- Gültiger Domainname.
- Gültiges SSL-Zertifikat.
- Gültige DNS-Einträge, die auf den Domainnamen zeigen.
- Gültiger, funktionierender E-Mail-Server oder SMTP-Anbieter.
- Funktionierender Nginx Reverse Proxy und die Möglichkeit, auf die Instanz zuzugreifen und das SSL-Zertifikat für die spätere Verwendung zu erstellen.
- VM oder LxC-Container, auf dem Docker ausgeführt werden kann.
Für diese Anleitung verwende ich meine eigene Instanz als Beispiel, mit allen funktionierenden Features, Backups, Upgrades usw. Getestet für ca. 2 Wochen.
Meine Discourse VM-Spezifikationen:
- CPU: 4 Kerne
- RAM: 6 GB
- Swap: 8 GB (SSD Swapfile)
- Speicher: 50 GB (SSD)
- Betriebssystem: Ubuntu 22.04.3
Sie können das Minimum verwenden, aber beim Testen. Discourse nutzt leicht 2 GB. Inaktive Nutzung beträgt ca. 1,48 GB von 6 GB.
HINWEIS: Diese Installation verwendet den Reverse Proxy, um die SSL-Zertifikate zu erstellen. Certbot kann stattdessen verwendet werden.
SCHRITT 1:
Laden Sie den neuesten Ubuntu Server von Get Ubuntu Server | Download | Ubuntu herunter.
SCHRITT 2:
- Installieren Sie Ubuntu Server auf der VM/LxC-Vorlage.
1.1 Stellen Sie sicher, dass Ubuntu mit allen Serverpaketen auf dem neuesten Stand ist. - Verwenden Sie die folgenden Befehle, um alle erforderlichen Pakete zu installieren:
apt update -y && apt upgrade -y && apt wget curl zip git docker.io nginx -y && reboot
SCHRITT 3:
Installation von Discourse. Folgen Sie dem Anfängerleitfaden discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
Stellen Sie eine SSH-Verbindung zu Ihrem Server her und geben Sie einfach Folgendes ein:
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
Nachdem Sie das obige erledigt haben, können Sie ./discourse-setup ausführen.
Befolgen Sie alle Schritte und geben Sie sie korrekt ein, da dies für eine erfolgreiche Installation entscheidend ist.
Die Schritte fragen nach Folgendem; Beispiel aus dem Setup-Leitfaden:
Lassen Sie die Installation laufen, sie kann je nach Ihrer Internetverbindung und Ihren Server-Spezifikationen eine Weile dauern. Die vollständige Installation mit meiner VM-Einrichtung dauerte etwa 5-8 Minuten.
SCHRITT 4:
Sobald die Installation abgeschlossen ist, sehen Sie den Startbefehl, den der Docker-Container verwendet, und die generierte Container-ID (Hash).
HINWEIS: Da Sie sich über das WAN hinter einem Proxy befinden, wird eine 502-Fehlermeldung angezeigt, und da der Container das Netzwerk von Docker verwendet, ist er über WAN oder LAN nicht erreichbar, es sei denn, Sie verbinden sich mit dem Netzwerk 172.17.0.1/16, was wir nicht benötigen werden.
Überprüfen Sie doppelt, ob die Installation abgeschlossen ist und der Docker-Container läuft, indem Sie Folgendes verwenden:
docker ps
Sie sollten die folgende Ausgabe erhalten.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXX local_discourse/app “/sbin/boot” 6 days ago Up 7 hours app
SCHRITT 5:
Aktualisieren der Datei app.yml, um sie an die Reverse-Proxy-Konfiguration anzupassen.
Öffnen Sie mit Ihrem bevorzugten Texteditor /var/discourse/container/app.yml.
Ersetzen/Kommentieren Sie die folgenden Zeilen aus: (dies wird vom lokalen Nginx gehandhabt)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
Fügen Sie unmittelbar nach #- "templates/web.letsencrypt.ssl.template.yml" Folgendes hinzu:
- "templates/web.socketed.template.yml"
Kommentieren Sie dann den Expose-Bereich aus, da Discourse nun einen Websocket verwendet. Schließlich kann Nginx starten, da es die erforderlichen Ports 80 und 443 lokal freigibt.
#expose:
# - "80:80" # http
# - "443:443" # https
Um Discourse nun dazu zu zwingen, nur Links mit HTTPS bereitzustellen, fügen Sie im Abschnitt env Folgendes hinzu:
# FORCE SSL
DISCOURSE_FORCE_HTTPS: true
Um die Dinge endlich in Gang zu bringen, müssen Sie die App neu erstellen. Verwenden Sie dazu Folgendes:
cd /var/discourse
./launcher rebuild app
Lassen Sie dies laufen und abschließen. Um zu überprüfen, ob es erfolgreich war, stellen Sie sicher, dass der Docker-Ausführungsbefehl angezeigt wird, oder führen Sie einfach docker ps aus, und Sie sehen den laufenden Container.
SCHRITT 6:
Aktivieren von Nginx und Konfigurieren der Standardseite, um auf den Docker-Container zu verweisen. Ermöglicht dem Reverse Proxy den Zugriff auf den Container über das lokale Nginx.
Führen Sie Folgendes aus:
systemctl enable nginx && systemctl start nginx
Um zu überprüfen, ob es läuft. Versuchen Sie, die Standard-Landingpage für Nginx über Ihren Browser und Ihre lokale IP aufzurufen.
Z.B.:
http://10.10.0.4
Sie sollten eine Glückwunschseite von Nginx erhalten.
SCHRITT 7:
Aktualisieren der Standardkonfiguration auf Folgendes:
Leeren Sie zuerst die Konfigurationsdatei:
echo "" > /etc/nginx/sites-available/default
Öffnen Sie die Konfigurationsdatei mit Ihrem Texteditor und fügen Sie Folgendes hinzu:
HINWEIS: Aktualisieren Sie server_name mit Ihrer Domain und ssl_certificate, ssl_certificate_key mit dem Speicherort Ihres SSL-Zertifikats und Schlüssels.
Certbot kann verwendet werden, aber ich synchronisiere mein Zertifikat und meinen Schlüssel einfach von meinem Reverse Proxy.
server {
listen 80; listen [::]:80;
server_name add.yourdomain.com;
server_tokens off;
return 301 https://$host$request_uri;
}
# Default server configuration
#
server {
# SSL configuration
#
server_tokens off;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name add.yourdomain.com;
ssl_certificate /etc/ssl/certs/your_ssl_cert.bundle;
ssl_certificate_key /etc/ssl/private/your_ssl_cert.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
Speichern Sie die neue Standarddatei und führen Sie systemctl restart nginx aus.
SCHRITT 8:
Öffnen Sie Ihren Browser und rufen Sie die Domain Ihres Forums auf: https://somedomain.com. Sie werden mit der folgenden Seite begrüßt.
Das ist alles, fertig. Sie können dann die Schritte befolgen, um sich zu registrieren und Ihr Forum/Ihre Community zu starten :).
ZUSÄTZLICHER SCHRITT:
Wartung nach der Installation
Wir empfehlen dringend, automatische Sicherheitsupdates für Ihr Betriebssystem zu aktivieren. Verwenden Sie unter Ubuntudpkg-reconfigure -plow unattended-upgrades.
Für Unterstützung können Sie einfach diese Community nutzen. Für das lokale Nginx können Sie gerne um Hilfe in diesem Beitrag bitten.
