Kategorien
Server

Apache Proxy für den Discourse Forum Docker Container

Überschriften für eher technische Blogeinträge zu finden ist gar nicht so einfach. In diesem Blogeintrag soll es nochmal um das Discourse Forum gehen, dessen Installation ich hier neulich als Docker Container vorgestellt habe. Ich habe ein paar positive Rückmeldungen erhalten und eine wichtige Frage beantworten, die immer wieder auftauchte:

Wie installiere ich das Discourse Forum als Docker Container neben einem bereits auf Port 80 laufenden Apache Webserver in einer Subdomain, also so etwas wie http://forum.serverblogger.ch?

Ja, und nun machen Sie mal eine Überschrift daraus 🙂

Aber zurück zur Frage. Die einfachste Variante ist das Discourse Forum auf einem anderen Port laufen zu lassen, beispielsweise 85, und dann das Proxy Modul des Apache Webservers innerhalb eines Virtual Hosts zu nutzen um die Anfragen von Port 80 (Apache) nach Port 85 (Discourse) weiterzuleiten.

Konfiguration Discourse Forum

Wenn Sie Ihr Discourse Forum so wie in „Discourse – das bessere Forum“ beschrieben installieren, läuft es auf Port 80. Um es auf Port 85 laufen zu lassen, müssen Sie in der Datei containers/app.yml die entsprechende Zeile ändern.

cd /var/discourse
sudo nano containers/app.yml

## which TCP/IP ports should this container expose?
expose:
  - "85:80"   # fwd host port 85 to container port 80 (http)

Danach müssen Sie die das Paket neu aufbauen

sudo ./launcher rebuild app

Der Container wird automatisch gestartet. Danach können Sie den Discourse Container mit diesen Befehlen stoppen und starten:

sudo ./launcher stop app
sudo ./launcher start app

Das Forum läuft jetzt auf Port 85

Discourse - auf Port 85
Discourse – auf Port 85

Konfiguration Apache Webserver

Auf Apache Seite muss der Traffic nun von Port 80 auf Port 85 weitergeleitet werden.

Legen Sie einen virtuellen Host für die Domain forum.serverblogger.ch an

sudo nano /etc/apache2/sites-available/forum.serverblogger.ch.conf

Falls Sie das das Apache Proxy Modul noch nicht aktiviert haben, so wird es jetzt Zeit:

sudo a2enmod proxy_http
sudo a2enmod proxy

Starten Sie danach den Apache2 Server neu

sudo service apache2 restart

Leiten Sie die Anfragen mit den folgenden Befehlen weiter

<VirtualHost forum.serverblogger.ch:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName forum.serverblogger.ch
  ProxyPass / http://46.232.178.78:85/
  ProxyPassReverse / http://46.232.178.78:85/
</VirtualHost>

Aktivieren Sie die die vhost Konfiguration und starten Sie den Apache neu

sudo a2ensite forum.serverblogger.ch.conf
sudo service apache2 reload

Wenn Sie nun das Discourse Forum unter der neuen URL http://forum.serverblogger.ch aufrufen, ist das Ziel erreicht.

Discourse - auf Port 80 in Subdomain
Discourse – auf Port 80 in Subdomain

tl;dr: Docker Container verstehen sich auch mit einem bereits konventionell installierten Apache Webserver sehr gut

Kategorien
Server

Discourse – das bessere Forum

Das Motto von Discourse ist schon eine echte Herausforderung!

Civilized Discussion. On the Internet.

Die Idee hinter diesem Projekt ist eine Verbesserung der Diskussionskultur in Internetforen. Discourse ist eine Mischung aus einer mailing Liste, einem Diskussionsforum und einem Chatroom.
Aus Benutzersicht gibt es viele Features, die in sozialen Netzwerken heute Standard sind, wie beispielsweise „unendliches Scrollen“, Updates ohne die Seite aktualisieren zu müssen und Drag und Drop Dateianhänge. Discourse basiert auf JavaScript, Ruby on Rails, Redis und PresgreSQL und ist nicht ganz einfach auf gängigen LAMP Hosting Umgebungen zu installieren.

Die Technik allein führt ebenfalls kaum zu einer Verbesserung der Diskussionskultur und so wird grosser Wert auf soziale Prozesse gelegt. Themen können zusammengefasst werden, Nutzer können sich Vertrauen „erarbeiten“ auf der Basis verschiedener Parameter. Ein Moderationsystem versucht SPAM, schräge Inhalte und Auseinandersetzungen zu minimieren. Nutzer können interessante Beiträge „liken“ und hervorheben. Innerhalb der Beiträge können Zitate des vorhergehenden Beitrags auf- und zugeklappt werden. Es ist geeignet für Touch-Geräte und wechselt automatisch Layouts.

Discourse ist in 17 Sprachen verfügbar und hat eine beeindruckende Zahl von Plugins. Sie können Discourse beispielsweise in einer statischen Website einbinden um Kommentare zur ermöglichen. Auch in WordPress ist eine Einbindung möglich. Es gibt Anmeldemöglichkeiten über gängige Social Networks und natürlich Emojis und Avatare.

Alles wirkt sehr flauschig und gut und das meine ich ehrlich und nicht zynisch.

Es ist schade, dass Discourse durch die Software-Anforderungen nicht so verbreitet ist und daher dachte ich nach der Docker Vorstellung (Testumgebungen mit Docker), dass das geändert werden muss.

Ich beschreibe in diesem Post die Installation von Discourse aus einem Docker Image.

Installation

Sie benötigen ein installiertes Docker um fortfahren zu können (siehe Testumgebungen mit Docker).

Die Installation ist dann tatsächlich mit vier Befehlen erledigt

sudo mkdir /var/discourse
sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
sudo cp samples/standalone.yml containers/app.yml

Konfiguration

Um Discourse starten zu können, müssen Sie noch die Konfigurationsdatei anpassen

sudo nano containers/app.yml

Sie müssen dort den Domainnamen, den Port, den SMTP Server, Benutzer und Passwort eintragen. Der Mail Server ist wichtig. Ohne einen funktionierenden Mailserver können Sie kein Administrator- und keine Benutzerkonten anlegen.
Falls Sie keinen Mail-Server eingerichtet haben, könnten Sie sich auch kostenlos einen bei MailGun erstellen.

Der folgende Befehl richtet die komplette Umgebung für und das Forum selbst ein. Die Einrichtung kann durchaus ein paar Minuten dauern.

sudo ./launcher bootstrap app

Danach können Sie den Discourse Container mit diesen Befehlen starten und stoppen

sudo ./launcher start app
sudo ./launcher stop app

Falls der E-Mail Versand nicht funktioniert und Sie etwas in der Konfigurationsdatei ändern müssen, müssen Sie anschliessend die App neu aufbauen

sudo ./launcher rebuild app

Forum einrichten

Nachdem Discourse gestartet wurde, können Sie es im Browser aufrufen

Discourse
Discourse
Die E-Mail, die Sie nach dem Sign Up erhalten, enthält einen Bestätigungslink.

Bestätigungsemail von Discourse
Bestätigungsemail von Discourse
Nach der Bestätigung sollten Sie ihr Forum mit öffentliche Themen und öffentliche Beiträge starten um eine Diskussion in Gang zu bringen.

Discourse - Einrichtung
Discourse – Einrichtung
Discourse gibt sinnvolle Ratschläge bei der Erstellung von Topics und die Einrichtung ist weitgehend selbsterklärend.
Sie sollten sich Gedanken um die Ziele dieses Forums machen und vermutlich merken Sie sehr schnell, dass dieses Projekt sehr durchdacht ist 🙂

Discourse - Neues Topic
Discourse – Neues Topic

Benutzeranmeldungen

Benutzer erhalten nach Ihrer Registrierung eine übersichtliche E-Mail in der die Software erklärt wird und deutlich gemacht wird, dass es um „zivilisierte“ Diskussionkultur geht.

Discourse - Willkommen E-Mail
Discourse – Willkommen E-Mail
Discourse - Willkommen E-Mail
Discourse – Willkommen E-Mail

Fazit

Mit Docker ist es wirklich einfach, Anwendungen wie Discourse auf dem eigenen Server zu erforschen. Ob Sie bei einem produktiven Einsatz die Docker Variante oder einen eigenen Server für Ihr Forum nutzen ist auch einfacher zu entscheiden, wenn man erstmal ausführlich ausprobieren konnte.

Links


tl;dr: Diskutieren wie zivilisierte Menschen – im Internet. Probieren Sie die Open Source Software Discourse aus