← zurück zur Übersicht← back to overview Projekt · Eigener Messenger Project · Own messenger

Alle Chats in einer App, auf dem eigenen Server All chats in one app, on my own server

Familie, Freunde, Kollegen: Jeder nutzt einen anderen Messenger. Zwingen kann ich niemanden zum Wechseln. Ich wollte aber nicht mehrere Apps auf dem Alltagshandy haben, die Adressbuch und Nutzungsverhalten an große Konzerne melden. Heute laufen alle Chats in einer App zusammen, und die Fäden laufen auf einem eigenen Server.

Family, friends, colleagues: everyone uses a different messenger. I can't force anyone to switch. But I didn't want several apps on my everyday phone that report my address book and usage to big corporations. Today all chats come together in one app, and the threads run on a server of my own.

01Das eigentliche ProblemThe actual problem

Die verbreiteten Messenger verschlüsseln die Nachrichten selbst ordentlich. Die Apps drumherum wollen aber an die Kontakte, wissen, wann ich online bin, und hängen an den Diensten großer Anbieter. Bisher habe ich das über einen fertigen Dienst gelöst, der alle Messenger in einer App bündelt. Bequem, aber dann sitzt eben dieser Dienst in der Mitte.

The common messengers encrypt the messages themselves properly. But the apps around them want access to contacts, know when I'm online and depend on the services of big providers. Until now I had solved that with a ready-made service that bundles all messengers in one app. Convenient, but then that service sits in the middle.

Also habe ich die Mitte nach Hause geholt.

So I brought the middle home.

02Wie es funktioniertHow it works

  • Ein eigener Chat-Server nach einem offenen Standard. Auf dem Handy läuft nur noch seine App.
  • Brücken zu den bekannten Messengern. Kleine Programme auf dem Server melden sich dort wie ein zusätzliches Gerät an und reichen Nachrichten in beide Richtungen weiter. Für meine Kontakte ändert sich nichts.
  • Die Messenger-Konten selbst hängen an einem virtuellen Handy im Homelab, nicht an meinem Telefon. Die Original-Apps sind damit vom Alltagshandy verschwunden.
  • Benachrichtigungen kommen über einen eigenen Benachrichtigungsdienst, nicht über die Dienste des Handyherstellers.
  • A chat server of my own based on an open standard. All that runs on the phone is its app.
  • Bridges to the well-known messengers. Small programs on the server sign in there like an additional device and pass messages on in both directions. Nothing changes for my contacts.
  • The messenger accounts themselves are tied to a virtual phone in the homelab, not to my phone. That way the original apps have disappeared from my everyday phone.
  • Notifications arrive through a notification service of my own, not through the phone maker's services.

03Anrufe für die FamilieCalls for the family

Eine Lücke blieb: Über die Brücken gehen keine Anrufe. Deshalb hat die Familie eigene Konten auf meinem Server bekommen, und Sprach- und Videoanrufe laufen über den eigenen Server.

One gap remained: calls don't go through the bridges. So the family got accounts on my server, and voice and video calls run through my own server.

Damit das auch unterwegs geht, ist der Server inzwischen von außen erreichbar und kann mit anderen Servern desselben Standards sprechen. Das funktioniert ähnlich wie E-Mail: Wer irgendwo in diesem Netz eine Adresse hat, kann mir schreiben, egal bei wem sein Konto liegt.

To make that work on the go as well, the server is now reachable from outside and can talk to other servers using the same standard. It works much like e-mail: anyone with an address anywhere in this network can write to me, no matter who hosts their account.

04Der HakenThe catch

Ehrlich gesagt hat das Ganze einen Preis. Eine Brücke muss die Nachrichten lesen können, um sie weiterzugeben. Die Ende-zu-Ende-Verschlüsselung endet also auf meinem Server. Ein Gewinn ist das nur, wenn dieser Server besser geschützt ist als die Lösung vorher.

To be honest, it all comes at a price. A bridge has to be able to read messages to pass them on. So end-to-end encryption ends on my server. That's only a win if this server is better protected than the solution before.

  • Abgeschottet. Der Server steht in einem eigenen Netzbereich, getrennt vom Rest zu Hause.
  • Geprüft. Gleich nach dem Aufbau gab es ein Security-Audit, und nach dem Öffnen nach außen direkt ein zweites. Seine Dateien werden täglich gegen eine Referenz geprüft.
  • Ausfall eingeplant. Fällt er aus, warten die Nachrichten bei den Messengern, bis er wieder da ist. Die Notfallwege stehen aufgeschrieben.
  • Isolated. The server sits in its own network segment, separate from the rest of the home.
  • Checked. Right after setup there was a security audit, and a second one straight after opening it to the outside. Its files are checked against a reference every day.
  • Failure planned for. If it goes down, the messages wait at the messengers until it's back. The emergency routes are written down.

05Was ich gelernt habeWhat I learned

  • Das Alte erst abschalten, wenn das Neue trägt. Der fertige Bündel-Dienst lief weiter, bis die eigenen Brücken stabil liefen. Erst dann habe ich das Konto gelöscht.
  • Kleinigkeiten verraten viel. Die neue App hat keine eingebaute GIF-Suche. Das ist Absicht: Sonst sähe der GIF-Anbieter jeden Suchbegriff.
  • Öffnen ist eine eigene Entscheidung. Ursprünglich sollte der Server nur intern erreichbar sein. Für die Anrufe der Familie habe ich das bewusst geändert und danach sofort neu prüfen lassen.
  • Only switch off the old once the new carries the load. The ready-made bundling service kept running until my own bridges were stable. Only then did I delete the account.
  • Small things reveal a lot. The new app has no built-in GIF search. That's deliberate: otherwise the GIF provider would see every search term.
  • Opening up is a decision of its own. Originally the server was meant to be reachable internally only. For the family's calls I deliberately changed that and had it checked again straight away.

06Wenn du selbst anfangen willstIf you want to start yourself

Einen eigenen Chat-Server braucht man für mehr Überblick nicht. Ein Blick in die Einstellungen der eigenen Messenger reicht für den Anfang.

You don't need your own chat server for a better overview. A look into your own messengers' settings is enough to begin with.

In jedem Messenger nachsehen, welche verknüpften Geräte angemeldet sind. Was du dort nicht kennst, abmelden.

In every messenger, check which linked devices are signed in. Sign out anything you don't recognise.