Chat privé op je eigen chat server met Rocket.Chat

Noud van Kruysbergen
0

Inhoudsopgave

Een zelf gehoste chat server is voor verenigingen en bedrijven een zinvol alternatief voor WhatsApp en vergelijkbare centrale diensten. Met de opensourcesoftware Rocket.Chat heb je dat snel ingericht. Chat privé op je eigen chat server met deze handige software, zonder gegevens te delen met derden of daar afhankelijk van te zijn.

Er zijn aardig wat alternatieven voor WhatsApp met een vergelijkbare functieomvang – denk daarbij niet alleen aan Facebook Messenger en Signal of Telegram, maar bijvoorbeeld ook aan Conversations, Discord, Threema en Riot.im. Die gebruiken allemaal een centrale serverinfrastructuur. Daarmee handelen de clients het gehele dataverkeer af.

Zelfs als de inhoud van de chat berichten door end-to-end-versleuteling niet te lezen is voor de dienstverlener, vertrouw je die toch meta-informatie toe, bijvoorbeeld naar wie jij je berichten allemaal stuurt. Je bent bovendien ook afhankelijk van de dienstverlener om te kunnen chatten.

chat prive chatten Rockchat eigen chat server

Privé chat

Voor een gesloten gebruikersgroep, zoals een vereniging, een online gamersgroep of een bedrijf, wil je misschien een communicatieoplossing die qua functieomvang niet onder hoeft te doen voor WhatsApp en dergelijke diensten, maar waarbij je privacy niet in gevaar komt. Je kunt dan zelf een chatserver hosten – als je tenminste iets afweet van het beheren daarvan. Bij Rocket.Chat is dat niet al te ingewikkeld.

De opensource software Rocket.Chat is prima geschikt voor het opzetten van een privé chat server. Voor de gebruikers zijn er gratis clients voor Windows, Linux, macOS, iOS en Android, en daarnaast is er een webinterface met alle functies. De server kun je op een Linux-systeem installeren of als Docker-container starten. Je kunt daar ook een goedkope virtuele server bij een hostingpartij voor gebruiken. Zelfs met maar 500 MB aan RAM kunnen 50 gebruikers zonder problemen chatten.

Je kunt Rocket.Chat ook thuis hosten, als je internet­verbinding van buitenaf bereikbaar is via een vast IP-adres of een DynDNS-account. Dan moet je er wel zelf voor zorgen dat die server betrouwbaar online is.

chat prive chatten RockChat Windows app browser

Er zijn apps voor allerlei platformen voor Rocket.Chat. Al is de Windows-app niet meer dan een veredeld browservenster.

Installeren met snap

We hebben Rocket.Chat bij wijze van test geïnstalleerd op een virtuele server binnen Oracle VM VirtualBox met daarin het besturingssysteem Ubuntu 18.0.3 LTS. Je moet je van dat installeren niet al te veel voorstellen, want dat werkt met snap. Het ­totale commando is dan ook

sudo snap install rocketchat-server

Als dat achter de rug is, is de Rocket.Chat-server beschikbaar via poort 3000.

Het updaten van Rocket.Chat werkt in principe automatisch, maar je kunt dat met snap op eenzelfde eenvoudige manier handmatig doen:

sudo snap refresh rocketchat-server

Om te controleren of Rocket.Chat gestart is, gebruik je het commando

sudo service snap.rocketchat-server.rocketchat-server status

Op een vergelijkbare manier kun je de Rocket.Chat-server stoppen en herstarten met achtereenvolgens

sudo service snap.rocketchat-server.rocketchat-server stop
sudo service snap.rocketchat-server.rocketchat-server restart

Als je niet poort 3000 wilt gebruiken, maar een ander poortnummer, dan kun je dat aanpassen met

sudo snap set rocketchat-server port=<another-port>

Daarna moet je de Rocket.Chat-service wel even herstarten met

sudo systemctl restart snap.rocketchat-server.rocketchat-server.service

chat prive chatten RockChat server status

Mocht je problemen ondervinden, kijk dan eerst of de Rocket.Chat-server wel draait.

Chat back-up

Het lijkt misschien wat voorbarig om nu al over back-ups te gaan beginnen, maar dit is wel een mooi moment om het maken en terugzetten van een back-up van de snap-data onder de knie te krijgen. Om een back-up te maken, moet je de Rocket.Chat-server eerst stoppen met het commando zoals hierboven staat. Rocket.Chat gebruikt de database MongoDB, en die moet natuurlijk wel blijven draaien om de data daar uit te kunnen krijgen. Of ­MongoDB actief is, kun je eventueel controleren met

sudo service snap.rocketchat-server.rocketchat-mongo status

Je back-upt de data vervolgens met het commando

sudo snap run rocketchat-server.backupdb

Dat leidt tot output die er uit zal zien als

[+] Creating backup file …
[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_<timestamp>.tar.gz

Daarna moet je de Rocket.Chat-server weer starten met het start-commando – en het back-upbestand natuurlijk naar een veilige plek kopiëren.

Voor het eventueel terugzetten van een back-up geldt een vergelijkbare werkwijze: eerste de server stoppen, het gewenste back-upbestand in de directory /var/snap/rocketchat-server/common/ zetten en die weer aan het systeem toevoegen met

sudo snap run rocketchat-server.restoredb /var/snap/rocketchat-server/common/rocketchat_backup.tgz

Als er al data in de database zitten, krijg je eerst een waarschuwing, waarbij je met n bevestigt dat je de data wilt overschrijven. Als het terugzetten van de data achter de rug is, moet je de Rocket.Chat-­server weer starten.

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Beveiligde chat

Een chatserver heeft natuurlijk een groot belang bij een beveiligde verbinding. De URL van de chatserver zal daarom met HTTPS moeten beginnen, waarvoor een TLS-certificaat nodig is. Dat kan met Let’s ­Encrypt gelukkig redelijk makkelijk.

Op dat moment is het dus wel relevant dat je internetverbinding of je server via een domeinnaam – al dan niet een DynDNS-URL – bereikbaar is. En daarnaast moet natuurlijk de poort die je ingesteld hebt ook van buitenaf bereikbaar zijn via poort 80 (HTTP) of 443 (HTTPS). Als je Rocket.Chat in je thuisnetwerk geïnstalleerd hebt, moet je bij de router instellen dat de intern in het netwerk gebruikte poort in elk geval omgeleid wordt naar de juiste poort (80 of 443).

Bij de Rocket.Chat-snap wordt Caddy gebruikt voor de SSL-communicatie. Je moet aan Caddy nog wel even wat variabelen meegeven en het initiali­seren:

sudo snap set rocketchat-server caddy-url=https://<jouw-domeinnaam>
sudo snap set rocketchat-server caddy=enable
sudo snap set rocketchat-server https=enable
sudo rocketchat-server.initcaddy

In het bestand /var/snap/rocketchat-server/current/Caddyfile staan dan de gegevens zoals die door Caddy gebruikt gaan worden. Daarna moet je de Rocket.Chat- en Caddy-service herstarten met

sudo systemctl restart snap.rocketchat-server.rocketchat-server.service
sudo systemctl restart snap.rocketchat-server.rocketchat-caddy.service

Het is wellicht aan te raden om in het Caddy­file-bestand de regel met ‘https’ eerst te wijzigen in ‘http’ om te testen of de verbinding wel werkt. Als dat niet het geval is, kan Let’s Encrypt daar moeilijk over gaan doen en je een tijdje uitsluiten van gebruik.

Weet je zeker dat je server bereikbaar is, dan kun je ‘https’ laten staan en Caddy starten. Met

sudo systemctl status snap.rocketchat-server.rocketchat-caddy

kun je controleren of Caddy werkt.

Als je liever met een zelf-gesigneerd certificaat wilt werken, dan kun je dat doen door bij Caddy­file onder de https-regel het volgende toe te voegen:

tls self_signed

chat prive chatten RockChat mogelijkheden beheer interface

Rocket.Chat biedt na de installatie ook veel opties die je via de webinterface kunt instellen en gebruiken.

Caddy opties

In het bestand Caddyfile kun je makkelijk aangeven of je een http- of een https-verbinding wilt gebruiken. Dat werkt standaard met de poorten 80 respectievelijk 443, maar je kunt daar ook andere poorten voor gebruiken. Je kunt in Caddyfile bijvoorbeeld het volgende zetten:

https://example-domain.com:8080 {
proxy / localhost:3000 {
websocket
transparent
}
}

Dan zal een SSL-verbinding gebruikt worden via poort 8080. Als je http gebruikt, zal die verbinding onversleuteld zijn. Bijkomend detail: als je http gebruikt, kun je ook met een IP-adres werken, dan is een domeinnaam niet per se nodig.

Tenslotte nog een ander detail: als je zowel ‘http://’ en ‘https://’ weglaat, dan zal Caddy je auto­matisch doorsturen naar de HTTPS-versie. Zorg er wel voor dat je na iedere wijziging in Caddyfile de nieuwe instellingen activeert door Caddy te her­starten met

sudo systemctl restart snap.rocketchat-server.rocketchat-caddy

Rocket.Chat configureren

Het is overigens wel gevaarlijk om Caddy te activeren en de port-forwarding in de router meteen actief te hebben, want iedereen kan dan van buitenaf zonder inloggen bij de beheerinterface van Rocket.Chat. Daar is de eerste stap van de installatie­wizard namelijk het opgeven van de admin-info, zoals naam en wachtwoord. Daarna moet je wat organisatie-­informatie opgeven.

chat prive chatten RockChat beveiligen beheer admin

Je moet om te beginnen de admin-info opgeven en de beheertoegang beveiligen.

Bij de serverinformatie verzin je een eenduidige naam voor je chatserver. De taal kun je op standaard laten staan op of Nederlands zetten. Bij het server-type kun je kiezen uit ‘Privé team’ of ‘Openbare gemeenschap’. Bij stap 4 kies je niet voor het gebruik van de gateways van Rocket.Chat Technologies, maar kies je ‘Blijf stand-alone, dat moet je doen’. Daarna kun je naar je werkruimte.

Via de drie puntjes rechtsboven in het menu met de mouse-over Opties selecteer je Administratie om bij de beheerinterface te komen. Bij het menu-­item Gebruikers sta je alleen nog zelf en de rocket.cat-bot. Via het plusteken rechtsboven maak je een nieuwe gebruiker aan. Naast naam en gebruikersnaam kun je aangeven dat je wilt dat het wachtwoord bij de eerste keer aanmelden gewijzigd moet worden. Je kunt een gebruiker ook een bepaalde rol geven, ­bijvoorbeeld om alleen te mogen lezen of actief deel te kunnen nemen. Maar je kunt ook meerdere rollen aan een gebruiker toekennen. Op die manier moet je alle gebruikers handmatig aanmaken.

chat prive chatten RockChat gebruiker registreren aanmaken inloggen

Na het configureren staat Rocket.Chat klaar voor gebruikers om in te loggen – maar die moet je wel eerst aanmaken.

Je kunt gebruikers via de knop ‘Registreer een nieuwe gebruiker’ ook zichzelf aan laten melden. Zij krijgen dan automatisch de rol ‘user’ toegekend en kunnen dan meteen aan de slag. Als je dat te gevaarlijk vindt, kun je bij het menu-item Accounts de optie ‘Handmatig goedkeuren Nieuwe Gebruikers’ op True zetten.

Chat apps en software

Door met de browser naar de domeinnaam (en eventueel het poortnummer) van de Rocket.Chat-server te gaan, kun je meedoen met de chatsessies. Voor iOS en Android zijn er ook apps. Als je zoekt op Rocket.­Chat zijn die makkelijk te vinden. Bij ‘Connect to a server’ kun je het serveradres opgeven – maar alleen met een beveiligde verbinding.

Voor Windows, macOS en Linux (deb(x64) of rpm(x64)) zijn er desktop-apps, maar de eerlijkheid gebied te zeggen dat dit niet meer zijn dan veredelde browservensters waar je een server-URL bij kunt opgeven. Dat kunnen in dit geval overigens ook niet-SSL-verbindingen zijn.

Uitgebreide mogelijkheden

Voordat je de chatserver productief gaat gebruiken, moet je zoals eerder gezegd even de tijd nemen om door alle Administratie-items heen te wandelen en die aan je wensen aan te passen. Het is bijvoorbeeld handig om bij ‘E-mail’ een mailserver op te geven waarmee Rocket.Chat mails kan versturen.

De berichten worden wel allemaal versleuteld verzonden, maar zijn altijd nog leesbaar uit de MongoDB-­database te halen. Om alle berichten end-to-end te versleutelen kun je de optie E2E-codering op True zetten. Alle gebruikers zien dan eenmalig bovenaan een melding dat die functie geactiveerd is. Vervolgens kun je daar een sleutel uit kopiëren die niet op de server opgeslagen wordt. Die moet dan bij elk nieuw apparaat ingevoerd worden.

chat prive chatten RockChat beveiligd encryptie E2E end-to-end

De berichten zijn end-to-end te versleutelen, maar dat is nog experimenteel.

Als je met een kleine groep wilt chatten, is het handmatig aanmaken van de gebruikers nog niet zo’n punt, maar voor een bedrijf of een vereniging wordt dat al anders. Dan kun je met de Import-­functie gebruikers importeren, die dan in een CSV-bestand moeten staan met per regel gebruikersnaam, e-mailadres en naam. Je kunt hier vinden hoe dat CSV-bestand eruit moet zien.

Je kunt Rocket.Chat ook met OAuth gebruiken voor een single-sign-on met andere diensten zoals Nextcloud of met tweefactor-authenticatie werken. Kortom, als het eenmaal werkt, kun je er nog genoeg aan knutselen. Maar vergeet vooral niet om regelmatig te back-uppen, zoals we meteen in het begin al hebben uitgelegd. Want het zou jammer zijn om alle conversaties die na verloop van tijd op je server komen te staan te verliezen.

(Noud van Kruysbergen en Jan Mahn, c’t magazine)

Lees uitgebreide achtergrondinfo en meer op je gemak in c't 05/2024

Deel dit artikel

Noud van Kruysbergen
Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

Lees ook

Spotify streamen naar versterker? Zo doe je het met een Raspberry Pi!

Om Spotify te kunnen streamen naar een niet-smart AV-receiver of analoge versterker die geen muziek-streaming­mogelijkheden heeft, heb je met een Rasp...

Google Gemini gebruiken: dit kun je allemaal met de chatbot van Google

Eerst kon je alleen ChatGPT gebruiken, maar nu is het ook mogelijk om Gemini van Google te gebruiken. Beide chatbots die gebaseerd zijn op AI kunnen w...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er