Ich hab mich an meinem ersten Addon Probiert
Leider komme Ich bei den einstellungen für OIDC nicht so wirklich weiter, er bringt mir immer einen Timeout … und Ich komme einfach nicht dahinter wo mein fehler liegt.
Ich hoffe ihr könnt mir dabei weiterhelfen:
Hier ist meine Setup.sh, hier habe Ich zum Testen die Guppenübergabe in der .env auch mal deaktiviert … insgesamt vermute Ich, dass meine OIDC urls nicht pasen
#!/bin/bash
# This script gets these variables passed: $DOMAIN, $ADMIN_PASSWORD, $IP, $LDAP_DC
mkdir -p /root/bookstack
# Dont forget to escape " with a backslash:
cp docker-compose.yml /root/bookstack/docker-compose.yml
#set Volume data Path
if [ -d "/data" ]; then
mkdir -p /data/docker/bookstack
VDP="/data/docker/bookstack"
else
# /data existiert nicht → Fallback
VDP="/root/bookstack"
fi
#Generate AppKey
APP_KEY_B64=$(openssl rand -base64 32)
#Generate DB Password
DB_PW=$(libre-workspace-generate-secret)
#Generate MySQL Passwords
MYSQL_RP=$(libre-workspace-generate-secret)
if command -v timedatectl >/dev/null 2>&1; then
TZ_HOST=$(timedatectl show -p Timezone --value)
else
TZ_HOST=$(readlink /etc/localtime | sed 's|.*/zoneinfo/||')
fi
# Register bookstack with oidc provider
CLIENT_ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
CLIENT_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
# Add the oidc client to the oidc provider
libre-workspace-add-oidc-client "Bookstack" "$CLIENT_ID" "$CLIENT_SECRET" "https://wiki.$DOMAIN/accounts/oidc/callback/"
# Write .env File
echo "
#Bookstack environment
TZ=${TZ_HOST}
APP_URL=https://wiki.$DOMAIN
APP_KEY=base64:$APP_KEY_B64
DB_HOST=bookstack_db
DB_PORT=3306
DB_USERNAME=bookstack
DB_PASSWORD=$DB_PW
DB_DATABASE=bookstackapp
D_PATH=$VDP
#MYSQL environment
MYSQL_ROOT_PASSWORD=$MYSQL_RP
MYSQL_DATABASE=bookstackapp
MYSQL_USER=bookstack
MYSQL_PASSWORD=$DB_PW
#OIDC Settings
AUTH_METHOD=oidc
AUTH_AUTO_INITIATE=true
OIDC_NAME="OIDC"
OIDC_DISPLAY_NAME_CLAIMS=name
OIDC_CLIENT_ID=$CLIENT_ID
OIDC_CLIENT_SECRET=$CLIENT_SECRET
OIDC_ISSUER=https://portal.$DOMAIN/openid/
OIDC_END_SESSION_ENDPOINT=true
OIDC_ISSUER_DISCOVER=true
OIDC_USER_TO_GROUPS=true
OIDC_GROUPS_CLAIM=groups
OIDC_ADDITIONAL_SCOPES=groups
OIDC_REMOVE_FROM_GROUPS=true
" > /root/bookstack/.env
# Envsubst is used to replace variables in the docker-compose.yml file
#export DOMAIN=$DOMAIN
#export ADMIN_PASSWORD=$ADMIN_PASSWORD
#export IP=$IP
#export LDAP_DC=$LDAP_DC
#envsubst < docker-compose.yml > /root/bookstack/docker-compose.yml
docker compose -f /root/bookstack/docker-compose.yml up -d
echo "wiki.$DOMAIN {
#tls internal
reverse_proxy localhost:55100
}
" >> /etc/caddy/Caddyfile
# If domain is "int.de" uncomment the tls internal line for internal https
if [ "$DOMAIN" = "int.de" ]; then
sed -i 's/#tls internal/tls internal/g' /etc/caddy/Caddyfile
fi
systemctl restart caddy
Wenn ich den extra_host eintrage komme ich so wie es aussieht weiter:
Fehler jetzt:
OIDC Discovery Error: Unexpected issuer value found on discovery response
Wenn Ich das richtig verstehe, stimmt jetzt der issuer nicht mehr überein?!
Weil ich auf IP umleite?
PS.: was Ich noch vergessen hatte zu erwähnen:
Die DNS Auflösung im Container habe Ich auch geprüft, die kommt korrekt an, allerdings dauert sie gefühlt relativ lange bis er aufgelöst hat.
Ich glaube der extra hosts Eintrag in der docker-compose löst genau Dein Problem.
Das Routing innerhalb Docker ist manchmal etwas verwirrend.
So biegen wir das auf jeden Fall gerade und er braucht gar kein DNS Aufruf.
Der Rest ist dann OIDC Magic, muss man sich genauer ansehen.
Evtl. hilft da die KI Deines Vertrauens weiter und/oder die Anleitung von Bookstack für OIDC für bspw. Keycloak oder Authentik, daran können wir uns immer gut orientieren.
der extra host hat es gebracht, allerdings hatte Ich noch 3 Fehler drin, weshalb er mir dann auch den Issuer Fehler gebracht hab.
beim Issuer hatte Ich noch einen “/” am ende
bei der callback URL war noch ein accounts zu viel und der abschließende “/” war eben auch wieder zu viel!
Ich würde das Addon am Montag nochmal Umschreiben und dann gerne zur Verfügung stellen.
Kann Ich das wem schicken zur Kontrolle und freigabe?
Ich hab das Komplette Plugin so geschriebn, dass es auf jeder LWS laufen sollte … denke Ich mal
Die Einzige Stelle, bei der Ich komplett von deinen Anleitungen abweiche sind die Volumes.
Ich gehe davon aus, wenn jemand eine /data eingerichtet hat, dann wirll er dort auch die “größeren” Datenmengen ablegen. Deshalb würde Ich die Volumes generel auf /data legen (in meinem Aufbau) wenn es denn vorhanden ist.
Container wie Immich oder Paperless können doch auch mal recht fgroß werden.
Vielen Dank, dass das Plugin in Codeberg aufgenommen wurde
Wie läuft das nun mit Änderungen? Ich würde gerne noch den Mail Versand für Passwörter einbauen.
Tolles Addon werd ich gleich mal ausprobieren. Installation lief ohne Probleme. Was hat es mit dem Admin User admin@admin.com auf sich? Kann man den löschen?
Ich hätte ungerne einen unbekannten User mit unbekannten Login Möglichkeiten mit Admin Rechten aktiv.