Zum Hauptinhalt springen

Externe Dienste

Im Auslieferungszustand betreibt das Paket alles selbst. Sie können den mitgelieferten Objektspeicher und den mitgelieferten Anmeldeserver durch eigene ersetzen, einen E-Mail-Server anbinden und optionale Integrationen einschalten. All das stellen Sie in .env ein; übernehmen Sie jede Änderung mit:

docker compose up -d

Die mitgelieferten Komponenten wählen Sie mit COMPOSE_PROFILES:

ProfilKomponente
garageMitgelieferter S3-Objektspeicher. Entfernen Sie das Profil, um Ihren eigenen S3-Speicher zu verwenden.
keycloakMitgelieferter Anmeldeserver. Entfernen Sie das Profil, um Ihr eigenes Keycloak zu verwenden.
backupNächtliche Backups (siehe Backups).

Die Vorgabe ist COMPOSE_PROFILES=garage,keycloak.

Eigener S3-Speicher​

GOAT speichert hochgeladene Dateien in einem S3-Bucket und Profilbilder und Bilder in einem zweiten, öffentlich lesbaren Bucket. Jeder S3-kompatible Speicher ist geeignet.

Vor dem ersten Start entscheiden

Richten Sie Ihren eigenen Speicher ein, bevor Sie GOAT zum ersten Mal starten. Daten, die bereits im mitgelieferten Garage liegen, werden nicht in Ihren Speicher übertragen.

1. Buckets vorbereiten​

  • Upload-Bucket (S3_BUCKET_NAME, Vorgabe goat-uploads). Browser laden Dateien direkt in diesen Bucket hoch, daher müssen seine CORS-Regeln PUT mit einem Content-Type-Header von der GOAT-URL erlauben. Das mitgelieferte Garage verwendet diese Regel, die Sie anpassen können:

    [
    {
    "AllowedOrigins": ["https://goat.example.org"],
    "AllowedMethods": ["GET", "HEAD", "PUT"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
    }
    ]
  • Assets-Bucket (ASSETS_BUCKET_NAME, Vorgabe goat-assets) für Profilbilder und Bilder. Er muss ohne Zugangsdaten unter der Adresse lesbar sein, die Sie als ASSETS_URL eintragen.

Auf beide Buckets wird mit demselben Zugangsschlüssel zugegriffen.

2. .env einrichten​

Entfernen Sie garage aus COMPOSE_PROFILES und setzen Sie:

EinstellungBedeutung
S3_ENDPOINT_URLDer S3-Endpunkt, wie der Server ihn erreicht, z. B. https://s3.example.org
S3_PUBLIC_ENDPOINT_URLDer S3-Endpunkt, wie Browser ihn erreichen; Upload-Links zeigen hierhin
S3_REGIONDie Region, z. B. eu-central-1
S3_BUCKET_NAMEDer Upload-Bucket
S3_FORCE_PATH_STYLEtrue für Adressen im Pfad-Stil (endpunkt/bucket/key), false für den Virtual-Hosted-Stil (bucket.endpunkt/key)
S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEYIhr Zugangsschlüssel. Ersetzen Sie die Werte, die setup.sh für Garage erzeugt hat.
ASSETS_S3_ENDPOINT_URLEndpunkt des Assets-Buckets; Vorgabe ist S3_ENDPOINT_URL
ASSETS_BUCKET_NAMEDer Assets-Bucket
ASSETS_URLÖffentliche Adresse des Assets-Buckets, z. B. https://assets.example.org

GARAGE_RPC_SECRET und GARAGE_ADMIN_TOKEN werden ohne das mitgelieferte Garage nicht verwendet.

Eigenes Keycloak​

GOAT kann statt des mitgelieferten Keycloak ein Keycloak verwenden, das Sie bereits betreiben.

Anforderungen an den Client​

Legen Sie in Ihrem Realm einen Client für GOAT mit diesen Einstellungen an:

EinstellungWert
Client-TypVertraulich (Client-Authentifizierung an), mit aktiviertem Standard Flow
Valid redirect URIs<GOAT-URL>/*, z. B. https://goat.example.org/*
Web origins<GOAT-URL>
Service-AccountAktiviert, mit den realm-management-Rollen view-users und manage-users

GOAT verwendet den Service-Account, um Benutzerkonten zu lesen, Name und E-Mail-Adresse eines Benutzers in Keycloak mit seinem GOAT-Profil abzugleichen und ein Konto zu löschen, wenn sein Benutzer es in GOAT löscht.

.env einrichten​

Entfernen Sie keycloak aus COMPOSE_PROFILES und setzen Sie:

EinstellungBedeutung
KEYCLOAK_PUBLIC_URLKeycloak, wie Browser es erreichen, z. B. https://login.example.org
KEYCLOAK_INTERNAL_URLKeycloak, wie die GOAT-Container es erreichen; oft dieselbe URL
REALM_NAMEIhr Realm
KEYCLOAK_CLIENT_IDDie Client-ID
KEYCLOAK_CLIENT_SECRETDas Client-Secret. Ersetzen Sie den Wert, den setup.sh erzeugt hat.

Beide URLs enthalten den relativen Pfad Ihres Keycloak, falls es einen verwendet, etwa /auth: https://login.example.org/auth.

Der erste Administrator und smoke.sh

Mit Ihrem eigenen Keycloak legt GOAT dort keinen Benutzer an. smoke.sh meldet sich mit GOAT_ADMIN_EMAIL und GOAT_ADMIN_PASSWORD über eine direkte Passwort-Anmeldung an. Damit das funktioniert, setzen Sie beide auf einen bestehenden Benutzer Ihres Realms und aktivieren Sie Direct access grants am Client.

Verwendet Ihr Keycloak ein Zertifikat einer privaten CA, lesen Sie Firmen-CA.

E-Mail​

GOAT versendet Einladungen und Keycloak E-Mails zum Zurücksetzen des Passworts über einen SMTP-Server. E-Mail ist ausgeschaltet, solange SMTP_HOST leer ist.

EinstellungBedeutung
SMTP_HOST, SMTP_PORTDer Mailserver, z. B. smtp.example.org und 587
SMTP_SECURITYstarttls (meist Port 587), ssl (meist Port 465) oder none (z. B. ein internes Relay auf Port 25)
SMTP_USER, SMTP_PASSWORDDie Anmeldedaten. Lassen Sie beide leer für ein Relay, das E-Mails ohne Anmeldung annimmt.
SMTP_FROMAbsenderadresse. Vorgabe ist SMTP_USER, daher ist sie für ein Relay ohne Anmeldung Pflicht.
EMAILS_FROM_NAMEAbsendername, Vorgabe GOAT

Zum Beispiel ein Relay in Ihrem Netz:

SMTP_HOST=mail.internal.example.org
SMTP_PORT=25
SMTP_SECURITY=none
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=goat@example.org

Führen Sie nach einer Änderung von SMTP_SECURITY einmal ./setup.sh aus: Es leitet die beiden Schalter SMTP_STARTTLS und SMTP_SSL ab, die Keycloak benötigt. Übernehmen Sie die Änderung dann mit docker compose up -d.

Ein Ort für die E-Mail-Einstellungen

Das mitgelieferte Keycloak verwendet dieselben SMTP-Einstellungen: Bei jedem docker compose up -d überträgt der Schritt keycloak-sync sie aus .env in den Realm. Ändern Sie sie nur in .env; Änderungen in der Keycloak-Admin-Konsole unter Realm settings → Email werden beim nächsten Start ersetzt.

E-Mail-Branding​

Standardmäßig zeigen GOATs E-Mails den Namen GOAT und keine Links in der Fußzeile. Mit diesen optionalen Einstellungen fügen Sie Ihre eigenen hinzu:

EinstellungBedeutung
EMAIL_BRAND_NAMEName, der in den E-Mails erscheint
EMAIL_LOGO_URLAdresse eines Logo-Bildes, das statt des Namens erscheint
EMAIL_CONTACT_URLKontakt-Link in der Fußzeile
EMAIL_PRIVACY_URLLink zur Datenschutzerklärung in der Fußzeile

Ohne Anmeldung​

Für lokale Tests und Demos kann GOAT ganz ohne Anmeldung laufen:

AUTH=False

Alle, die GOAT öffnen, handeln dann als ein eingebauter Administrator.

warnung

Mit AUTH=False hat jeder, der die URL erreicht, vollen Zugriff auf alle Daten. Verwenden Sie diese Einstellung nur für lokale oder Demo-Installationen.

Optionale Integrationen​

GOAT funktioniert ohne jede dieser Integrationen. Jede schaltet eine Funktion frei, die einen externen Dienst benötigt.

EinstellungWas sie freischaltetOhne sie
NEXT_PUBLIC_MAPTILER_KEYDie Satelliten-/Hybrid-Grundkarte von MapTilerDiese Grundkarte wird ausgeblendet; die anderen Grundkarten funktionieren
NEXT_PUBLIC_MAPBOX_TOKENDie Ortssuche im Suchfeld der Karte (über Mapbox)Das Suchfeld findet keine Orte
CATALOG_S3_BUCKET, CATALOG_S3_ENDPOINT_URL, CATALOG_S3_ACCESS_KEY_ID, CATALOG_S3_SECRET_ACCESS_KEY, CATALOG_S3_REGIONDen GOAT-Datenkatalog: ein schreibgeschützter Bucket mit den harmonisierten Datensätzen, der regelmäßig gespiegelt wirdDer Katalog bleibt leer, und seine Synchronisierung ist ausgeschaltet
GEOCODING_URL, GEOCODING_AUTHORIZATIONDen Geocoding-Dienst, den Analyse-Werkzeuge verwendenAnalyseschritte, die Geocoding benötigen, können nicht laufen
OTEL_ENABLED, OTEL_EXPORTER_OTLP_ENDPOINTDen Export von Traces, Metriken und Logs an Ihren OpenTelemetry-CollectorEs wird nichts exportiert

Die Links, die in der App erscheinen, und die Quelle der Produktgrafiken finden Sie in der Konfigurationsreferenz. Die Quelle der Routing-Basisdaten ist unter Routing-Basisdaten beschrieben.