3.3 KiB
Firebase
Das Firebase-Projekt heißt MetalCircle. Android ist dauerhaft als de.pinguholic.concerts registriert. Manuelle Testnachrichten funktionieren bereits. Automatischer Versand für Freundschaftsanfragen, Direktnachrichten und Veranstaltungseinladungen ist implementiert und benötigt einen separaten serverseitigen Zugang sowie PUSH_ENABLED=true.
Unterschiedliche Konfigurationsdateien
android/android/app/google-services.json: lokale, Git-ignorierte Android-Client-Konfiguration. Projekt-/App-Kennungen und der Client-API-Key werden vom Build in die APK übernommen; sie sind kein Backend-Privatschlüssel.- Service-Account-JSON: privater Schlüssel für das Backend. Niemals in Git, APK, Docker-Image, Webassets, Chat, Wiki oder Logs aufnehmen. Die Android-Datei ersetzt diesen Zugang nicht.
Entwicklung/Test einrichten
- In Firebase MetalCircle auswählen und die tatsächliche Projekt-ID notieren; sie kann vom Anzeigenamen abweichen.
- In der zugehörigen Google Cloud Console die Firebase Cloud Messaging API (HTTP v1) prüfen/aktivieren.
- Einen eigenen Test-Service-Account anlegen, z. B.
metalcircle-push-test. Für Versand istcloudmessaging.messages.createnötig, enthalten in Firebase Cloud Messaging API Admin (roles/firebasecloudmessaging.admin). Keine persönlichen oder Gitea-Zugänge verwenden. Siehe Firebase IAM und FCM-Rollen. - Für diesen Account einen JSON-Schlüssel erstellen und geschützt außerhalb des Repositories und Docker-Buildkontexts speichern. Der Betreiber verwaltet den Schlüssel. Firebase Admin Setup beschreibt Service-Account-Dateien.
- Dateirechte einschränken, beispielsweise
chmod 600 /absoluter/pfad/firebase-service-account.json. Keine Inhalte ausgeben. - In der lokalen
.envdie folgenden Werte selbst eintragen:
PUSH_ENABLED=true
FIREBASE_PROJECT_ID=<tatsaechliche-test-projekt-id>
FIREBASE_SERVICE_ACCOUNT_FILE=/absoluter/pfad/firebase-service-account.json
- In der eigenen lokalen HTTP-Testumgebung starten:
COOKIE_SECURE=false docker compose -f compose.yml -f compose.push.yml up -d --build web
compose.push.yml bindet die Datei schreibgeschützt unter /run/secrets/firebase-service-account.json ein und setzt dort GOOGLE_APPLICATION_CREDENTIALS für das Backend. Die Quelldatei muss existieren. Der Sender prüft, dass FIREBASE_PROJECT_ID zum Account passt. Die Android-App muss dasselbe Firebase-Projekt nutzen.
Cloud-Staging richtet der Betreiber separat ein; dort hinter HTTPS COOKIE_SECURE=true lassen. Codex auf PinguCore greift nicht automatisch darauf zu. Produktion bekommt später eigene Credentials, keine kopierten Testschlüssel.
Prüfen
Mit zwei Testkonten den Ablauf unter Push Notifications prüfen. Logs enthalten feste Kategorien wie configuration, transient oder unregistered. Bei configuration Mount, Projekt-ID, API-Aktivierung und Rechte prüfen. Keine Legacy-Server-Keys einsetzen.
Der echte Backend-Integrationstest steht aus, solange kein Test-Service-Account hinterlegt ist. Automatisierte Tests simulieren Firebase und bestätigen nicht die Berechtigungen eines künftig erstellten Accounts.