$ sudo -i
# groupadd -r dcm4chee-arc --gid=1023 && useradd -r -g dcm4chee-arc --uid=1023 dcm4chee-arc
# groupadd -r keycloak-dcm4chee --gid=1029 && useradd -r -g keycloak-dcm4chee --uid=1029 keycloak-dcm4chee
# exit
$ sudo -i
# groupadd -r slapd-dcm4chee --gid=1021 && useradd -r -g slapd-dcm4chee --uid=1021 slapd-dcm4chee
# groupadd -r postgres-dcm4chee --gid=999 && useradd -r -g postgres-dcm4chee --uid=999 postgres-dcm4chee
# exit
$ sudo -i
# sysctl -w vm.swappiness=1
# echo 'vm.swappiness=1' >> /etc/sysctl.conf (для сохранения после перезагрузки)
# exit
$ sudo -i
# sysctl -w vm.max_map_count=262144
# echo 'vm.max_map_count=262144' >> /etc/sysctl.conf (для сохранения после перезагрузки)
# exit
Если вы монтируете локальный каталог или файл, они должны быть доступны для чтения пользователем elasticsearch. Кроме того, у этого пользователя должен быть доступ на запись в каталоги config, data и log (Elasticsearch требуется доступ на запись в каталог config, чтобы он мог создать keystore). Хороший подход — предоставить группе с gid 0 групповой доступ к локальному каталогу.
Например, подготовка локального каталога для хранения данных через bind-mount:
$ sudo mkdir -p /var/local/dcm4chee-arc/esdatadir
$ sudo chmod g+rwx /var/local/dcm4chee-arc/esdatadir
$ sudo chgrp 0 /var/local/dcm4chee-arc/esdatadir
Вам необходимо примонтировать файл или родительский каталог, указанный в переменной окружения HASH_FILE, к тому или иному тому, либо к каталогу хоста, чтобы избежать создания нового дерева хэшей при каждом пересоздании контейнера. Файл (или родительский каталог) должен быть доступен для записи пользователю logstash в контейнере (uid=1000). Например, для монтирования файла:
$ sudo mkdir -p /var/local/dcm4chee-arc/logstash
$ sudo touch /var/local/dcm4chee-arc/logstash/filter-hashtree
$ sudo chown 1000:1000 /var/local/dcm4chee-arc/logstash/filter-hashtree
либо для монтирования родительского каталога
$ sudo mkdir -p /var/local/dcm4chee-arc/logstash
$ sudo chown 1000:1000 /var/local/dcm4chee-arc/logstash
Продолжайте, используя Docker Command Line либо, в качестве альтернативы, Docker Compose:
$ docker network create dcm4chee_default
$ docker network create dcm4chee_default
Запустите контейнер с LDAP-сервером в созданной сети, например:
$ docker run --network=dcm4chee_default --name ldap \
--log-driver gelf \
--log-opt gelf-address=udp://<elk-node>:12201 \
--log-opt tag=slapd
-p 389:389 \
-e ARCHIVE_HOST=<arc-host> \
-e SYSLOG_HOST=<elk-node> \
-e SYSLOG_PORT=8514 \
-e SYSLOG_PROTOCOL=TLS \
-v /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data \
-v /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d \
-d dcm4che/slapd-dcm4chee:2.6.10-34.3
который отличается от Run secured archive services and Elastic Stack on a single host
наличием --log-opt gelf-address=udp://<elk-node>:12201 и -e SYSLOG_HOST=<elk-node> — вам нужно заменить
\
Запустите контейнер с сервером базы данных в созданной сети, например:
$ docker run --network=dcm4chee_default --name db \
--log-driver gelf \
--log-opt gelf-address=udp://<elk-node>:12201 \
--log-opt tag=postgres
-p 5432:5432 \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \
-d dcm4che/postgres-dcm4chee:17.4-34
который отличается от Run secured archive services and Elastic Stack on a single host
наличием --log-opt gelf-address=udp://<elk-node>:12201 — вам нужно заменить \
Запустите контейнер с сервером MariaDB в созданной сети, например:
$ docker run --network=dcm4chee_network --name mariadb \
--log-driver gelf \
--log-opt gelf-address=udp://<elk-host>:12201 \
--log-opt tag=mariadb \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=keycloak \
-e MYSQL_USER=keycloak \
-e MYSQL_PASSWORD=keycloak \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /var/local/dcm4chee-arc/mysql:/var/lib/mysql \
-d mariadb:10.11.4
который отличается от Run secured archive services and Elastic Stack on a single host
наличием --log-opt gelf-address=udp://<elk-node>:12201 — вам нужно заменить \
$ docker network create dcm4chee_default
Запустите контейнер с предварительно настроенным сервером аутентификации Keycloak в созданной сети, например:
$ docker run --network=dcm4chee_default --name keycloak \
--log-driver gelf \
--log-opt gelf-address=udp://<elk-node>:12201 \
--log-opt tag=keycloak \
-p 8843:8843 \
-e KC_HTTPS_PORT=8843 \
-e KC_HOSTNAME=https://<arc-node>:8843 \
-e KC_HOSTNAME_BACKCHANNEL_DYNAMIC=true \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=changeit \
-e KC_DB=mariadb \
-e KC_DB_URL_DATABASE=keycloak \
-e KC_DB_URL_HOST=<db-node> \
-e KC_DB_USERNAME=keycloak \
-e KC_DB_PASSWORD=keycloak \
-e KC_LOG=file,gelf \
-e KC_LOG_GELF_HOST=<elk-node> \
-e ARCHIVE_HOST=<arc-node> \
-e KIBANA_CLIENT_ID=kibana \
-e KIBANA_CLIENT_SECRET=<kibana-client-secret> \
-e KIBANA_REDIRECT_URL=https://<arc-node>:8643/oauth2/callback/* \
-e KEYCLOAK_WAIT_FOR=<db-node>:389 <db-node>:3306 <elk-node>:8514 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /var/local/dcm4chee-arc/keycloak:/opt/keycloak/data \
-d dcm4che/keycloak:26.0.6
который отличается от Run secured archive services and Elastic Stack on a single host
наличием
- --log-opt gelf-address=udp://<elk-node>:12201
- -e KC_HOSTNAME=https://<arc-node>:8843
- -e KC_HOSTNAME_BACKCHANNEL_DYNAMIC=true
- -e KC_DB_URL_HOST=<db-node>
- -e KC_LOG=file,gelf
- -e KC_LOG_GELF_HOST=<elk-node>
- -e ARCHIVE_HOST=<arc-node>
- -e LOGSTASH_HOST=<elk-node>
- -e KIBANA_REDIRECT_URL=https://<arc-node>:8643/oauth2/callback/*
- -e KEYCLOAK_WAIT_FOR='<db-node>:389 <db-node>:3306 <elk-node>:8514'
(вам нужно заменить \
Запустите контейнер с Wildfly и развёрнутым приложением dcm4che Archive 5 в созданной сети, например:
$ docker run --network=dcm4chee_default --name arc \
--log-driver gelf \
--log-opt gelf-address=udp://<elk-node>:12201 \
--log-opt tag=dcm4chee-arc \
-p 8080:8080 \
-p 8443:8443 \
-p 9990:9990 \
-p 9993:9993 \
-p 2762:2762 \
-p 2575:2575 \
-p 12575:12575 \
-p 11112:11112 \
-e LOGSTASH_HOST=<elk-node> \
-e POSTGRES_DB=pacsdb \
-e POSTGRES_USER=pacs \
-e POSTGRES_PASSWORD=pacs \
-e AUTH_SERVER_URL=https://<arc-node>:8843 \
-e UI_AUTH_SERVER_URL=https://<arc-node>:8843 \
-e WILDFLY_WAIT_FOR="<db-node>:389 <db-node>:5432 <arc-node>:8843 <elk-node>:8514" \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
-d dcm4che/dcm4chee-arc-psql:5.34.3-secure
который отличается от Run secured archive services and Elastic Stack on a single host
наличием
- --log-opt gelf-address=udp://<elk-node>:12201
- -e LOGSTASH_HOST=<elk-node>
- -e AUTH_SERVER_URL=https://<arc-node>:8843
- -e UI_AUTH_SERVER_URL=https://<arc-node>:8843
- -e WILDFLY_WAIT_FOR="<db-node>:389 <db-node>:5432 <arc-node>:8843 <elk-node>:8514"
(вам нужно заменить \
Войдите с учётными данными Пользователь/Пароль root/changeit в Realm Admin Console Keycloak по адресу
https://<arc-node>:8843/admin/dcm4che/console — вам нужно заменить \dcm4che через переменную окружения REALM_NAME для
контейнеров Keycloak и архива, вам также нужно заменить dcm4che на это значение в URL.
Docker-образ Keycloak dcm4che/keycloak:19.0.1 и новее создаёт OIDC-клиента для UI архива при первом
запуске, настраиваемого через переменные окружения
UI_CLIENT_ID,
ARCHIVE_HOST,
ARCHIVE_HTTP_PORT и
ARCHIVE_HTTPS_PORT:

Доступ к Wildfly Administration Console также защищён Keycloak.
Docker-образ Keycloak dcm4che/keycloak:19.0.1 и новее также создаёт ещё одного OIDC-клиента для Wildfly Administration
Console при первом запуске, настраиваемого через переменные окружения
WILDFLY_CONSOLE,
ARCHIVE_HOST и
ARCHIVE_MANAGEMENT_HTTPS_PORT:

Только пользователи с ролью ADMINISTRATOR имеют право доступа к WildFly Administration Console.
Выйдите из системы, прежде чем проверять, что обращение к WildFly Administration Console по адресу http://<arc-node>:9990 или
https://<arc-node>:9993 перенаправит вас на страницу входа Keycloak. Вы можете войти с учётными данными Пользователь/Пароль
root/changeit.
Войдите с учётными данными Пользователь/Пароль root/changeit в Realm Admin Console Keycloak по адресу
https://<docker-host>:8843/admin/dcm4che/console — вам нужно заменить \dcm4che через переменную окружения REALM_NAME для
контейнеров Keycloak, Keycloak Proxy и архива, вам также нужно заменить dcm4che на это значение в URL.
Docker-образ Keycloak dcm4che/keycloak:19.0.1 и новее создаёт OIDC-клиента для OAuth2-Proxy для
защиты Kibana при первом запуске, настраиваемого через переменные окружения
KIBANA_CLIENT_ID,
KIBANA_CLIENT_SECRET и
KIBANA_REDIRECT_URL:

с Audience Token Mapper audience:

и Client Credential changeit:

который вы можете/должны Regenerate Secret (перегенерировать) и скопировать новое значение, чтобы передать его как переменную окружения
OAUTH2_PROXY_CLIENT_SECRET контейнеру OAuth2 Proxy на следующем шаге.
Запустите контейнер с OAuth2 Proxy для защиты Kibana в созданной сети, например:
$ docker run --network=dcm4chee_default --name oauth2-proxy \
-p 8643:8643 \
-e OAUTH2_PROXY_HTTPS_ADDRESS=0.0.0.0:8643 \
-e OAUTH2_PROXY_PROVIDER=keycloak-oidc \
-e OAUTH2_PROXY_SKIP_PROVIDER_BUTTON="true" \
-e OAUTH2_PROXY_UPSTREAMS=http://<elk-node>:5601 \
-e OAUTH2_PROXY_OIDC_ISSUER_URL=https://<arc-node>:8843/realms/dcm4che \
-e OAUTH2_PROXY_REDIRECT_URL=https://<arc-node>:8643/oauth2/callback \
-e OAUTH2_PROXY_ALLOWED_ROLES=auditlog \
-e OAUTH2_PROXY_CLIENT_ID=kibana \
-e OAUTH2_PROXY_CLIENT_SECRET=<kibana-client-secret> \
-e OAUTH2_PROXY_EMAIL_DOMAINS="*" \
-e OAUTH2_PROXY_OIDC_EMAIL_CLAIM="preferred_username" \
-e OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL="true" \
-e OAUTH2_PROXY_COOKIE_SECRET=T0F1dGhLaWJhbmFUZXN0cw== \
-e OAUTH2_PROXY_SSL_INSECURE_SKIP_VERIFY="true" \
-e OAUTH2_PROXY_TLS_CERT_FILE=/etc/certs/cert.pem \
-e OAUTH2_PROXY_TLS_KEY_FILE=/etc/certs/key.pem \
-e OAUTH2_PROXY_CUSTOM_TEMPLATES_DIR=/templates \
-d dcm4che/oauth2-proxy:7.7.1 \
который отличается от Run secured archive services and Elastic Stack on a single host
наличием
- -e OAUTH2_PROXY_UPSTREAMS=http://<elk-node>:5601
- -e OAUTH2_PROXY_OIDC_ISSUER_URL=https://<arc-node>:8843/realms/dcm4che
- -e OAUTH2_PROXY_REDIRECT_URL=https://<arc-node>:8643/oauth2/callback
Примечание:
- OAUTH2_PROXY_OIDC_ISSUER_URL: "https://<docker-host>:8843/realms/dcm4che" применяется только для Keycloak v18.0+
и если используется значение по умолчанию KC_HTTP_RELATIVE_PATH.
- Если используются более ранние версии Keycloak или если KC_HTTP_RELATIVE_PATH
для Keycloak v18.0+ установлен в /auth, то OAUTH2_PROXY_OIDC_ISSUER_URL: "https://<docker-host>:8843/auth/realms/dcm4che"
- `-p 8643:8643` — публикует https-порт (`8643`) контейнера OAuth2-Proxy на хосте, чтобы
разрешить подключения от внешних https-клиентов к OAuth2-Proxy, который должен совпадать с
- `-e OAUTH2_PROXY_HTTPS_ADDRESS=0.0.0.0:8643` — портом для прослушивания, и с портом
- `-e OAUTH2_PROXY_PROVIDER=kibana-oidc` — задаёт провайдера OAuth.
- `-e OAUTH2_PROXY_SKIP_PROVIDER_BUTTON` — необязательный. Если установлен в `true`, пропускает страницу входа с указанием
`Sign-on with Keycloak` и сразу показывает страницу входа Keycloak.
- `-e OAUTH2_PROXY_UPSTREAMS=http://<elk-node>:5601` — задаёт https URL Kibana в качестве вышестоящей конечной точки (upstream)
- `-e OAUTH2_PROXY_OIDC_ISSUER_URL=https://<arc-node>:8843/realms/dcm4che` — задаёт URL издателя OpenID Connect,
где порт (`8843`) соответствует `KC_HTTPS_PORT`, использованному при запуске контейнера Keycloak
- `-e OAUTH2_PROXY_REDIRECT_URL=https://<arc-node>:8643/oauth2/callback` — URL перенаправления для callback URL сервера аутентификации
Keycloak — вам нужно заменить _\<arc-node>_ на имя хоста узла архива, которое должно
разрешаться вашим DNS-сервером.
- `-e OAUTH2_PROXY_ALLOWED_ROLES=auditlog` — (keycloak-oidc) ограничивает вход членами этих ролей (можно указывать несколько раз)
- `-e OAUTH2_PROXY_CLIENT_ID=kibana` — задаёт Client ID, используемый для аутентификации на сервере Keycloak,
- `-e OAUTH2_PROXY_CLIENT_SECRET=<kibana-client-secret>` — задаёт Client Secret, используемый для аутентификации
на сервере аутентификации Keycloak для клиента типа _Confidential_ — _kibana_. Значение должно совпадать с тем, что
использовалось при запуске контейнера _keycloak_.
- `-e OAUTH2_PROXY_EMAIL_DOMAINS="*"` — значение `*` разрешает аутентификацию для любого email.
- `-e OAUTH2_PROXY_OIDC_EMAIL_CLAIM="preferred_username"` — какой claim OIDC содержит email пользователя (по умолчанию "email")
- `-e OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL="true"` — указывает не считать ошибкой, если адрес email в id_token не подтверждён
- `-e OAUTH2_PROXY_COOKIE_SECRET=T0F1dGhLaWJhbmFUZXN0cw==` — задаёт начальную строку для защищённых файлов cookie (необязательно в кодировке base64)
- `-e OAUTH2_PROXY_SSL_INSECURE_SKIP_VERIFY=true` — значение `true` пропускает проверку сертификатов, представленных при использовании HTTPS
- `-e OAUTH2_PROXY_CUSTOM_TEMPLATES_DIR` — задаёт расположение каталога с пользовательскими шаблонами, содержащего настроенную
страницу ошибки запрета доступа, отображаемую неавторизованным пользователям при аутентификации. Примечание: в OAuth2 proxy пока нет механизма
для настройки только одного из шаблонов (т.е. sign_in или error). Поэтому, если нужно настроить только один, всё равно
требуется предоставить оба шаблона.
- `-e OAUTH2_PROXY_TLS_CERT_FILE` и `OAUTH2_PROXY_TLS_KEY_FILE` — задают пути к TLS-сертификату и закрытому ключу в формате
[Privacy-Enhanced Mail (PEM)](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail), используемым для поддержки TLS.
Чтобы избежать предупреждений безопасности в веб-браузерах, подключающихся к Kibana через OAuth2 Proxy, замените сертификат в
`/etc/certs/cert.pem` docker-образа:

сертификатом, у которого _Common Name_ и/или _Subject Alt Name_ совпадает с именем хоста и который подписан
доверенным издателем; примонтируйте PEM-файлы с сертификатом и соответствующим закрытым ключом и скорректируйте
`OAUTH2_PROXY_TLS_CERT_FILE` и `OAUTH2_PROXY_TLS_KEY_FILE` так, чтобы они указывали их пути внутри контейнера.
```
$ docker run --rm dcm4che/oauth2-proxy:7.7.1 help
```
выведет все доступные переменные окружения и параметры команд. См. также OAuth2 Proxy а также Keycloak OIDC Auth Provider для Keycloak, где можно найти дополнительные сведения о параметрах конфигурации OAuth2 Proxy.
В качестве альтернативы Docker Command Line можно использовать Docker Compose, который позаботится о запуске всех 8 контейнеров:
docker-compose.yml (например):yaml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.15.1
environment:
ES_JAVA_OPTS: -Xms1024m -Xmx1024m
discovery.type: single-node
xpack.security.enabled: "false"
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "9200:9200"
- "9300:9300"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/esdatadir:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:8.15.1
logging:
driver: json-file
options:
max-size: "10m"
depends_on:
- elasticsearch
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
logstash:
image: dcm4che/logstash-dcm4chee:8.15.1-18
logging:
driver: json-file
options:
max-size: "10m"
ports:
- "12201:12201/udp"
- "8514:8514/udp"
- "8514:8514"
depends_on:
- elasticsearch
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/logstash/filter-hashtree:/usr/share/logstash/data/filter-hashtree
```console
$ docker-compose -p dcm4chee up -d
Creating network "dcm4chee_default" with the default driver
Creating dcm4chee_elasticsearch_1 ... done
Creating dcm4chee_logstash_1 ... done
Creating dcm4chee_kibana_1 ... done
```
в каталоге, содержащем `docker-compose.yml`.
docker-compose.yml:yaml
version: "3"
services:
ldap:
image: dcm4che/slapd-dcm4chee:2.6.10-34.3
logging:
driver: gelf
options:
gelf-address: "udp://<elk-node>:12201"
tag: slapd
ports:
- "389:389"
environment:
SYSLOG_HOST: <elk-node>
SYSLOG_PORT: 8514
SYSLOG_PROTOCOL: TLS
STORAGE_DIR: /storage/fs1
volumes:
- /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data
- /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d
db:
image: dcm4che/postgres-dcm4chee:17.4-34
logging:
driver: gelf
options:
gelf-address: "udp://<elk-node>:12201"
tag: postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: pacsdb
POSTGRES_USER: pacs
POSTGRES_PASSWORD: pacs
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/db:/var/lib/postgresql/data
mariadb:
image: mariadb:10.11.4
logging:
driver: gelf
options:
gelf-address: "udp://<elk-node>:12201"
tag: mariadb
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: keycloak
MYSQL_USER: keycloak
MYSQL_PASSWORD: keycloak
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/mysql:/var/lib/mysql
Вам нужно заменить \
```console
$ docker-compose -p dcm4chee up -d
Creating dcm4chee_ldap_1 ... done
Creating dcm4chee_db_1 ... done
Creating dcm4chee_mariadb_1 ... done
```
в каталоге, содержащем `docker-compose.yml`.
docker-compose.yml (например):yaml
version: "3"
services:
keycloak:
image: dcm4che/keycloak:26.0.6
logging:
driver: gelf
options:
gelf-address: "udp://<elk-node>:12201"
tag: keycloak
ports:
- "8843:8843"
environment:
KC_HTTPS_PORT: 8843
KC_HOSTNAME: https://<arc-node>:8843
KC_HOSTNAME_BACKCHANNEL_DYNAMIC: 'true'
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: changeit
KC_DB: mariadb
KC_DB_URL_DATABASE: keycloak
KC_DB_URL_HOST: <db-node>
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: keycloak
KC_LOG: file,gelf
KC_LOG_GELF_HOST: logstash
ARCHIVE_HOST: <arc-node>
KIBANA_CLIENT_ID: kibana
KIBANA_CLIENT_SECRET: <kibana-client-secret>
KIBANA_REDIRECT_URL: https://<arc-node>:8643/oauth2/callback/*
KEYCLOAK_WAIT_FOR: <db-node>:389 <db-node>:3306 <elk-node>:8514
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/keycloak:/opt/keycloak/data
oauth2-proxy:
image: dcm4che/oauth2-proxy:7.7.1
ports:
- "8643:8643"
environment:
OAUTH2_PROXY_HTTPS_ADDRESS: 0.0.0.0:8643
OAUTH2_PROXY_PROVIDER: keycloak-oidc
OAUTH2_PROXY_SKIP_PROVIDER_BUTTON: "true"
OAUTH2_PROXY_UPSTREAMS: "http://<elk-node>:5601"
OAUTH2_PROXY_OIDC_ISSUER_URL: "https://<arc-node>:8843/realms/dcm4che"
OAUTH2_PROXY_REDIRECT_URL: "https://<arc-node>:8643/oauth2/callback"
OAUTH2_PROXY_ALLOWED_ROLES: auditlog
OAUTH2_PROXY_CLIENT_ID: kibana
OAUTH2_PROXY_CLIENT_SECRET: changeit
OAUTH2_PROXY_EMAIL_DOMAINS: "*"
OAUTH2_PROXY_OIDC_EMAIL_CLAIM: "sub"
OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL: "true"
OAUTH2_PROXY_COOKIE_SECRET: T0F1dGhLaWJhbmFUZXN0cw==
OAUTH2_PROXY_SSL_INSECURE_SKIP_VERIFY: "true"
OAUTH2_PROXY_TLS_CERT_FILE: /etc/certs/cert.pem
OAUTH2_PROXY_TLS_KEY_FILE: /etc/certs/key.pem
OAUTH2_PROXY_CUSTOM_TEMPLATES_DIR: /templates
arc:
image: dcm4che/dcm4chee-arc-psql:5.34.3-secure
logging:
driver: gelf
options:
gelf-address: "udp://<elk-node>:12201"
tag: dcm4chee-arc
ports:
- "8080:8080"
- "8443:8443"
- "9990:9990"
- "9993:9993"
- "11112:11112"
- "2762:2762"
- "2575:2575"
- "12575:12575"
environment:
LOGSTASH_HOST: logstash
POSTGRES_DB: pacsdb
POSTGRES_USER: pacs
POSTGRES_PASSWORD: pacs
AUTH_SERVER_URL: https://keycloak:8843
UI_AUTH_SERVER_URL: https://<arc-host>:8843
WILDFLY_CHOWN: /storage
WILDFLY_WAIT_FOR: <db-node>:389 <db-node>:5432 <elk-node>:8514
depends_on:
- keycloak
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone
- /var/local/dcm4chee-arc/storage:/storage
Вам нужно заменить \
Примечание:
- OAUTH2_PROXY_OIDC_ISSUER_URL: "https://<docker-host>:8843/realms/dcm4che" применяется только для Keycloak v18.0+
и если используется значение по умолчанию KC_HTTP_RELATIVE_PATH.
- Если используются более ранние версии Keycloak или если KC_HTTP_RELATIVE_PATH
для Keycloak v18.0+ установлен в /auth, то OAUTH2_PROXY_OIDC_ISSUER_URL: "https://<docker-host>:8843/auth/realms/dcm4che"
console
$ docker-compose -p dcm4chee up -d
Creating network "dcm4chee_default" with the default driver
Creating dcm4chee_keycloak_1 ... done
Creating dcm4chee_arc_1 ... done
Creating dcm4chee_oauth2-proxy_1 ... done
в каталоге, содержащем docker-compose.yml.
Если вы настроили OIDC-клиента для OAuth2 Proxy с `Access Type: confidential`, вам нужно скорректировать
значение переменной окружения `OAUTH2_PROXY_CLIENT_SECRET` службы `oauth2-proxy` в
`docker-compose.yml` так, чтобы оно совпадало с фактическим значением на вкладке `Credentials` для OIDC-клиента в Realm
Admin Console Keycloak, после чего пересоздать и перезапустить контейнер OAuth2 Proxy, выполнив
```console
$ docker-compose -p dcm4chee up -d
dcm4chee_keycloak_1 is up-to-date
dcm4chee_arc_1 is up-to-date
Recreating dcm4chee_oauth2-proxy_1 ...
Recreating dcm4chee_oauth2-proxy_1 ... done
```
в каталоге, содержащем `docker-compose.yml`.