Mit Docker

Hol dir den Code und starte den Relay mit Docker Compose. Das Image baut für amd64 und arm64, die Datenbank liegt im Volume relay-data.

git clone https://github.com/harryneufeld/bubble.git
cd bubble
docker compose up -d --build

Ohne eigenen Build geht es mit dem fertigen Image ghcr.io/harryneufeld/bubble-relay. Es wird bei jeder Änderung am Relay getestet und für amd64 und arm64 veröffentlicht.

docker run -d --name bubble-relay -p 5080:5080 \
  -v relay-data:/data --restart unless-stopped \
  ghcr.io/harryneufeld/bubble-relay:latest

Der Relay hört danach auf Port 5080. In der App trägst du beim Einrichten oder später unter „Server“ die Adresse ein, zum Beispiel 192.168.1.20:5080.

Auf einem Raspberry Pi

Auf einem Pi mit 64-Bit-Betriebssystem richtet scripts/setup-pi.sh alles ein: Es installiert bei Bedarf Git und Docker, holt den Code und startet den Relay. Erneut ausführen aktualisiert ihn.

scp scripts/setup-pi.sh pi@192.168.1.20:/tmp/bubble-setup.sh
ssh -t pi@192.168.1.20 "bash /tmp/bubble-setup.sh"

Der erste Build auf dem Pi dauert ein paar Minuten.

Erreichbar aus dem Internet

Der Relay spricht nur HTTP. Für Zugriff von außen gehört ein HTTPS-Proxy davor, zum Beispiel Caddy, nginx oder Traefik.

Gegen einen laufenden Relay kannst du die Live-Tests ausführen:

BUBBLE_RELAY_URL=http://<server>:5080/ dotnet test --filter LiveRelayTests

Selbst entwickeln

Bubble basiert auf .NET 10. Der Code teilt sich in vier Projekte:

ProjektInhalt
Bubble.CoreKrypto, Nachrichtenformat, Einladungen, Backup, Relay-Client, Feed-Logik
Bubble.RelayASP.NET-Core-Relay mit SQLite, speichert nur verschlüsselte Blobs
Bubble.App.NET-MAUI-App für Android, iOS und Windows
Bubble.TestsTests für Core und Relay, inklusive End-to-End über einen In-Memory-Relay
dotnet test
dotnet run --project src/Bubble.Relay

Der Relay läuft dann auf http://localhost:5080. Der Android-Emulator erreicht ihn über 10.0.2.2:5080.