gDown Installation

gDown wird allein installiert, auf einer Maschine oder als Cluster, mit einem einzigen Skript. Das Skript prüft nur und installiert dann: Es kontrolliert ein signiertes Manifest (Ed25519) und die SHA-256-Prüfsumme der Binärdatei, bevor irgendetwas geschrieben wird.

gDown wird zu einem systemd-Dienst (Benutzer gluonify-gdown, Daten in /var/lib/gluonify-gdown). Ein erster Knoten startet einen neuen Cluster mit einem Mitglied; das erzeugte Administratorpasswort liegt in einer nur für root lesbaren Datei.

Führen Sie den ersten Befehl auf der ersten Maschine aus. Das Cluster-Token steht in /etc/gluonify-gdown/gdown.env (GLUONIFY_GDOWN_AUTH_TOKEN): Kopieren Sie es und führen Sie den letzten Befehl auf jeder weiteren Maschine aus, mit --seed auf den ersten Knoten. Das Token geht über die Umgebung, nie als Argument. Das neue Mitglied konfiguriert sich anhand des ersten Knotens und tritt bei. Drei Mitglieder arbeiten weiter, wenn eines ausfällt.

Optionen

  • --node-id: Name des Mitglieds (Standard: der Rechnername).
  • --advertise-host: die Adresse, unter der die anderen Mitglieder dieses erreichen (Standard: der Rechnername).
  • --seed: URL eines Mitglieds eines bestehenden Clusters; auf dem ersten Knoten weglassen.
  • --data-dir: Datenverzeichnis (Standard /var/lib/gluonify-gdown).
  • --version: zu installierende Version (Standard: die neueste).
  • --key-sha256: Fingerabdruck des Veröffentlichungsschlüssels; das Skript lehnt jeden anderen Schlüssel ab.

Ports

8080 (HTTP: API, Webkonsole), 7687 (Bolt) und 9000 (Raft, nur zwischen Mitgliedern). Öffnen Sie 9000 zwischen den Maschinen eines Clusters und für Ihre Clients nicht mehr als 8080 und 7687.

Docker

Das öffentliche Image gluonify/gdown führt das native Programm auf Red Hat UBI 9 micro aus (seit 0.6.1), für linux/amd64 und linux/arm64: Benutzer ohne Root-Rechte (uid 10001 oder jede uid der Gruppe 0, wie OpenShift sie vergibt), Daten im Volume /data, schreibgeschütztes Root-Dateisystem, Healthcheck durch das Programm selbst (kein curl im Image). Es läuft unverändert unter der OpenShift-Richtlinie restricted-v2; ein StatefulSet mit drei Mitgliedern steht auf dieser Seite. Es hat kein Standardpasswort und startet nicht ohne das Passwort des ersten Administrators (vorzugsweise in einer Datei, einem Docker-Secret, oder in der Umgebung) oder einen OpenID-Connect-Anbieter. Seit 0.6.0 wird das Programm mit Oracle GraalVM 25 und profilgesteuerter Optimierung (PGO) gebaut; die enthaltenen Teile von Oracle GraalVM werden kostenlos gemäß den GraalVM Free Terms and Conditions (GFTC) weitergegeben, deren Text im Image unter /licenses liegt.

Drei Mitglieder mit gegenseitigem TLS (Docker Compose)

Das Compose-Beispiel startet drei Mitglieder mit gegenseitigem TLS für Raft untereinander, HTTPS für Konsole und API sowie Bolt über TLS. Zwei Skripte erzeugen Testzertifikate und zufällige Secrets; verwenden Sie in Produktion Ihre eigene Zertifizierungsstelle.

  • Secrets: Das Passwort des ersten Administrators kann direkt in GLUONIFY_GDOWN_AUTH_LOCAL_INITIAL_ADMIN_PASSWORD angegeben werden, empfohlen ist aber GLUONIFY_GDOWN_AUTH_LOCAL_INITIAL_ADMIN_PASSWORD_FILE (eine Datei, etwa ein Docker-Secret), denn die Umgebung ist in docker inspect sichtbar; ebenso das Diensttoken über GLUONIFY_GDOWN_AUTH_TOKEN_FILE.
  • Ohne TLS zwischen den Mitgliedern funktioniert der Cluster, aber Raft läuft im Klartext: gDown protokolliert beim Start und bei jedem Beitritt eine Warnung. Gegenseitiges TLS ist die empfohlene Einrichtung.
  • Volumes: /data (Datenbanken und Raft-Log, aufbewahren) und /var/lib/gdown/native, wohin die TLS-Bibliothek entpackt wird (es muss Ausführung erlauben, anders als ein noexec-/tmp).
  • Die Images sind mit cosign und dem Gluonify-Schlüssel signiert und enthalten eine SBOM und eine Provenienz-Attestierung; ein Update ersetzt ein Mitglied nach dem anderen.

OpenShift und Kubernetes

Das Image läuft unverändert unter der Richtlinie restricted-v2 von OpenShift: zufällige uid in Gruppe 0, keine Capability, schreibgeschütztes Root-Dateisystem. Lassen Sie runAsUser leer (OpenShift wählt sie, und seine fsGroup macht das Volume beschreibbar): kein anyuid nötig. Legen Sie das Secret mit dem Administratorpasswort und dem Service-Token an und wenden Sie das Manifest an: ein headless Service und ein StatefulSet mit drei Mitgliedern, in dem gdown-0 den Cluster startet und die anderen ihm beitreten.

Raft läuft zwischen den Mitgliedern im Klartext: Ergänzen Sie die TLS-Variablen des Compose-Clusterbeispiels, um es zu verschlüsseln. HTTP geht über eine Route, Bolt über einen Service vom Typ LoadBalancer (eine Route trägt nur HTTP); Port 9000 nie freigeben. Unter Docker mit zufälligen uids der Gruppe 0 geprüft, noch nicht auf einem OpenShift-Cluster.

Anmeldung mit Microsoft Entra ID

gDown akzeptiert Zugriffstoken von Entra ID über HTTP, WebSocket und Bolt, und seine Konsole meldet Personen mit Entra ID an (Autorisierungscode mit PKCE). Die Rechte kommen aus App-Rollen, im Claim roles.

  1. Registrieren Sie die API (ein Mandant) und setzen Sie accessTokenAcceptedVersion im Manifest auf 2, damit Token in Version 2 ausgestellt werden.
  2. Machen Sie eine API verfügbar: Anwendungs-ID-URI api://<api-client-id> und ein Bereich gdown.access, den Clients anfordern, um ein Token für gDown zu erhalten.
  3. Legen Sie die App-Rollen gDown.Reader, gDown.Writer und gDown.Admin an; weisen Sie sie Benutzern oder Gruppen zu, und Diensten als Anwendungsberechtigungen.
  4. Registrieren Sie die Konsole als Single-Page-Anwendung (PKCE, ohne Secret) mit der Adresse der Konsole als Umleitungs-URI, und geben Sie ihr die delegierte Berechtigung gdown.access.
  5. Binden Sie die folgende Konfiguration im Image unter /opt/gdown/config/application.properties ein.

Was das Token enthalten muss

iss = https://login.microsoftonline.com/<tenant-id>/v2.0 (Ihr Mandant, Token Version 2); aud = die Client-ID der API (ein Token für eine andere API wird abgelehnt); roles = die App-Rollen, zugeordnet zu reader, writer oder admin; tid = Ihr Mandant (über iss geprüft, oder mit allowed-tenants bei mehreren Mandanten); exp und die Signatur von Microsoft. Der Claim scp ist informativ: die Rechte hängen nicht von ihm ab.

Verwenden Sie App-Rollen statt des Claims groups: ab 200 Gruppen lässt Entra ihn weg (Overage), und gDown ruft Microsoft Graph nicht auf. Ein Token bleibt bis zu seinem Ablauf gültig.

Lizenz

Copyright (c) 2026 Gluonify. gDown wird unter der Business Source License 1.1 veröffentlicht: Sie dürfen es kopieren, ändern, weitergeben und produktiv einsetzen, außer um Dritten einen gehosteten oder verwalteten Datenbankdienst anzubieten. Vier Jahre nach jeder Version geht diese in die Apache-Lizenz 2.0 über. Für jede andere Nutzung ist eine kommerzielle Lizenz erhältlich. Komponenten Dritter bleiben unter ihren eigenen Lizenzen, aufgeführt in der Datei NOTICE des Repositorys.

Neo4j, Bolt und Cypher sind Marken von Neo4j, Inc. openCypher ist ein Projekt der openCypher Implementers Group (ihr TCK steht unter der Apache-Lizenz 2.0). Oracle, Java und GraalVM sind Marken von Oracle und/oder seinen Tochtergesellschaften. Red Hat, UBI und Mandrel sind Marken von Red Hat, Inc. Docker ist eine Marke von Docker, Inc. gDown und Gluonify sind mit keinem von ihnen verbunden und werden von keinem gesponsert oder unterstützt; „kompatibel mit“ bezeichnet nur die Kompatibilität von Protokoll und Sprache.