Skip to content

Commit a9be636

Browse files
committed
feat: Build own keycloak container
Signed-off-by: Julius Knorr <jus@bitgrid.net>
1 parent 39b76cf commit a9be636

5 files changed

Lines changed: 47 additions & 8 deletions

File tree

.github/workflows/docker.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jobs:
3333
- saml
3434
- nginx
3535
- elasticsearch
36+
- keycloak
3637
- mailhog
3738
- ldap
3839
- lookupserver

docker-compose.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -954,18 +954,21 @@ services:
954954
NEXTCLOUD_URL: http://nextcloud
955955

956956
keycloak:
957-
image: quay.io/keycloak/keycloak:26.1
957+
image: ghcr.io/juliusknorr/nextcloud-dev-keycloak:latest
958958
expose:
959959
- 8080
960-
volumes:
961-
- ./docker/configs/keycloak:/opt/keycloak/data/import
962-
command: start-dev --import-realm
960+
# volumes:
961+
# - ./docker/configs/keycloak:/opt/keycloak/data/import
962+
command: start-dev --import-realm --http-enabled=true --proxy-headers xforwarded
963963
environment:
964+
PROTOCOL: "${PROTOCOL:-http}"
965+
DOMAIN_SUFFIX: "${DOMAIN_SUFFIX:-.local}"
964966
VIRTUAL_HOST: "keycloak${DOMAIN_SUFFIX}"
965967
VIRTUAL_PORT: 8080
966-
KEYCLOAK_ADMIN: admin
967-
KEYCLOAK_ADMIN_PASSWORD: admin
968-
PROXY_ADDRESS_FORWARDING: "true"
968+
KC_BOOTSTRAP_ADMIN_USERNAME: admin
969+
KC_BOOTSTRAP_ADMIN_PASSWORD: admin
970+
KEYCLOAK_PROXY_ADDRESS_FORWARDING: "true"
971+
KEYCLOAK_FRONTEND_URL: "${PROTOCOL:-http}://keycloak${DOMAIN_SUFFIX}"
969972
KC_PROXY: edge
970973

971974
av:

docker/keycloak/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM quay.io/keycloak/keycloak:26.1
2+
3+
RUN mkdir -p /opt/keycloak/data/import
4+
5+
ADD keycloak/Example-realm.json /opt/keycloak/data/import/Example-realm.json
6+
7+
ADD keycloak/prepare.sh /opt/keycloak/bin/custom-kc.sh
8+
9+
ENTRYPOINT ["/opt/keycloak/bin/custom-kc.sh"]

docker/configs/keycloak/Example-realm.json renamed to docker/keycloak/Example-realm.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@
690690
}, {
691691
"id" : "555c2809-b153-4cf4-8bb1-a6306e5179c7",
692692
"clientId" : "http://nextcloud.local/index.php/apps/user_saml/saml/metadata",
693-
"adminUrl" : "http://keycloak.dev.local/auth/realms/Example",
693+
"adminUrl" : "http://keycloak.local/auth/realms/Example",
694694
"surrogateAuthRequired" : false,
695695
"enabled" : true,
696696
"alwaysDisplayInConsole" : false,

docker/keycloak/prepare.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash
2+
3+
KEYCLOAK_REALM_CONFIG="/opt/keycloak/data/import/Example-realm.json"
4+
PROTOCOL="${PROTOCOL:-http}"
5+
NEXTCLOUD_URL=${PROTOCOL}://${NEXTCLOUD_URL:-nextcloud}${DOMAIN_SUFFIX}
6+
KEYCLOAK_URL=${PROTOCOL}://${KEYCLOAK_URL:-keycloak}${DOMAIN_SUFFIX}
7+
8+
if [ -f "$KEYCLOAK_REALM_CONFIG" ]; then
9+
echo "Preparing Keycloak realm configuration..."
10+
11+
echo "Using NEXTCLOUD_URL: ${NEXTCLOUD_URL}"
12+
echo "Using KEYCLOAK_URL: ${KEYCLOAK_URL}"
13+
14+
# Replace placeholder with actual NEXTCLOUD_URL
15+
sed -i.bak "s|http://nextcloud\\.local|${NEXTCLOUD_URL//./\\.}|g" "$KEYCLOAK_REALM_CONFIG"
16+
sed -i.bak "s|http://keycloak\\.local|${KEYCLOAK_URL//./\\.}|g" "$KEYCLOAK_REALM_CONFIG"
17+
rm -f "${KEYCLOAK_REALM_CONFIG}.bak"
18+
19+
cat "$KEYCLOAK_REALM_CONFIG"
20+
21+
echo "Realm configuration prepared."
22+
else
23+
echo "Realm configuration file not found: $KEYCLOAK_REALM_CONFIG"
24+
fi
25+
26+
exec /opt/keycloak/bin/kc.sh "$@"

0 commit comments

Comments
 (0)