Instalace Keycloaku
Keycloak je nainstalován v dockeru - stejně jako v popisu "Základní instalace - docker"
Vytvoření adresářů a souboru docker-compose.yml¶
mkdir /opt/keycloak
cd /opt/keycloak
vim /opt/keycloak/docker-compose.yml # (1)!
vim /opt/keycloak/.env # (2)!
- Viz docker-compose.yml
- Viz .env
Vytvoření certifikátu¶
V konfiguraci volumes se soubor docker-compose.yml odkazuje na soubory ./crt/keycloak.pem a ./crt/keycloak.key. To může být certifikát pro https server (klidně self signed). Nejjednodušší způsob, jak takový certifikát vytvořit (ideálně pouze pro testovací účely) je příkazem
- Po vybídnutí zadáte požadované údaje - např:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CZ State or Province Name (full name) [Some-State]:Czechia Locality Name (eg, city) []:Prague Organization Name (eg, company) [Internet Widgits Pty Ltd]:Green Center s.r.o. Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:auth.green.cz Email Address []:
V případě, že je použitý certifikát self-signed nebo podepsán nedůveryhodnou CA, je třeba na to myslet a na reverse-proxy vypnout kontrolu certifikátu.
Themes¶
Pokud je žádoucí, aby keycloak používal custom themes, je třeba je vložit do adresáře ./themes.
Spuštění keycloaku¶
Jakmile jsou veškeré soubory připraveny, je možné keycloak spustit příkazem níže
Zmíněné soubory¶
/opt/keycloak/docker-compose.yml
version: '3.1'
volumes:
postgres_data:
driver: local
services:
postgres:
image: postgres:14.12-alpine3.18
container_name: postgres_keycloak
restart: always
hostname: keycloak21.scrumware.eu
volumes:
- './postgres_data:/var/lib/postgresql/data'
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
TZ: "Europe/Prague"
keycloak:
image: quay.io/keycloak/keycloak:23.0.4
container_name: keycloak
restart: always
volumes:
- './crt/keycloak.pem:/keycloak.pem'
- './crt/keycloak.key:/keycloak.key'
# (1)!
- './themes:/opt/keycloak/themes'
environment:
KC_LOG_LEVEL: INFO
KC_HOSTNAME_ADMIN_URL: ${KEYCLOAK_FRONTEND_URL}/auth
KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
KC_HOSTNAME_URL: ${KEYCLOAK_FRONTEND_URL}/auth
KC_DB: postgres
KC_DB_URL: 'jdbc:postgresql://postgres:5432/keycloak'
KC_DB_USERNAME: keycloak
KC_FEATURES: docker
DB_DATABASE: keycloak
DB_SCHEMA: public
KC_HTTPS_PORT: ${KEYCLOAK_HTTPS_PORT}
KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
KEYCLOAK_ADMIN: ${KEYCLOAK_ADMIN_USER}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KC_PROXY: "passthrough"
KC_HTTPS_CERTIFICATE_FILE: /keycloak.pem
KC_HTTPS_CERTIFICATE_KEY_FILE: /keycloak.key
TZ: "Europe/Prague"
ports:
- 127.0.0.1:${KEYCLOAK_HTTPS_PORT}:${KEYCLOAK_HTTPS_PORT}
command: " --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true --spi-login-protocol-openid-connect-suppress-logout-confirmation-screen=true start -Dkeycloak.hostname.provider=fixed -Dkeycloak.hostname.fixed.hostname=${KEYCLOAK_HOSTNAME} -Dkeycloak.hostname.fixed.httpsPort=443 -Dkeycloak.hostname.fixed.frontendUrl=${KEYCLOAK_FRONTEND_URL}/auth -Dkeycloak.hostname.fixed.forceBackendUrlToFrontendUrl=true "
depends_on:
- postgres
- Pokud není třeba využívat custom themes, tento řádek zakomentujte
/opt/keycloak/.env
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=super_secret_password # (1)!
KEYCLOAK_DB_PASSWORD=super_secret_password2 # (2)!
KEYCLOAK_HOSTNAME=kc.parkcloud.cz # (3)!
KEYCLOAK_FRONTEND_URL=https://kc.parkcloud.cz # (4)!
KEYCLOAK_HTTPS_PORT=8084 # (5)!
- Vyměníme za silné heslo
- Vyměníme za silné heslo
- Vyměníme za název domény, kde má být keycloak dostupný
- Vyměníme za url, kde má být keycloak dostupný
- Port musí odpovídat konfiguraci reverse proxy