Let's Chat auf Uberspace installieren
Ich wollte mir mal die Slack Alternative Let's Chat anschauen und auf meinem Uberspace installieren. Wie man diese Node App zum laufen bekommt beschreibe ich hier.
Da NodeJS auf Uberspace bereits vorinstalliert ist, müsst ihr hier schon mal nichts machen, Let's Chat benötigt aber noch eine MongoDB Instanz. Diese erstellt ihr durch
uberspace-setup-mongodb
die Ausgabe sollte wie folgt aussehen
# uberspace-setup-mongodb
Creating the ~/mongodb database directory
Creating the ~/etc/run-mongodb/run service run script
Creating the ~/etc/run-mongodb/log/run logging run script
Symlinking ~/etc/run-mongodb to ~/service/mongodb to start the service
Waiting for the service to start ... 1 2 3 4 started!
Creating administrative user
Congratulations - You can now reach your dedicated MongoDB installation!
Please note that your MongoDB uses the NON-standard port number 21080.
This allows running multiple instances of MongoDB on the same machine for different users.
Hostname: localhost
Portnum#: 21080
Username: username_mongoadmin
Password: iatAnyikDa
Wichtig ist, dass ihr euch die letzten vier Zeilen abschreibt und irgendwo sicher aufbewahrt.
Als nächstes müsst ihr euch die aktuelle Let's Chat Version von GitHub besorgen. Ich für meinen Teil speichere alle zusätzlichen Apps in Unterordnern ab.
mkdir ~/NodeApps
cd ~/NodeApps
git clone https://github.com/sdelements/lets-chat.git
cd lets-chat
Nun müsst ihr die zusätzlichen Node Pakete installieren. Hierzu müsst ihr einfach npm install
eingeben, der Rest passiert von alleine.
Als nächstes müsst ihr die Konfigurationsdatei erzeugen und anpassen.
cp settings.yml.sample settings.yml
Bevor wir nun die Konfiguration bearbeiten, brauchen wir noch einen bzw. zwei Ports auf der/denen die App läuft. Einen braucht ihr definitiv für die Webanwendung und einen zweiten, falls ihr XMPP (Jabber) für euren Let's Chat benutzen wollt.
Hierzu könnt ihr mittels netstat -tulpen | grep $Portnummer
einen unbenutzten Port suchen.
$Portnummer müsst ihr nun durch eine Zahl zwischen 61000 und 65535 ersetzen. Sollte keine Rückmeldung erscheinen, ist der Port frei und ihr könnt diesen verwenden.
Wollt ihr nun ebenfalls XMPP benutzen, braucht ihr noch einen weiteren Port. Diesen müsst ihr dann noch bei hello@uberspace.de für TCP und UDP freischalten lassen!
Nun können wir die Konfiguration anpassen. Öffnet nun mit einem Editor eurer Wahl die settings.yml
und passt folgende Zeilen an
http:
enable: true
host: 'localhost'
port: $Portnummer1
xmpp:
enable: true
port: $Portnummer2
domain: $EureDomain
roomCreation: false
zudem müsst ihr noch die MongoDB Verbindung einrichten.
Hier braucht ihr nun die Daten, die ihr bei der Erzeugung der MongoDB Instanz erhalten habt.
database:
uri: mongodb://$Username:$Passwort@localhost:$Port/letschat?authSource=admin
Nun könnt ihr zum ersten mal eure Installation testen. Gebt hierzu npm start
ein.
Wenn ihr folgendes seht, hat alles geklappt
Nun könnt ihr mit Strg+C die App beenden und die Erreichbarkeit vom Internet einrichten. Zudem muss die App noch als Dienst eingerichtet werden, damit diese automatisch startet.
Machen wir dies zuerst
uberspace-setup-service letschat npm start ~/NodeApps/lets-chat 2>&1
Ich habe meine Let's Chat Instanz als Subdomain installiert. Geht dazu wie folgt vor
cd ~/subdomains
mkdir subdomain.domain.tld
cat <<__EOF__ >> ~/subdomains/subdomain.domain.tld/.htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://subdomain.domain.tld/$1 [R,L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*) http://localhost:$Portnummer1/$1 [P]
__EOF__
Damit wird zuerst jeder HTTP Request auf HTTPS umgeschrieben und anschließend auf die interne Node App umgeleitet.
Ihr braucht also möglichst ein SSL Zertifikat für eure Subdomain.
EDIT:
Hier noch kurz die derzeit eingesetzten Versionen:
- LetsChat 0.4.8
- npm 2.15.11
- NodeJS 4.7.3