Локальная установка#

Установка на виртуальной машине#

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/.