Discourse ist eine kostenlose Open-Source-Software zum Erstellen von Internetforen, Communitys und Mailinglisten. Es wurde 2013 erstellt und in den Programmiersprachen Ruby und Javascript geschrieben. Discourse-Forum-Software wurde von vielen Organisationen verwendet, darunter Codeacademy, Udacity, Twitter Developers und Docker Community Forum.
In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie das Discourse Forum mit dem Nginx-Webserver unter Ubuntu 16.04 installieren und konfigurieren. Insbesondere zeigen wir Ihnen, wie Sie die Discourse Forum-Software installieren, Nginx als Reverse-Proxy für die Discourse-App konfigurieren und die Discourse-Forum-Software mit kostenlosem SSL von Letsencrypt sichern.
Was wir tun werden
- Installieren Sie Docker unter Ubuntu 16.04
- Installieren und konfigurieren Sie die Discourse Forum-Software
- Generieren Sie SSL-Letsencrypt unter Ubuntu 16.04
- Installieren und konfigurieren Sie Nginx als Reverse-Proxy für Discourse
- Diskurs-Web-Installer
- Zusätzliche Diskurskonfiguration
Voraussetzungen
- Ubuntu 16.04
- Root-Berechtigungen
- SMTP-Konto - Mailgun, SendGrid, Mailjet usw.
Schritt 1 – Docker auf Ubuntu 16.04 installieren
Die Discourse-Software ist in Ruby und Javascript geschrieben und verwendet PostgreSQL als Hauptdatenbank und Redis als Cache und für transiente Daten. Wir werden Discourse unter dem Docker-Container installieren.
Der Installationsvorgang wird auf Ubuntu 16.04 durchgeführt. Installieren Sie also zunächst Docker mit dem folgenden Befehl.
wget -qO- https://get.docker.com/ | sh
Überprüfen Sie nach Abschluss der Installation den Docker-Dienst und vergewissern Sie sich, dass er bereits auf dem System ausgeführt wird.
systemctl status docker
Stellen Sie außerdem sicher, dass sich Docker in der Start-Boot-App befindet.
systemctl is-enabled docker
Schritt 2 – Diskursforum installieren und konfigurieren
In diesem Schritt installieren und konfigurieren wir die Discourse-Software. Wir werden das Diskurs-Docker-Compose-Skript herunterladen, gemäß unseren Anforderungen konfigurieren und dann einen neuen Docker-Container für die Diskurs-Forum-Software erstellen.
Erstellen Sie ein neues Verzeichnis „/var/discourse“ und klonen Sie das Installationsskript.
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Wechseln Sie nun in das Verzeichnis „discourse“ und kopieren Sie das Beispiel der docker-compose-Datei.
cd /var/discourse
cp samples/standalone.yml containers/app.yml
Bearbeiten Sie die Datei „app.yml“ mit dem vim-Editor.
vim containers/app.yml
Docker-Portzuordnung konfigurieren
Standardmäßig werden alle HTTP- und HTTPS-Anforderungen vom Docker-Proxy verarbeitet. Und für diesen Leitfaden werden wir zu diesem Zweck Nginx verwenden – alle HTTP- und HTTPS-Daten werden vom Nginx-Webserver verarbeitet.
Daher müssen wir die Docker-Port-Mapping-Konfiguration ändern. Der Discourse-Container wird nur die HTTP-Verbindung haben, und der Host wird den neuen Port „2045“ öffnen und dem Container-Port 80 zuordnen.
Entkommentieren Sie die HTTPS-Zeile und ändern Sie die HTTP-Zeile mit dem neuen Port „2045“.
expose:
- "2045:80" # http
# - "443:443" # https
Konfiguration des Diskurs-Domainnamens
Geben Sie Ihren eigenen Domainnamen für den Diskurs ein, der wie unten in der Zeile „DISCOURSE_HOSTNAME“ installiert ist.
DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'
Geben Sie Ihre E-Mail-Adresse in die Zeile „DISCOURSE_DEVELOPER_EMAIL“ ein.
DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
SMTP-Konfiguration
Dies ist die wichtigste Konfiguration für Discourse Software. Stellen Sie sicher, dass Sie das SMTP-Konto für die Installation von Discourse haben – Sie können ein kostenloses SMTP-Konto von Mailgun, Mailjet oder SendGrid kaufen oder ausprobieren.
In diesem Tutorial verwenden wir das Free-Tier-SMTP-Konto von Mailgun. Entkommentieren Sie die SMTP-Konfiguration und geben Sie Ihr Konto wie unten ein.
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [email protected]
DISCOURSE_SMTP_PASSWORD: mypassword
Speichern und beenden.
Erstellen Sie als Nächstes ein neues Discourse Docker-Image basierend auf der Konfiguration der app.yml-Vorlage.
sudo ./launcher bootstrap app
Starten/initialisieren Sie danach den neuen Discourse-Container mit dem folgenden Befehl.
sudo ./launcher start app
Der Discourse-Container sollte betriebsbereit sein - überprüfen Sie ihn mit dem Docker-Befehl.
docker ps -a
Überprüfen Sie den offenen Port des Hosts mit netstat und stellen Sie sicher, dass der neue Docker-Proxy-Port 2045 auf der Liste steht.
netstat -plntu
Die Discourse Forum-Software wurde unter dem Docker-Container auf dem Host Ubuntu 16.04 installiert.
Schritt 3 – Generieren Sie SSL Letsencrypt auf Ubuntu 16.04
Das Discourse-Forum wird unter der sicheren HTTP-Verbindung ausgeführt und vom Nginx-Webserver verwaltet. Wir verwenden für diesen Leitfaden kostenloses SSL von Letsencrypt und müssen den Letsencrypt-Client auf dem Server installieren.
Installieren Sie letsencrypt mit dem folgenden apt-Befehl.
sudo apt install letsencrypt -y
Generieren Sie jetzt neue SSL-Zertifikate mit dem Befehl letsencrypt.
letsencrypt certonly
Geben Sie Ihre E-Mail-Adresse für die Verlängerungsbenachrichtigung ein und wählen Sie „OK“.
Wählen Sie für die Letsencrypt TOS (Nutzungsbedingungen) „Zustimmen“.
Geben Sie nun Ihren Diskurs-Domainnamen „discourse.hakase-labs.me“ ein.
Und wenn es fertig ist, erhalten Sie das Ergebnis wie unten gezeigt
Neue SSL-Zertifikate von letsencrypt wurden im Verzeichnis ‚/etc/letsencrypt/live‘ generiert.
Schritt 4 – Installieren und konfigurieren Sie Nginx als Reverse-Proxy für den Discourse-Container
In diesem Schritt installieren wir den Nginx-Webserver und konfigurieren ihn als Reverse-Proxy für den Discourse-Container, der auf Port 2045 ausgeführt wird.
Installieren Sie Nginx mit dem folgenden apt-Befehl.
sudo apt install nginx -y
Starten Sie nun Nginx und aktivieren Sie es mit dem Befehl systemctl zum Start beim Booten.
systemctl start nginx
systemctl enable nginx
Nginx wurde installiert und läuft auf dem HTTP-Port 80. Sie können dies mit netstat überprüfen.
netstat -plntu
Der Nginx-Webserver wurde auf dem Ubuntu 16.04-Server installiert.
Als Nächstes müssen wir eine neue virtuelle Hostdatei für den Discourse-Container erstellen. Gehen Sie in das nginx-Konfigurationsverzeichnis und erstellen Sie mit dem vim-Editor eine neue „discourse“-Datei.
cd /etc/nginx/
vim sites-available/discourse
Fügen Sie nun die folgende Konfiguration des virtuellen Discourse nginx-Hosts ein.
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.me;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.me;
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
include /etc/nginx/snippets/ssl.conf;
location / {
proxy_pass http://discourse.hakase-labs.me:2045/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://discourse.hakase-labs.me:2045/ https://discourse.hakase-labs.me;
}
}
Speichern und beenden.
Hinweis:
- Alle HTTP-Anfragen werden automatisch auf die HTTPS-Verbindung umgeleitet.
- Ändern Sie die SSL-Konfiguration mit Ihrem eigenen Pfadverzeichnis.
- Es gibt eine zusätzliche SSL-Konfiguration.
Erstellen Sie nun eine neue zusätzliche SSL-Konfigurationsdatei ‚ssl.conf‘.
vim snippets/ssl.conf
Fügen Sie die folgende Konfiguration in die Datei ein.
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
Speichern und beenden.
Aktivieren Sie nun den virtuellen Diskurshost mit dem Befehl „ln -s“, wie unten gezeigt.
ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/
Testen Sie die Konfiguration und vergewissern Sie sich, dass kein Fehler vorliegt, und starten Sie dann den Dienst neu.
nginx -t
systemctl restart nginx
Die Installation und Konfiguration von Nginx als Reverse-Proxy für den Discourse-Container ist abgeschlossen.
Schritt 5 – Discourse Web-Installer
Öffnen Sie Ihren Webbrowser und besuchen Sie die Diskurs-URL.
http://discourse.hakase-labs.me
Und Sie werden auf die sichere HTTP-Verbindung umgeleitet. Klicken Sie auf die Schaltfläche „Registrieren“, um einen neuen Administratorbenutzer zu erstellen.
Geben Sie nun Ihren Admin-Benutzer und Ihr Passwort ein und klicken Sie dann auf „Registrieren“.
Und Sie erhalten eine neue E-Mail-Bestätigung über Ihre Admin-Benutzeraktivierung.
Nachfolgend finden Sie eine Beispiel-E-Mail-Nachricht für die Bestätigung des Discourse-Kontos. Klicken Sie auf den Link, um das Administratorkonto zu bestätigen und zu aktivieren.
Und Sie sollten die unten gezeigte Diskursseite erhalten. Klicken Sie auf die Schaltfläche „Klicken Sie hier, um Ihr Konto zu aktivieren“.
Jetzt können Sie Ihr eigenes Discourse-Forum konfigurieren. Klicken Sie auf die Schaltfläche „Weiter“ und Sie müssen das Diskursforum mit 13 Schritten konfigurieren. Oder Sie können es später konfigurieren, indem Sie auf „Vielleicht später“ klicken.
Unten sehen Sie das auf dem Nginx-Webserver und HTTPS auf Ubuntu 16.04 installierte Discourse Forum.
Es folgt mein Discourse Admin Dashboard.
Das Discourse Forum wurde mit Nginx als Reverse-Proxy auf dem Ubuntu 16.04-Server installiert.
Schritt 6 – Zusätzliche Diskurskonfiguration
Während der Installation von Discourse kann ein Problem auftreten, bei dem Sie keine E-Mail-Bestätigung für die Aktivierung des Admin-Benutzers erhalten.
Um das Problem zu beheben, stellen Sie sicher, dass Sie das richtige SMTP-Konto in der Konfigurations-app.yml haben. Oder Sie können das Administratorkonto manuell von Ihrem Server aus aktivieren.
Um Ihr Administratorkonto manuell zu aktivieren, gehen Sie in das Verzeichnis „/var/discourse“.
cd /var/discourse
Greifen Sie nun mit dem folgenden Befehl auf den Diskurscontainer zu.
./launcher enter app
Und aktivieren Sie den ersten Admin-Benutzer mit dem Rails-Befehl wie unten.
Schienen c
u =User.last
u.admin =true
u.activate
u.save
Und jetzt können Sie sich mit Ihrem Benutzernamen und Passwort beim Discourse-Forum anmelden.
Referenzen
- https://meta.discourse.org/
- https://github.com/discourse/discourse/tree/master/docs