Kibo einrichten
Der Reverse Proxy steht (Traefik) – jetzt kommt Kibo selbst:
Beispieldateien kopieren, .env ausfüllen, starten.
Dateien kopieren und .env ausfüllen
# Beispieldateien auf den Server kopieren, zum Beispiel nach /opt/kibo
mkdir -p /opt/kibo && cd /opt/kibo
# deploy/compose.yml, deploy/.env.example, deploy/backup.sh,
# deploy/update.sh und deploy/legal/ aus dem Repository hierher kopieren,
# für eine zweite Domain auch deploy/compose.redirect.yml
# chmod +x backup.sh update.sh
cp .env.example .env
In der .env mindestens setzen:
openssl rand -base64 32 # → BETTER_AUTH_SECRET
openssl rand -hex 24 # → POSTGRES_PASSWORD (auch in DATABASE_URL eintragen)
Das Datenbank-Passwort hexadezimal, weil es in der DATABASE_URL steht:
/, + und = aus base64 würden die Adresse zerbrechen. Das Secret steht in
keiner URL, dort passt base64.
KIBO_DOMAIN=kibo.example.org– ohne Protokoll, genau so wie im DNS.BETTER_AUTH_URL=https://kibo.example.org– mit Protokoll. Daraus entstehen Cookies, Bestätigungs- und Reset-Links sowie die Links und QR-Codes der Kitas und ihrer Bretter. Auch Passkeys sind an diesen Hostnamen gebunden – eine spätere Änderung macht alle hinterlegten Passkeys unbrauchbar (Sicherheit).DATABASE_URL=postgresql://kibo:…@postgres:5432/kibo– Host ist der Servicenamepostgres, nichtlocalhost.KIBO_IMAGE_TAG– steht in der Vorlage auf einer festen Version (1.2.2). Für ein Update die neue Version eintragen (Updates).
Alle weiteren Variablen stehen unter Konfiguration.
Die Datei .env enthält Zugangsdaten. chmod 600 .env und keinesfalls in ein
Git-Repository legen.
Starten
docker compose up -d
docker compose logs -f app
Der erste Start legt die Datenbank an, wendet die Migrationen an und startet
die App. Sobald docker compose ps für app healthy zeigt, ist
https://kibo.example.org/admin/signup erreichbar: dort das erste Konto und
die erste Kita anlegen. Mit geschlossener Registrierung entsteht das erste
Konto stattdessen per Skript
(Registrierung steuern und erstes Konto anlegen).
Startprüfung
Fehlt eine Pflichtangabe, bricht schon docker compose mit dem Namen der
Variable ab (DATABASE_URL, BETTER_AUTH_URL, BETTER_AUTH_SECRET,
KIBO_DOMAIN und die drei POSTGRES_*). Die App selbst prüft beim Start noch
einmal und startet nicht, wenn
DATABASE_URL,BETTER_AUTH_URLoderBETTER_AUTH_SECRETfehlt oder leer ist,BETTER_AUTH_SECRETkürzer als 32 Zeichen ist,BETTER_AUTH_URLkeine gültige Adresse ist oder nicht mithttps://beginnt (ausgenommenlocalhost,127.0.0.1und[::1]zum Testen),TRUSTED_PROXIESeinen Eintrag enthält, der weder IP noch CIDR-Bereich ist,SIGNUP_MODEetwas anderes alsopenoderclosedist – ein Tippfehler soll keine Registrierung offen lassen, die geschlossen sein sollte,SIGNUP_EMAIL_DOMAINSeinen Eintrag enthält, der keine Domain ist (erlaubt sinddomainund*.domain),HOSTEDetwas anderes alstrueoderfalseist oder eine der übrigen Angaben des gehosteten Modus (HOSTED_*,PLAUSIBLE_*,AGB_URL,AVV_URL) ungültig ist – auch ohneHOSTED,DOCS_URLoderSOURCE_URLkeine Adresse mithttp://oderhttps://ist,- eine der Betreiberangaben
OPERATOR_NAME,OPERATOR_ADDRESS,OPERATOR_EMAILoderOPERATOR_LEGAL_INFOungültig ist oderIMPRESSUM_URLoderDATENSCHUTZ_URLkeine Adresse mithttps://ist (Betreiberangaben in E-Mails), - von den drei
VAPID_*-Variablen nur ein Teil gesetzt ist oder die Schlüssel nicht passen (Benachrichtigungen).
Jeder Grund steht als eigene [server]-Zeile im Log, gefolgt von
[server] Kibo startet nicht. Siehe docs/selbst-hosten/einrichtung.md. Läuft
alles, lädt die App direkt nach dem Start ihre Hintergrundaufgaben (geordnetes
Herunterfahren, stündliche Aufräumarbeiten) statt erst mit dem ersten Besuch
und meldet, wer sich registrieren kann ([auth] Registrierung …), um welche
Art von Instanz es sich handelt und wo ihre Dokumentation liegt
([server] Modus: …, Hilfe-Link),
die SMTP-Einstellung ([mail] SMTP …, SMTP), die
Betreiberangaben im Fuß der E-Mails ([mail] Betreiber im Fuß der E-Mails: …
oder die Warnung [mail] Betreiberangaben unvollständig …) sowie, ob
Benachrichtigungen eingerichtet sind ([push] …,
Benachrichtigungen). Das erste Aufräumen läuft
sofort mit; erreicht die App die Datenbank nicht, steht gleich danach ein
… fehlgeschlagen im Log (Betrieb). Lassen sich die
Hintergrundaufgaben nicht laden, endet die App mit
[server] Kibo startet nicht: ….