sphings-dev.de

Repo Stats auf Synology installieren

Repo Stats über den Container Manager einer Synology-NAS einrichten: GitHub-Token erstellen, Projekt anlegen und das Dashboard für deine Repository-Statistiken öffnen.

Diese Anleitung richtet Repo Stats über den Container Manager einer Synology-NAS ein. Am Ende läuft das Dashboard auf Port 8377 und sammelt die Statistiken deiner GitHub-Repositories. Die Bezeichnungen folgen der deutschen DSM-Oberfläche (DSM 7).

Vorbereitung

Container Manager installieren

  1. Öffne das „Paketzentrum“.
  2. Klicke auf „Alle Pakete“.
  3. Suche nach „Container Manager“.
  4. Klicke auf „Installieren“.

Wird das Paket nicht gefunden, unterstützt dein Modell es nicht oder deine DSM-Version ist zu alt. Bei der Neuinstallation legt DSM den freigegebenen Ordner docker an. Prüfe in der „Dateistation“, ob er vorhanden ist. Fehlt er, erstellst du ihn unter „Systemsteuerung › Freigegebener Ordner › Erstellen“.

Ordner anlegen

  1. Öffne die „Dateistation“.
  2. Öffne den Ordner docker.
  3. Lege dort den Ordner repostats an.
  4. Lege darin den Ordner data an.

In data liegt später die Datenbank. Der Pfad lautet /volume1/docker/repostats/data; die Nummer im Volume-Namen kann abweichen. Je nach Version können Bezeichnungen leicht abweichen.

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.

Installation

  1. Öffne den „Container Manager“.
  2. Klicke in der Seitenleiste auf „Projekt“.
  3. Klicke oben auf „Erstellen“.
  4. Gib bei „Projektname“ repostats ein.
  5. Klicke bei „Pfad“ auf „Durchsuchen“ und wähle docker/repostats.
  6. Wähle bei „Quelle“ die Möglichkeit, eine docker-compose.yml mit dem Editor zu erstellen.
  7. Füge den Inhalt des nächsten Kastens ein.
  8. Ersetze HIER-DEIN-TOKEN durch das kopierte GitHub-Token
  9. Ersetze DEIN-GITHUB-NAME durch deinen GitHub-Benutzernamen
  10. Klicke auf „Weiter“.
# 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: "HIER-DEIN-TOKEN"            # Pflicht. Das Token liest auch private Repos – geheim halten!
      GITHUB_LOGIN: "DEIN-GITHUB-NAME"           # Pflicht. Dein GitHub-Benutzername
      GITHUB_TOKEN_STARS: ""                     # optional: zweites Token (Scope "public_repo") für die Sternhistorie
      FULL_RUN_HOUR: "4"                         # Stunde (UTC) des täglichen Komplettlaufs
      QUICK_RUN_MINUTES: "60"                    # Minuten zwischen den schnellen Zähler-Läufen
      TZ: Europe/Berlin                          # Zeitzone
    volumes:
      - /volume1/docker/repostats/data:/data                             # hier liegt die Datenbank (eine SQLite-Datei)
    ports:
      - "8377:8080"                              # Dashboard: http://IP:8377

Das Token steht jetzt im Klartext in dieser Konfiguration. Zeige oder teile sie deshalb nicht.

  1. Lass die Option für das Webportal (Web Station) ausgeschaltet und klicke auf „Weiter“.
  2. Aktiviere in der Zusammenfassung, dass das Projekt nach dem Assistenten gestartet wird.
  3. Klicke auf „Fertig“.

DSM lädt das Image und startet das Projekt. Danach steht repostats in der Projektliste. Ist die DSM-Firewall aktiv (Systemsteuerung › Sicherheit › Firewall), erlaube den Zugriff auf Port 8377 aus deinem Netz.

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://IP-DES-GERÄTS:8377 (im Beispiel http://192.168.1.50: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. Öffne im Container Manager den Bereich „Container“.
  2. Wähle den Container von Repo Stats und öffne die „Details“.
  3. Wechsle zum Tab „Protokoll“.

Der Container läuft, das Protokoll zeigt Meldungen zum Sammellauf. Die Datenbank ist eine einzige SQLite-Datei; ein Backup ist eine Dateikopie. Sie liegt im Ordner docker/repostats/data.

Updates

Die Datenbank liegt in einem Ordner auf dem NAS und bleibt erhalten. Der Container Manager beschreibt für Projekte keinen festen Update-Ablauf; deshalb zwei Wege.

Weg A: in DSM

  1. Wähle unter „Projekt“ den Eintrag repostats und dann „Aktion“ › „Beenden“.
  2. Wähle „Aktion“ › „Bereinigen“. Das entfernt nur den Container; die Datenbank im Ordner docker/repostats/data bleibt.
  3. Öffne den Bereich „Image“, markiere ghcr.io/sphings79/repostats und aktualisiere es über die Aktion „Aktualisieren“.
  4. Wähle beim Projekt „Aktion“ › „Erstellen“.
  5. Wähle „Aktion“ › „Starten“.

Weg B: per SSH

Aktiviere SSH unter „Systemsteuerung › Terminal & SNMP“ (Tab „Terminal“) und melde dich mit einem Administrator-Konto an.

cd /volume1/docker/repostats
sudo docker compose pull
sudo docker compose up -d

Wenn etwas nicht klappt

  • „Container Manager“ fehlt im Paketzentrum: Dein Modell oder deine DSM-Version wird nicht unterstützt.
  • Die Seite lädt nicht: Prüfe, ob der Container läuft, die DSM-Firewall und die Adresse http://IP-DES-NAS:8377. Ist der Port belegt, ändere "8377:8080" zu "8378:8080".
  • Fehler wegen des Ordners: Prüfe, ob /volume1/docker/repostats/data existiert und zu deinem Volume passt.
  • Klicke nicht auf „Löschen“ am Projekt, solange du die Datenbank nicht gesichert hast.
  • 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

  • Eine Synology-NAS mit DSM 7, die den Container Manager unterstützt
  • Ein Administrator-Konto in DSM
  • Ein GitHub-Konto

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