Локальная установка#
Установка на виртуальной машине#
Keycloak может быть запущен в двух режимах работы, режим разработки (development mode) и рабочий режим (production mode). Оба режима предлагают разные наборы значений по умолчанию для среды, для которой они предназначены.
Запуск в режиме разработки#
Режим разработки предназначен для людей, впервые пробующих KeyCloak.SE и быстро запускающих его. Он также предлагает удобные настройки по умолчанию для разработчиков, например, для разработки новой темы KeyCloak.SE. Режим разработки запускается вызовом следующей команды:
bin/kc.[sh|bat] start-dev
По умолчанию#
Режим разработки устанавливает следующую конфигурацию по умолчанию:
HTTP включен;
Строгое разрешение имени хоста отключено;
Кэш установлен как локальный (механизм распределенного кеша не используется для обеспечения высокой доступности);
Кэширование тем и шаблонов отключено.
Запуск Keycloak в промышленном режиме#
Промышленный режим предназначен для развертывания KeyCloak.SE в промышленных средах и следует принципу «безопасности по умолчанию». Промышленный режим запускается вызовом следующей команды:
bin/kc.[sh|bat] start
Без дополнительной настройки эта команда не запустит KeyCloak.SE и вместо этого покажет вам ошибку. Это сделано намеренно, потому что Keycloak следует принципу «безопасности по умолчанию» в этом режиме и ожидает, что при запуске в промышленном режиме будет доступна настройка имени хоста и настройка HTTPS/TLS.
По умолчанию#
В промышленном режиме установлены следующие значения по умолчанию:
HTTP отключен, так как важна безопасность транспортного уровня (HTTPS);
Ожидается конфигурация имени хоста;
Ожидается конфигурация HTTPS/TLS.
По умолчанию примеры параметров конфигурации для промышленного режима закомментированы в conf/keycloak.conf файле по умолчанию. Это дает вам представление об основной конфигурации, которую следует учитывать при запуске Keycloak в промышленной среде.
Содержание файла conf/keycloak.conf:
# Basic settings for running in production. Change accordingly before deploying the server.
# Database
# The database vendor.
#db=postgres
# The username of the database user.
#db-username=keycloak
# The password of the database user.
#db-password=password
# The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor.
#db-url=jdbc:postgresql://localhost/keycloak
# Observability
# If the server should expose healthcheck endpoints.
#health-enabled=true
# If the server should expose metrics endpoints.
#metrics-enabled=true
# HTTP
# The file path to a server certificate or certificate chain in PEM format.
#https-certificate-file=${kc.home.dir}conf/server.crt.pem
# The file path to a private key in PEM format.
#https-certificate-key-file=${kc.home.dir}conf/server.key.pem
# The proxy address forwarding mode if the server is behind a reverse proxy.
#proxy=reencrypt
# Do not attach route to cookies and rely on the session affinity capabilities from reverse proxy
#spi-sticky-session-encoder-infinispan-should-attach-route=false
# Hostname for the Keycloak server.
#hostname=myhostname
# Standin
#kcse-aplj-enabled=true
# Keycloak mode of replication: master or standin
#kcse-aplj-mode=standin
# Connection address to Kafka of Application Journal
#kcse-aplj-kafka-bootstrap-servers={IP_ADDRESS}:{PORT}
# The zone inside the Application Journal (should be the same for the master and all standin instances)
#kcse-aplj-zone-id=KCSE
# Data types for which the master will send journals and the standin instances will read them (only one data type must be specified for the standin)
#kcse-aplj-data-types=PERSISTENCE
# Parameters for secure SSL connection with Kafka of Application Journal
#kcse-aplj-ssl-truststore-location=
#kcse-aplj-ssl-truststore-password=
#kcse-aplj-ssl-keystore-location=
#kcse-aplj-ssl-keystore-password=
#kcse-aplj-ssl-key-password=
# For the 'standin' mode, you also need to specify:
# The name of the plugin in the Application Journal that is responsible for operations with the specified kcse-aplj-data-types data type (can be only one)
#kcse-aplj-plugin-code=EXPORT_FUNC_SI
# Optional parameter for kafka consumer of standin
#kcse-aplj-max-poll-interval-ms=300000
# Connection parameters to the Keycloak database with all write and read rights (the scheme must be specified the same as that on which current Keycloak will be running)
#kcse-aplj-db-username=username
#kcse-aplj-db-password=password
#kcse-aplj-db-schema=public
# Required parameter if the current standin Keycloak is launched on a schema which name differs from the name of the schema on which the master Keycloak is running (NOT RECOMMENDED)
#kcse-aplj-db-master-schema=public
# Start replicating journals created only from specified time. Required parameter if the standin is starting on a copy of database of working master instance, set '0' to dont use
#kcse-aplj-replication-init-timestamp=1708330507547
# Start replicating journals created only from specified service_id. Required parameter if the standin is starting on a copy of database of working master instance, better than timestamp, set '0' to dont use
#kcse-aplj-replication-init-service-id={JOURNAL_SERVICE_ID}
Установка в контейнере#
Для установки KeyCloak.SE в контейнере c использованием СУБД PostgreSQL выполните следующие команды:
docker network create keycloak-network
docker run -d --name postgres --net keycloak-network -p 5432:5432 -e POSTGRES_DB=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password -d postgres
docker run --name keycloak --net keycloak-network -p 8888:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -e KC_DB=postgres -e KC_DB_PASSWORD=password -e KC_DB_USERNAME=keycloak -e KC_DB_URL_HOST=localhost <yor_registry>/keycloak:latest start-dev
Административная консоль будет доступна по адресу: http://localhost:8888/admin/.