Timestamp GIT Secure your prior art without exposing code

← Alle Beiträge

2026-08-26

Self-Hosted Git-Zeitstempel mit Docker: Eine Anleitung

Self-Hosted Git-Zeitstempel mit Docker: Eine Anleitung
timestamp git blockchain proof

Selbst gehostetes Git-Zeitstempeln mit Docker: Ein Leitfaden

Die sich wiederholende manuelle Aufgabe, die Sie damit eliminieren, ist diese: Jedes Mal, wenn Sie einen kryptografisch belastbaren Nachweis benötigen, dass ein Git-Commit an einem bestimmten Datum existierte, führen Sie entweder Zeitstempel-Befehle von Hand aus oder Sie übertragen Metadaten an einen Dienst, den Sie nicht vollständig kontrollieren. Für Startups, Entwicklungsabteilungen und compliance-orientierte Teams entsteht dadurch eine Lücke. Manuelle Schritte werden übersprungen. Externe Abhängigkeiten werfen Fragen zur Datenhoheit auf. Regulierte oder luftabgeschottete Umgebungen können eine verwaltete SaaS-Lösung oft überhaupt nicht nutzen.

Der schwierige Weg besteht darin, OpenTimestamps selbst zu betreiben und jeden Beleg manuell zu verwalten. Der praktische Weg ist, Timestamp GIT als selbst gehostete Docker-Anwendung bereitzustellen: dieselbe GitHub-App-basierte Automatisierung, nächtliche Bitcoin-Verankerung und Verifizierungs-Badges laufen auf Infrastruktur, die Ihnen gehört.

Wenn Sie eine Auffrischung benötigen, warum Existenznachweise in Software wichtig sind, bevor Sie fortfahren, lesen Sie Existenznachweise in Software: Ein Leitfaden für Einsteiger.

Warum Git-Zeitstempeln selbst hosten?

Das Selbst-Hosten von Timestamp GIT geht nicht darum, den verwalteten Dienst zu vermeiden. Es geht darum, dieselbe Automatisierung hinter Ihrer eigenen Firewall auszuführen – mit Ihrem eigenen Datenvolumen, Ihrer eigenen Lizenz und Ihren eigenen Netzwerkregeln. Das ist wichtig, wenn:

  • Sie Datenhoheit benötigen und nicht möchten, dass Commit-Metadaten Ihre Umgebung über den Bitcoin-Verankerungsschritt hinaus verlassen.
  • Sie in einer regulierten oder luftabgeschotteten Umgebung arbeiten, in der Verbindungen zu Drittanbieter-SaaS eingeschränkt sind.
  • Sie volle Kontrolle über die GitHub-App-Anmeldedaten, den Speicherort und den Protokollzugriff wünschen.
  • Sie eine auditfreundliche Bereitstellung benötigen, die unter der operativen Kontrolle Ihres Teams bleibt.

Die selbst gehostete Docker-Option bietet Ihnen dieselbe automatisierte Pipeline: Installieren Sie die GitHub-App einmal, verbinden Sie Repositories und lassen Sie die Instanz jede Nacht Commit-Hashes gruppieren, Merkle-Proofs erstellen und diese in Bitcoin verankern. Nach der einmaligen Einrichtung gibt es keinen manuellen Zeitstempel-Schritt mehr.

Einmalige Einrichtung: Bereitstellen von Timestamp GIT mit Docker

Die Bereitstellung ist ein einzelner Docker-Compose-Stack mit zwei Diensten: der Timestamp-GIT-Anwendung und einer Valkey-Instanz, die als Hash-Warteschlange dient.

Erstellen Sie eine docker-compose.yml-Datei mit der exakten Konfiguration aus der Produktdokumentation:

services:
  timestampgit:
    image: rue1401/timestampgit:prod
    ports:
      - "8080:8080"
    volumes:
      - ./data:/app/data
      - ./license.lic:/app/license.lic:ro
    restart: unless-stopped
  valkey:
    image: valkey/valkey:8
    restart: unless-stopped

Führen Sie dann aus:

docker compose pull
docker compose up -d
docker compose logs -f timestampgit

Die Anwendung ist nach dem Start unter http://localhost:8080 verfügbar. Beim ersten Start führt Sie ein Einrichtungsassistent durch das Verbinden Ihrer GitHub-App und die Konfiguration Ihrer Instanz. Hier schließen Sie die einmalige Integration ab. Sie installieren nichts auf Entwickler-Rechnern und wiederholen später keine manuellen Zeitstempel-Schritte.

Sie benötigen eine Lizenzdatei, die unter ./license.lic eingebunden wird. Eine zeitlich begrenzte Demo-Lizenz erhalten Sie, indem Sie das Anfrageformular auf der Docker-Lizenzseite mit Ihrem Namen, Unternehmen, Ihrer E-Mail-Adresse und optional Ihrer Telefonnummer ausfüllen. Für den Produktiveinsatz verwenden Sie eine kommerzielle Lizenz.

Nach Abschluss des Assistenten ist der laufende Zeitstempel-Prozess vollständig automatisiert.

Die automatisierte Pipeline: Vom Commit zur Bitcoin-Verankerung

Nach der Bereitstellung führt die selbst gehostete Instanz denselben Workflow ohne weitere Einrichtung aus wie der verwaltete Timestamp-GIT-Dienst.

Commit-Erkennung

Es gibt zwei Erkennungsmodi:

  • Standardmodus (GitHub-App): Die GitHub-App erkennt neue Commits über Webhooks. Sie liest nur den HEAD-Commit-Hash jedes überwachten Repositories und sendet diesen Hash an Ihre selbst gehostete Instanz.
  • Enterprise-ZK-Modus: Eine 12-zeilige GitHub Action läuft auf Ihrer Infrastruktur und überträgt nur den Commit-Hash an die Timestamp-GIT-API. In diesem Modus verlässt der Quellcode niemals Ihre Umgebung, und die Timestamp-GIT-Instanz benötigt keinen Lesezugriff auf das Quell-Repository.

Hash-Warteschlange und nächtliche Stapelverarbeitung

Eingehende Commit-Hashes werden in der Valkey-gestützten Warteschlange gespeichert. Jede Nacht führt ein Cron-Worker innerhalb des Timestamp-GIT-Containers folgende Schritte aus:

  1. Gruppiert alle ausstehenden Hashes für jedes Repository.
  2. Erstellt eine tägliche Manifestdatei (.txt) für jedes Repository.
  3. Erstellt nativ einen Merkle-Baum.
  4. Erstellt OpenTimestamps-Proofs unter Verwendung öffentlicher OTS-Kalender.
  5. Verankert die Merkle-Wurzel in der Bitcoin-Blockchain.

Zustellung der Nachweise

Die Manifest- und .ots-Belegdateien werden zurück in einen dedizierten Timestamps-Branch oder ein Schatten-Repository übertragen, je nachdem, wie Sie die GitHub-App konfiguriert haben. Dies geschieht automatisch, nachdem die Bitcoin-Verankerung bestätigt wurde.

Die Bitcoin-Bestätigung dauert normalerweise einige Stunden, daher erscheinen Nachweise nicht sofort nach Mitternacht. Wenn Sie um 15:00 Uhr committen, wird dieser Hash beim nächsten nächtlichen Lauf aufgegriffen und in der Regel einige Stunden später verankert und zugestellt.

Überwachung und Fehlerbehandlung

Sie können den Verankerungsstatus direkt über die API-Endpunkte Ihrer selbst gehosteten Instanz überwachen.

Status-Endpunkte

Für jedes öffentliche Repository können Sie abfragen:

curl https://timestampgit.example.com/api/statusLast/acme/checkout-service

Dies gibt JSON mit den Informationen zum zuletzt verankerten Bitcoin-Block zurück.

curl https://timestampgit.example.com/api/statusCount/acme/checkout-service

Dies gibt die Gesamtzahl der committeten und gestempelten Commits zurück.

curl https://timestampgit.example.com/api/statusSummary/acme/checkout-service

Dies gibt eine kombinierte Zusammenfassung zurück, die für Shields.io-Badges geeignet ist.

Private Repositories hängen einen verschlüsselten HMAC an die URL an, sodass nur autorisierte Benutzer ihren Status einsehen können. Der HMAC ist spezifisch für Ihre selbst gehostete Server-Instanz.

Öffentliches Dashboard

Jedes Repository verfügt außerdem über ein öffentliches Status-Dashboard unter:

https://timestampgit.example.com/status/{user}/{repo}

Diese Seite zeigt die Nachweis-Langlebigkeit, das früheste Verankerungsdatum, die tägliche Regelmäßigkeit, Bitcoin-Block- und Transaktionsdaten, eine Kalender-Heatmap, eine herunterladbare Audit-CSV und ein PDF-Zertifikat.

Fehlerszenarien

  • Wenn der Cron-Worker fehlschlägt, prüfen Sie die Container-Protokolle:
docker compose logs -f timestampgit
  • Wenn das Bitcoin-Netzwerk die Bestätigung verzögert, zeigen die Status-Endpunkte noch keine neue Verankerung an. Dies ist in der Regel vorübergehend.
  • Die selbst gehostete Instanz speichert ihre Daten im ./data-Volume. Ein Neustart oder die Neuerstellung der Container führt nicht zum Verlust von wartenden Hashes oder der Konfiguration.
  • Richten Sie Warnmeldungen auf Basis der Status-API oder der Protokollausgabe ein. Eine tägliche Prüfung von /api/statusLast ist für die meisten Teams ausreichend. Wenn das Datum der letzten Verankerung nicht mehr voranschreitet, untersuchen Sie den Container und den ausgehenden Netzwerkzugriff.

Best Practices für selbst gehostetes Git-Zeitstempeln

  • Beschränken Sie den Netzwerkzugriff auf den Docker-Host. Verwenden Sie Firewall-Regeln und Reverse-Proxys. Stellen Sie nur die Ports bereit, die für GitHub-Webhooks oder Ihr internes Netzwerk erreichbar sein müssen.
  • Sichern Sie das ./data-Volume und die license.lic-Datei. Das Volume enthält wartende Hashes und die Instanzkonfiguration. Die Lizenzdatei muss für den Container lesbar bleiben.
  • Verwenden Sie eine dedizierte GitHub-App mit minimalen Berechtigungen. Im Standardmodus benötigt die App nur Lesezugriff auf Quell-Repositories und Lese-Schreib-Zugriff auf das Ziel-Repository, in dem die Nachweise gespeichert werden. Der Enterprise-ZK-Modus erfordert nur Lese-Schreib-Zugriff auf das Ziel-Repository.
  • Bevorzugen Sie ein Schatten-Repository für Nachweise. Dies hält Ihr Haupt-Repository sauber und trennt die Quell-Historie von den Zeitstempel-Belegen.
  • Verifizieren Sie Zeitstempel regelmäßig. Verwenden Sie die öffentliche Verifizierungsseite oder API, um zu bestätigen, dass .ots-Belege weiterhin gegen Bitcoin-Blockdaten verifizieren. Dies ist besonders vor einem rechtlichen oder Compliance-Ereignis wichtig.
  • Aktualisieren Sie Container-Images bewusst. Verwenden Sie docker compose pull in einem Wartungsfenster und verifizieren Sie die neue Version gegen eine Staging-Instanz, bevor Sie sie in Produktion ausrollen.

FAQ

F: Kann ich Timestamp GIT in einer vollständig luftabgeschotteten Umgebung betreiben?

A: Ja, die selbst gehostete Docker-Version ist für maximale Sicherheit konzipiert und kann in luftabgeschotteten Umgebungen ausgeführt werden. Sie muss jedoch weiterhin in der Bitcoin-Blockchain verankern, daher benötigt die Instanz ausgehenden Internetzugriff, um Bitcoin-Nodes oder OpenTimestamps-Kalender zu erreichen. Wenn eine vollständige Luftabschottung erforderlich ist, benötigen Sie möglicherweise einen Proxy oder ein Relay für den Verankerungsschritt.

F: Wie erhalte ich eine Lizenz für die selbst gehostete Docker-Version?

A: Sie können eine zeitlich begrenzte Demo-Lizenz anfordern, indem Sie das Formular auf der Docker-Lizenzseite mit Ihrem Namen, Unternehmen, Ihrer E-Mail-Adresse und optional Ihrer Telefonnummer ausfüllen. Eine Lizenzdatei wird zur Evaluierung bereitgestellt. Für den Produktiveinsatz wenden Sie sich für eine kommerzielle Lizenz an den Anbieter.

F: Erfordert die selbst gehostete Version eine GitHub-App?

A: Ja, die selbst gehostete Timestamp-GIT-Instanz verwendet weiterhin eine GitHub-App, um Commits zu erkennen und Nachweise zurück in Ihre Repositories zu übertragen. Während des Einrichtungsassistenten verbinden Sie Ihre GitHub-App-Anmeldedaten. Die App benötigt Lesezugriff auf Quell-Repositories und Lese-Schreib-Zugriff auf das Ziel-Repository, in dem die Nachweise gespeichert werden.

F: Welche Ressourcenanforderungen gelten für den Betrieb von Timestamp GIT mit Docker?

A: Die Produktinformationen geben keine exakten Ressourcenanforderungen an, aber das Docker Compose umfasst zwei Dienste: die Timestamp-GIT-Anwendung und eine Valkey-Instanz (Redis-kompatibel) für die Hash-Warteschlange. Für kleine bis mittlere Teams sollte ein bescheidener VPS mit 1–2 GB RAM ausreichen. Überwachen Sie die Ressourcennutzung und skalieren Sie bei Bedarf.

Fazit

Selbst gehostetes Git-Zeitstempeln mit Docker entfernt die manuelle Routinearbeit aus dem Schutz des Stands der Technik. Sie stellen den Stack einmal bereit, verbinden die GitHub-App, und jeder Commit in einem überwachten Repository durchläuft eine automatisierte Pipeline: Hash-Erkennung, nächtliche Stapelverarbeitung, Merkle-Proof-Erstellung, Bitcoin-Verankerung und Zustellung der Nachweise zurück in Ihr Repository.

Das ist der Unterschied zwischen einer rechtlichen Absicherung, die Sie tatsächlich nutzen, und einer, die zur lästigen Pflicht wird. Wenn Sie bereit für die Bereitstellung sind, beginnen Sie mit dem Docker-Compose-Stack oben und fordern Sie eine Demo-Lizenz über die Docker-Lizenzseite an. Für Teams, die keine eigene Instanz betreiben möchten, bietet der verwaltete Timestamp-GIT-Dienst dieselbe Automatisierung ohne Selbst-Hosting.

Verwandte Beiträge

EU label: AI-generated content