sphings-dev.de

Repo Stats auf dem Mac mit Docker Desktop

Repo Stats auf dem Mac mit Docker Desktop einrichten: Docker installieren, GitHub-Token erstellen, Container starten und das Dashboard unter localhost:8377 öffnen.

Auf dem Mac läuft Repo Stats in Docker Desktop. Am Ende zeigt dein Browser unter http://localhost:8377 das Dashboard mit den Statistiken deiner GitHub-Repositories. Beachte: Ein Mac im Ruhezustand betreibt keine Container, das Dashboard sammelt also nur, solange der Mac läuft und Docker Desktop gestartet ist.

Vorbereitung

Docker Desktop installieren

Docker Desktop ist für Privatpersonen, Bildung, kleine Unternehmen (unter 250 Beschäftigte und unter 10 Mio. US-Dollar Jahresumsatz) und nicht-kommerzielle Open-Source-Projekte kostenlos. Es unterstützt die aktuelle und die zwei vorherigen macOS-Versionen und braucht mindestens 4 GB Arbeitsspeicher.

  1. Öffne https://docs.docker.com/desktop/setup/install/mac-install/.
  2. Klicke bei einem Mac mit Apple-Chip auf „Docker Desktop for Mac with Apple silicon“, bei einem Intel-Mac auf „Docker Desktop for Mac with Intel chip“.
  3. Öffne die heruntergeladene Datei Docker.dmg per Doppelklick.
  4. Ziehe das Docker-Symbol in den Ordner „Programme“.
  5. Starte Docker per Doppelklick aus „Programme“.
  6. Lies die Lizenzvereinbarung und klicke auf „Accept“.

Docker Desktop startet; in der Menüleiste erscheint das Docker-Symbol (ein Wal). Warte, bis es nicht mehr animiert ist. Ein Docker-Konto ist für die Installation nicht nötig. Je nach Version können Bezeichnungen leicht abweichen.

Docker beim Anmelden starten (empfohlen)

  1. Klicke auf das Docker-Symbol in der Menüleiste.
  2. Öffne „Settings“.
  3. Wähle den Bereich „General“.
  4. Setze das Häkchen bei „Start Docker Desktop when you sign in to your computer“.

GitHub-Token erstellen

Repo Stats liest deine Repositories über die GitHub-API und braucht dafür ein persönliches Zugriffstoken (Personal Access Token), eine Art Passwort nur für diese Anwendung. Das Token kann auch private Repositories lesen. Gib es deshalb niemandem weiter und trage es nur auf deinem eigenen Gerät ein. Am einfachsten ist ein klassisches Token.

  1. Melde dich bei github.com an.
  2. Klicke oben rechts auf dein Profilbild.
  3. Klicke auf „Settings“.
  4. Scrolle in der linken Seitenleiste nach unten und klicke auf „Developer settings“.
  5. Klicke unter „Personal access tokens“ auf „Tokens (classic)“.
  6. Klicke auf „Generate new token“ und dann auf „Generate new token (classic)“.
  7. Trage bei „Note“ einen Namen ein, zum Beispiel „Repo Stats“.
  8. Wähle bei „Expiration“ eine Laufzeit. Läuft das Token ab, trägst du ein neues ein.
  9. Setze das Häkchen bei „repo“.
  10. Klicke ganz unten auf „Generate token“.
  11. Kopiere das angezeigte Token (es beginnt mit ghp_) und füge es zunächst in ein Textdokument ein.

GitHub zeigt das Token nur ein einziges Mal an. Wenn du die Seite verlässt, ohne es zu kopieren, erstellst du ein neues. Statt eines klassischen Tokens geht auch ein fein granuliertes („Fine-grained tokens“): Es braucht dann Lesezugriff (Read-only) auf „Actions“, „Administration“, „Contents“, „Issues“, „Metadata“ und „Pull requests“. Das Recht „Administration“ schaltet die Verkehrszahlen frei und wird leicht übersehen; ohne es bleiben die Traffic-Zahlen leer. Optional gibt es ein zweites, klassisches Token mit nur dem Scope public_repo für die Sternhistorie (Variable GITHUB_TOKEN_STARS). Ohne dieses Token beginnt die Sternkurve beim ersten Sammellauf. Je nach Version können Bezeichnungen leicht abweichen.

Terminal und Projektordner

  1. Öffne das Terminal (Cmd+Leertaste, „Terminal“ tippen, Enter).
  2. Lege den Ordner an und wechsle hinein.
mkdir -p ~/docker/repostats
cd ~/docker/repostats
docker compose version

Die letzte Zeile gibt die Compose-Version aus und bestätigt, dass Docker erreichbar ist.

Installation

Repo Stats braucht zwei Dateien im Projektordner: compose.yaml beschreibt den Container, .env enthält deine Zugangsdaten. Compose liest die .env automatisch.

  1. Öffne den Editor für die Compose-Datei.
  2. Füge den Inhalt des nächsten Kastens ein (Cmd+V).
  3. Speichere die Datei mit Strg+O, bestätige mit Enter und beende den Editor mit Strg+X.
nano compose.yaml
# Repo Stats – Dashboard für deine GitHub-Statistiken
services:
  repostats:
    image: ghcr.io/sphings79/repostats:latest    # fertiges Image (amd64 und arm64)
    container_name: repostats
    restart: unless-stopped                      # startet nach einem Neustart wieder
    environment:
      GITHUB_TOKEN: ${GITHUB_TOKEN:?GITHUB_TOKEN in .env eintragen}   # Pflicht, kommt aus der Datei .env
      GITHUB_LOGIN: ${GITHUB_LOGIN:?GITHUB_LOGIN in .env eintragen}   # Pflicht, dein GitHub-Benutzername
      GITHUB_TOKEN_STARS: ${GITHUB_TOKEN_STARS:-}                     # optional: zweites Token für die Sternhistorie
      FULL_RUN_HOUR: ${FULL_RUN_HOUR:-4}                              # Stunde (UTC) des täglichen Komplettlaufs
      QUICK_RUN_MINUTES: ${QUICK_RUN_MINUTES:-60}                     # Minuten zwischen den schnellen Zähler-Läufen
      TZ: ${TZ:-Europe/Berlin}                                        # Zeitzone
    volumes:
      - repostats-data:/data                     # hier liegt die Datenbank (eine SQLite-Datei)
    ports:
      - "${PORT:-8377}:8080"                     # Dashboard: http://IP:8377

volumes:
  repostats-data:
  1. Öffne den Editor für die Datei .env.
  2. Füge den Inhalt des nächsten Kastens ein.
  3. Ersetze HIER-DEIN-TOKEN durch das kopierte GitHub-Token.
  4. Ersetze DEIN-GITHUB-NAME durch deinen GitHub-Benutzernamen.
  5. Speichere die Datei mit Strg+O, bestätige mit Enter und beende den Editor mit Strg+X.
nano .env
# Pflicht: persönliches GitHub-Token (klassisch mit Scope "repo")
GITHUB_TOKEN=HIER-DEIN-TOKEN
# Pflicht: dein GitHub-Benutzername
GITHUB_LOGIN=DEIN-GITHUB-NAME
# Optional: zweites klassisches Token mit Scope "public_repo" für die Sternhistorie
GITHUB_TOKEN_STARS=
  1. Starte den Container.
docker compose up -d

Docker lädt das Image (es gibt eine native Version für Apple Silicon) und startet den Container.

Einrichtung in der Weboberfläche

Beim ersten Aufruf gibt es noch kein Konto. Wer den Port zuerst erreicht, legt es an. Erledige diesen Schritt deshalb sofort nach dem Start.

  1. Öffne im Browser http://localhost:8377.
  2. Lege auf der Einrichtungsseite einen Benutzernamen und ein Passwort fest.
  3. Öffne den Bereich „Verwaltung“.
  4. Wähle die Repositories aus, die verfolgt werden sollen.
  5. Klicke auf „Jetzt alles sammeln“.

Der erste Lauf holt alle Zahlen, die GitHub hergibt; danach füllt sich die Übersicht mit Kacheln für Sterne, Besucher, Clones und Downloads. Benutzername und Passwort lassen sich später unter „Konto“ ändern. Ab jetzt sammelt Repo Stats von selbst: stündlich die günstigen Zähler (Sterne, Forks, Downloads) und täglich um 4 Uhr UTC alles andere, etwa Verkehr, Herkunft und CI-Läufe.

Kontrolle

  1. Prüfe im Terminal den Status.
  2. Beende die Protokollanzeige mit Strg+C.
cd ~/docker/repostats
docker compose ps
docker compose logs -f

In der Spalte „STATUS“ steht „Up“, nach kurzer Zeit „(healthy)“. Docker Desktop zeigt den Container auch im Bereich „Containers“. Die Datenbank ist eine einzige SQLite-Datei; ein Backup ist eine Dateikopie.

Updates

  1. Öffne das Terminal und wechsle in den Projektordner.
  2. Lade das neue Image und starte den Container neu.
cd ~/docker/repostats
docker compose pull
docker compose up -d

Die Datenbank liegt in einem Docker-Volume und bleibt erhalten. Zeigt Compose „Recreated“ oder „Started“, läuft die neue Version.

Wenn etwas nicht klappt

  • Der Befehl meldet, der Docker-Daemon laufe nicht: Starte Docker Desktop und warte, bis es bereit ist.
  • Die Seite lädt nicht: Prüfe mit docker compose ps, ob der Container läuft. Ist Port 8377 belegt, trage in der .env eine Zeile PORT=8378 ein und rufe Port 8378 auf.
  • Der Befehl bricht mit „GITHUB_TOKEN in .env eintragen“ ab: Die Datei .env fehlt oder liegt nicht im selben Ordner wie compose.yaml.
  • Nach dem Neustart des Macs läuft Repo Stats nicht: Docker Desktop muss gestartet sein (siehe Autostart oben); dann startet der Container dank restart: unless-stopped von selbst.
  • Die Verkehrszahlen (Besucher, Clones) bleiben leer: Dem Token fehlt ein Recht. Beim klassischen Token muss „repo“ gesetzt sein, beim fein granulierten Token Lesezugriff auf „Administration“.
  • Die Sternkurve beginnt erst heute: Ohne GITHUB_TOKEN_STARS (klassisches Token mit public_repo) beginnt sie beim ersten Sammellauf.
  • Passwort für das Dashboard vergessen: Das Konto lässt sich verwerfen und neu einrichten (Befehl siehe Projektseite auf GitHub). Das Token bleibt davon unberührt.
  • Die Seite ist öffentlich erreichbar: Im Container liegt ein Token, das private Repositories lesen kann. Veröffentliche den Port nicht ins Internet.

Voraussetzungen

  • Ein Mac mit der aktuellen oder einer der beiden vorherigen macOS-Versionen und mindestens 4 GB Arbeitsspeicher
  • Ein GitHub-Konto
  • Internetzugang für den Download von Docker Desktop und des Images

Andere Systeme

Unterstützen

Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.

Kaffee oder Pizza