Du wurdest zu Aegis eingeladen

Aegis ist auf diesem Gerät noch nicht installiert. Kopiere den Einladungslink, installiere die App und füge den Link darin ein – dann bist du direkt mit der Person verbunden, die dich eingeladen hat.

  1. Einladungslink kopieren (Button oben).
  2. APK herunterladen und installieren.
  3. Aegis öffnen und den kopierten Einladungslink einfügen.
  4. Mit installierter App öffnet dieser Link Aegis künftig direkt.

Weiter zum Download ↓

Ein privater Messenger auf deinem eigenen Server.

Aegis ist ein Ende-zu-Ende-verschlüsselter 1:1-Messenger für Android mit einem selbst betriebenen Zero-Knowledge-Relay: Der Server bewegt ausschließlich Chiffretext und kann Nachrichten technisch nicht lesen. Keine Telefonnummer, kein Konzern, kein Zwang zur Föderation – jeder Relay ist standardmäßig geschlossen und kann optional mit anderen föderieren. Dahinter Aegis Controller, die Steuerzentrale für die eigene Infrastruktur, samt eigenem VPN-Bereich.

Der Messenger

Sicherheit, die nicht auf Vertrauen beruht

Die Kryptographie liegt vollständig in der App. Der Server ist bewusst dumm gehalten – selbst wer ihn vollständig übernimmt, bekommt keinen Klartext.

🔐

Echte Ende-zu-Ende-Verschlüsselung

Umgesetzt mit libsignal, der offiziellen, auditierten Signal-Bibliothek – keine selbstgebaute Krypto. Sessionaufbau per X3DH (optional PQXDH mit Kyber-Prekeys als Post-Quantum-Schutz), laufender Betrieb über den Double Ratchet.

Damit gilt Forward Secrecy (gestohlene Schlüssel öffnen keine alten Nachrichten) und Post-Compromise Security (die Session heilt sich nach einem Leak selbst).

🕳️

Zero-Knowledge-Server

Das Relay speichert und routet nur opake Ciphertext-Envelopes, dazu öffentliche Schlüssel und Prekey-Bundles. Es besitzt keinen einzigen privaten Schlüssel. Root-Zugriff plus vollständiger Datenbank-Dump ergeben keinen Klartext.

Zugestellte Nachrichten werden nach der Bestätigung sofort gelöscht; unzugestellte laufen nach 30 Tagen ab. Kein Archiv.

🧅

Zwei-Schicht-Verschlüsselung

Schicht 1 (Double Ratchet) lässt sich im Hintergrund entschlüsseln – daraus entsteht die Benachrichtigung „Neue Nachricht von X“ mit sichtbarem Absender.

Schicht 2 trägt den eigentlichen Inhalt und ist an einen biometrie-gebundenen Content-Key im Android-Keystore gebunden (StrongBox/TEE, nicht exportierbar, pro Nachricht ein eigener ECIES-Schlüssel). Der Text erscheint erst nach dem Fingerabdruck – im gesperrten Zustand bewusst ohne Vorschau.

🙈

Keine Telefonnummer

Ein Konto besteht aus Benutzername + Identitäts-Schlüsselpaar. Keine Rufnummer, keine E-Mail, kein Adressbuch-Upload. Kontakte kommen per QR-Code oder Einladungslink dazu.

🚪

Geschlossen – Föderation nur auf Wunsch

Standardmäßig ist jeder Relay eine eigene, in sich geschlossene Welt: keine automatische Server-zu-Server-Kopplung, kein Matrix, keine Raum-Replikation. Wer selbst hostet, kann eine Föderation jedoch optional zuschalten – pro Betreiber, standardmäßig aus und im Dashboard steuerbar.

Föderierte Relays replizieren nichts: Eine Nachricht von alice@relayA an bob@relayB läuft ausschließlich über genau diese beiden Server (E-Mail-artig), nie über einen dritten. Der Inhalt bleibt Ende-zu-Ende verschlüsselt – auch ein föderierendes Relay bleibt Zero-Knowledge. Unser öffentlicher Relay chat.personaplay.de bleibt vorerst geschlossen und ist in der App voreingestellt; Registrierung nur per einmaligem Invite-Token, ganz ohne Passwörter. Mehr dazu in den Docs.

📌

Pinning & Sicherheitsnummern

Für den öffentlichen Relay pinnt die App das Server-Zertifikat fest (SPKI-Pinning), womit sich auch ein Angreifer mit gültigem Fremdzertifikat nicht dazwischenschieben kann. Ein selbst eingetragener Relay läuft über die normale System-CA-Prüfung plus TOFU: das erste gesehene Zertifikat wird gemerkt, eine spätere unerwartete Änderung blockiert.

Zwischen Nutzern schützt TOFU-Pinning plus Sicherheitsnummer: eine 60-stellige, aus beiden Identitätsschlüsseln berechnete Zahl, die sich direkt im Chat vergleichen lässt. Ändert sie sich, wird gewarnt.

🛰️

Metadaten-Minimierung

Envelopes werden auf feste Bucket-Größen gepolstert, der Absender steckt im verschlüsselten Payload (Sealed Sender), serverseitige Kontaktlisten existieren nicht.

Der Wake-up-Push ist inhaltslos und läuft über self-hosted UnifiedPush/ntfykein Firebase.

📱

Auch auf dem Gerät verschlüsselt

Nachrichten-Datenbank und die libsignal-Schlüsselspeicher liegen in SQLCipher (AES-256, Schlüssel im Android-Keystore). Der private Identitätsschlüssel verlässt das Gerät nie. allowBackup=false hält die Geheimnisse aus Cloud-Backups heraus.

🏠

Self-hosted, in einem Rutsch

Relay (Python/FastAPI + PostgreSQL) und der öffentliche TLS-Edge (Caddy mit automatischem Let's Encrypt) sind zwei docker compose-Stacks. In der App trägst du beim ersten Start deinen eigenen Relay ein (Standard ist unser öffentlicher) und kannst ebenso einen eigenen ntfy-Server für den Weckruf hinterlegen – ganz ohne die App neu zu bauen.

Anleitung zum Selbst-Hosten →

Zero Knowledge

Was der Server sieht – und was nicht

Ehrlich aufgeschlüsselt: Ein Relay muss wissen, wohin es zustellt. Alles andere bleibt draußen.

DatumServer siehtServer sieht nicht
Nachrichtentextnur opaken Ciphertextden Klartext; die Länge nur grob (gepolstert)
Identitäts- und Prekey-Schlüsseldie öffentlichen Anteile (das ist ihr Zweck)die zugehörigen privaten Schlüssel
Kontenwelcher Benutzername existiertKlarnamen, Telefonnummer, E-Mail – gibt es nicht
Zustell-MetadatenEmpfänger-ID + Zeitstempel fürs Routingden Absender im Sealed-Sender-Modus
Pushden Push-Endpunkt zum AufweckenInhalt – der Push ist leer
Identitäts-Backupeinen opaken, passphrase-verschlüsselten BlobPassphrase und Inhalt

Details, Schlüsselverwaltung und Grenzen des Modells: Sicherheitsmodell in den Docs.

Der Teil dahinter

Aegis Controller – die Infrastruktur im Griff

Aegis ist mehr als der Messenger. Der Controller ist ein mobil-first Control Interface für die eigene Infrastruktur: überwachen und kontrolliert steuern, ohne dass jemand versehentlich Schaden anrichten kann. Er läuft strikt getrennt vom öffentlichen Chat-Pfad – ausschließlich über WireGuard-VPN erreichbar.

Health-Überwachung mit Ampel live

Aus Schwellwerten je Host und Dienst wird ein Ampel-Status abgeleitet (OK / WARN / CRITICAL) – CPU und Load, RAM, Disk-Belegung je Mount, I/O, Temperaturen (sauber als „n/a“, wenn der VPS keine Sensoren meldet), Netz, Container-Health. Ein Rollup ergibt den Gesamtstatus.

Verlauf-Charts live

node_exporter (Host) und cAdvisor (Container) liefern Metriken an VictoriaMetrics (12 Monate Aufbewahrung). Der Controller fragt sie ab und rendert eigene, aufgeräumte Charts fürs Handy – statt einem Laien ein Grafana vorzusetzen.

VPN-only, nie nackt im Internet live

Alle internen Dienste binden an die WireGuard-Adresse 10.10.2.1. Die Firewall lässt eingehend nur SSH und den WireGuard-Port zu. Nur Messenger-Relay und Edge sind bewusst öffentlich – und die bewegen ausschließlich Chiffretext.

Admin-Governance & Audit-Log live

Der Zugang ist kapazitätsbasiert: Es gibt kein Zugangs-Register auf dem Server – wer etwas darf, weist eine operator-signierte Capability nach, die stateless geprüft wird. Ein Root-Gate stellt sicher, dass nur der Erst-Einrichter die Admin-Einstellungen steuert.

Jede Admin-Schreibaktion landet im Audit-Log (nur für den Root einsehbar) und legt einen Pre-Snapshot an – Admin-Änderungen sind damit zurückrollbar. Die granulare Delegation einzelner Rechte an Kontakte ist im Aufbau.

VPN-Bereich im Aufbau

Aegis wird zur Allround-Security-App: ein eigener VPN-Tab in der App mit Always-on-Tunnel und Umschalter zwischen mehreren, vom Admin im Dashboard verwalteten VPNs. Jedes VPN läuft absolut log-frei (keine Verbindungs-, Traffic- oder DNS-Logs) und kann seinen DNS optional über ein Pi-hole leiten.

Auch hier gilt kapazitätsbasiert, kein Nutzer-Register: admin-verwaltbar, an Freunde gratis freischaltbar oder käuflich. Der WireGuard-Schlüssel wird in der App erzeugt und verlässt sie nie. VPN-Tab, Umschalter und Admin-Verwaltung stehen; der Kauf-Fluss folgt.

Feingranulares Rechtesystem im Aufbau

Hierarchische Rechte-Strings wie module.plex.stream.stop mit Wildcards (server.*.status.read), gebündelt in Rollen, ausgewertet von Casbin; deny gewinnt immer. Die UI blendet Elemente nur aus – entschieden wird bei jeder Aktion erneut im Backend, und jede rechtepflichtige Aktion landet im Audit-Log.

Rechtemodell steht (Casbin); Login und 2FA über Authentik folgen.

Least-Privilege-Agents im Aufbau

Auf den Zielservern läuft kein Root-SSH, sondern ein schlanker Agent mit einer festen Whitelist an Aktionen (Container neu starten, Update, Reboot …). Es gibt keinen generischen „führe Befehl aus“-Endpunkt; Docker-Aktionen laufen über das offizielle SDK statt über eine Shell. Gefährliche Operationen existieren an der Schnittstelle gar nicht erst.

Agent ist implementiert, der Rollout auf die Zielserver läuft.

Selbstheilender Watchdog geplant

Zustandsautomat je Dienst: Probes, geordneter Neustart mit Abhängigkeiten und Delays, Backoff-Grenze gegen Crash-Loops, Wartungsmodus – und ein externer Dead-man's-switch, damit auch ein Totalausfall des Controllers gemeldet wird. Was nicht heilbar ist, kommt als Push aufs Handy.

Updates, Backups, Module geplant

Debian-Updates und Container-Updates mit Pre-Update-Snapshot und Rollback, Konfigurationen git-versioniert, Volumes per restic, dazu Module für UniFi-Gateway und Plex. Restore über die UI – rechtepflichtig und auditierbar.

Leitprinzipien: Least Privilege · das Backend ist die Wahrheit · alles ist auditierbar · alles ist ein Modul · selbstheilend, aber ehrlich · nie nackt im Internet. Mehr dazu im Architektur-Überblick.

Android

App laden

Aegis wird als APK direkt hier ausgeliefert – kein App-Store, kein Konto bei Dritten. Für die Registrierung brauchst du einen Einladungslink.

App noch nicht installiert?

APK herunterladen

Version 1.31.5.0 · 82 MB · Stand 24.07.2026

  1. APK herunterladen und die Installation aus unbekannter Quelle bestätigen.
  2. Aegis öffnen und den Einladungslink bzw. Einladungs-QR verwenden.
  3. Benutzernamen wählen – fertig. Keine Telefonnummer, keine E-Mail.

Android 8 oder neuer. Die App bringt den Chat, den optionalen VPN-Tab und – sofern freigeschaltet – den VPN-geschützten Dashboard-Tab mit.

Ehrlicher Stand

Was heute läuft – und was noch fehlt

Läuft live

  • 1:1-Textchat, Ende-zu-Ende verschlüsselt (X3DH/PQXDH + Double Ratchet)
  • Registrierung per Invite-Token, Kontakte per QR oder Einladungslink
  • Echtzeit-Zustellung über eine dauerhafte WebSocket-Verbindung, plus inhaltsloser Push als Rückfallweg
  • Zwei-Schicht-Verschlüsselung inkl. Benachrichtigung ohne Inhaltsvorschau
  • Sicherheitsnummer im Chat vergleichbar
  • Opt-in-Föderation zwischen selbst gehosteten Relays (Relay-Kern + Dashboard-Steuerung); standardmäßig aus, das öffentliche Relay bleibt vorerst geschlossen

Kommt noch geplant

  • Medien & Dateien (client-seitig verschlüsselt vor dem Upload)
  • Sprach- und Videoanrufe (WebRTC mit eigenem coturn, Signaling Ende-zu-Ende verschlüsselt)
  • Multi-Device – die Server-Endpunkte für die Geräte-Verknüpfung stehen, der App-Flow fehlt noch
  • Verschlüsseltes Identitäts-Backup: serverseitig vorhanden, in der App noch nicht verdrahtet
  • Gruppenchats – geplant
  • Status-Feature – geplant
  • Offene Föderation (Blacklist-Modus) inkl. Missbrauchskontrollen – erst danach föderiert das öffentliche Relay