Google Universal Analytics Bericht Backup
Betrieb
Ich rate dir davon ab, den Docker Container auf einem öffentlich zugänglichen Server zu betreiben. Er verfügt über kein System für ein Login oder ähnliches. Wer auf Netzwerkebene Zugriff auf dein System hat, kann auch das Webinterface aufrufen. Zur Speicherung der Daten wird eine MySQL Datenbank benötigt.
Ich selbst verwende es auf meinem Linux Laptop, auf dem ich auch arbeite.
Docker Compose
Am einfachsten ist der Start des Containers über docker compose. Am besten legst du dir einen neuen Ordner an, in dem du die folgende docker-compose.yaml anlegst:
services:
db:
image: mariadb:latest
environment:
- MARIADB_ROOT_PASSWORD=root
volumes:
- ./db:/var/lib/mysql
ga-report-downloader:
image: nimey/ga-report-downloader:0.0
depends_on:
- db
ports:
- 3000:3000
environment:
- DATABASE_URL=mysql://root:root@db:3306/downloader
volumes:
- ./data:/app/data
- ./oauth:/app/oauth
Wie dir vermutlich auffällt, werden drei Verzeichnisse als Volume in die Container eingehängt.
- ./db: Dort wird die Datenbank abgelegt
- ./data: Ablageort der Berichte
- ./oauth: Daten für die Authentifizierung gegenüber der Google API
OAuth Verbindung mit Google einrichten
Um Daten von der Google API abrufen zu können, muss eine Verbindung über OAuth hergestellt werden. Dazu musst du die folgenden Schritte befolgen:
APIs aktivieren
Unter folgendem Link rufst du die Google Cloud Console auf. Achte zunächst darauf, dass oben ein Projekt ausgewählt ist oder erstelle ggf. ein neues.
https://console.cloud.google.com/apis/dashboard?hl=de
Über den Button “APIS und Dienste aktivieren” gelangst du zu einer Suchmaske, über die du die folgenden APIs suchst und aktivierst:
- Analytics Reporting API (https://console.cloud.google.com/apis/api/analyticsreporting.googleapis.com/overview?hl=de)
- Google Analytics API (https://console.cloud.google.com/apis/api/analytics.googleapis.com/metrics?)
OAuth-Zustimmungsbildschirm
Der Zustimmungsbildschirm ist die Seite, die angezeigt wird, wenn jemand sich über deinen späteren Client mit seinem Google Konto anmelden möchte.
Prüfe zunächst, ob unter der URL https://console.cloud.google.com/apis/credentials/consent bereits ein Zustimmungsbildschirm angelegt ist. Sollte das nicht der Fall sein, kannst du dort direkt einen neuen erstellen. Wähle je nach Anwendungsfall als Typ intern oder extern. Solltest du extern verwenden, reicht es für unsere Fälle, wenn du im Testmodus bleibst. Eine Veröffentlichung ist nicht notwendig. In diesem Fall musst du lediglich die E-Mail Adresse, die später für den Login verwendet werden soll, als Tester hinterlegen.
Anmeldedaten erstellen
Unter https://console.cloud.google.com/apis/credentials werden wir nun Anmeldedaten erstellen. Folge dazu den folgenden Schritten:
- Klicke auf “+ ANMELDEDATEN ERSTELLEN” und wähle “OAuth-Client-ID”
- Wähle als Anwendungstyp Webanwendung
- Vergib einen Namen für deine Anmeldedaten (kannst du frei wählen)
- Unter “Autorisierte Weiterleitungs-URIs” fügst du folgende URL hinzu:
- http://localhost:3000/google-oauth/callback
- Klicke auf “ERSTELLEN”
- In dem sich öffnenden Modal klickst du auf "JSON HERUNTERLADEN"
- Die Json Datei legst du jetzt in deinem Projektverzeichnis in den Ordner ./oauth und benenne sie nach "oauth2.keys.json" um.
Starten des Containers
Bevor du deine Container startest, müssen wir noch die Datenbank initialisieren. Führe dazu das folgende Kommando aus:
Im Anschluss startest du beide Container mit docker compose up -d
Anmeldung
Rufst du jetzt deinen Browser unter http://localhost:3000 auf, solltest du eine Weiterleitung zu Google erhalten. Hier meldest du dich mit einem Google Konto an, das Zugriff auf die gewünschten Daten in Google Universal Analytics hat. Nach erfolgreicher Anmeldung landest du wieder auf deiner Weboberfläche und kannst dort bBeginnen Regionen und Berichte zu pflegen und dein Backup starten.
Solltest du das Google Konto wechseln wollen, kannst du die Datei token.json im Order oauth löschen und anschließend die Container neu starten. Es erfolgt erneut eine Weiterleitung. Beachte aber, dass nur ein Konto zur Zeit möglich ist. Solltest du aus mehreren Konten gleichzeitig laden wollen, benötigst du mehrere Instanzen.