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
- Öffne das „Paketzentrum“.
- Klicke auf „Alle Pakete“.
- Suche nach „Container Manager“.
- 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
- Öffne die „Dateistation“.
- Öffne den Ordner
docker. - Lege dort den Ordner
repostatsan. - Lege darin den Ordner
dataan.
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.
- Melde dich bei github.com an.
- Klicke oben rechts auf dein Profilbild.
- Klicke auf „Settings“.
- Scrolle in der linken Seitenleiste nach unten und klicke auf „Developer settings“.
- Klicke unter „Personal access tokens“ auf „Tokens (classic)“.
- Klicke auf „Generate new token“ und dann auf „Generate new token (classic)“.
- Trage bei „Note“ einen Namen ein, zum Beispiel „Repo Stats“.
- Wähle bei „Expiration“ eine Laufzeit. Läuft das Token ab, trägst du ein neues ein.
- Setze das Häkchen bei „repo“.
- Klicke ganz unten auf „Generate token“.
- 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
- Öffne den „Container Manager“.
- Klicke in der Seitenleiste auf „Projekt“.
- Klicke oben auf „Erstellen“.
- Gib bei „Projektname“
repostatsein. - Klicke bei „Pfad“ auf „Durchsuchen“ und wähle
docker/repostats. - Wähle bei „Quelle“ die Möglichkeit, eine
docker-compose.ymlmit dem Editor zu erstellen. - Füge den Inhalt des nächsten Kastens ein.
- Ersetze
HIER-DEIN-TOKENdurch das kopierte GitHub-Token - Ersetze
DEIN-GITHUB-NAMEdurch deinen GitHub-Benutzernamen - 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.
- Lass die Option für das Webportal (Web Station) ausgeschaltet und klicke auf „Weiter“.
- Aktiviere in der Zusammenfassung, dass das Projekt nach dem Assistenten gestartet wird.
- 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.
- Öffne im Browser
http://IP-DES-GERÄTS:8377(im Beispielhttp://192.168.1.50:8377). - Lege auf der Einrichtungsseite einen Benutzernamen und ein Passwort fest.
- Öffne den Bereich „Verwaltung“.
- Wähle die Repositories aus, die verfolgt werden sollen.
- 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
- Öffne im Container Manager den Bereich „Container“.
- Wähle den Container von Repo Stats und öffne die „Details“.
- 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
- Wähle unter „Projekt“ den Eintrag
repostatsund dann „Aktion“ › „Beenden“. - Wähle „Aktion“ › „Bereinigen“. Das entfernt nur den Container; die Datenbank im Ordner
docker/repostats/datableibt. - Öffne den Bereich „Image“, markiere
ghcr.io/sphings79/repostatsund aktualisiere es über die Aktion „Aktualisieren“. - Wähle beim Projekt „Aktion“ › „Erstellen“.
- 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 -dWenn 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/dataexistiert 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 mitpublic_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.
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