> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/resheniya/organizaciya-dostupov/spravochnaya-informaciya/keycloak/instrukcii-po-razvertyvaniyu/razvyortyvanie-keycloak-v-docker-alisa-ai.md).

# Развёртывание Keycloak в Docker (Алиса AI)

### Развёртывание Keycloak с экспортером метрик и интеграция с Prometheus

#### 1. Подготовка окружения на сервере 192.168.3.0

Убедитесь, что на сервере установлены:

* Docker
* Docker Compose

Проверьте доступность СУБД:

bash

```bash
ping 192.168.4.9
psql -h 192.168.4.9 -U keycloak -d keycloak -c "SELECT version();"
```

#### 2. Создание docker-compose.yml

Создайте файл `docker-compose.yml` в удобной директории (например, `/opt/keycloak`):

yaml

```yaml
version: '3.8'

services:
  keycloak:
    image: quay.io/keycloak/keycloak:25.0
    container_name: keycloak
    environment:
      - KC_DB=postgres
      - KC_DB_URL=jdbc:postgresql://192.168.4.9:5432/keycloak
      - KC_DB_USERNAME=keycloak
      - KC_DB_PASSWORD=your_secure_password
      - KC_HOSTNAME=keycloak.utmsoft.ru
      - KC_HTTP_ENABLED=true
      - KC_PROXY=edge
      - KC_HEALTH_ENABLED=true
      - KC_METRICS_ENABLED=true
    ports:
      - "8080:8080"
    volumes:
      - keycloak_data:/opt/keycloak/data
    networks:
      - keycloak-network
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:8080/health/ready || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

volumes:
  keycloak_data:
    driver: local

networks:
  keycloak-network:
    driver: bridge
```

**Важные замечания:**

* Замените `your_secure_password` на реальный пароль пользователя `keycloak` в PostgreSQL.
* Замените `admin_password` на желаемый пароль администратора Keycloak.

#### 3. Запуск сервисов

1. Перейдите в директорию с `docker-compose.yml`:

bash

```bash
cd /opt/keycloak
```

2. Запустите контейнеры:

bash

```bash
docker-compose up -d
```

3. Проверьте статус:

bash

```bash
docker-compose ps
```

#### 4. Настройка обратного прокси (Nginx)

Добавьте конфигурацию в Nginx (обычно `/etc/nginx/conf.d/keycloak.conf`):

nginx

```nginx
server {
    listen 80;
    server_name keycloak.utmsoft.ru;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name keycloak.utmsoft.ru;

    ssl_certificate /etc/nginx/ssl/keycloak.crt;
    ssl_certificate_key /etc/nginx/ssl/keycloak.key;

    location / {
        proxy_pass http://192.168.3.0:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /metrics {
        proxy_pass http://192.168.3.0:9404/metrics;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
```

Перезапустите Nginx:

bash

```bash
systemctl restart nginx
```

#### 5. Проверка работоспособности

1. Проверьте доступ к Keycloak:

```
curl -k https://keycloak.utmsoft.ru/auth/realms/master/.well-known/openid-configuration
```

2. Проверьте метрики:

```
curl http://192.168.3.0:9404/metrics
```

#### 6. Настройка Prometheus

Добавьте в конфигурационный файл Prometheus (`prometheus.yml`) секцию scrape\_configs:

yaml

```yaml
scrape_configs:
  - job_name: 'keycloak'
    static_configs:
      - targets: ['192.168.3.0:9404']
    metrics_path: '/metrics'
    scheme: 'http'
    relabel_configs:
      - source_labels: [__address__]
        modulus: 1
        target_label: __tmp_hash
        action: hashmod
      - source_labels: [__tmp_hash]
        regex: ^0$
        action: keep
```

**Важно:**

* Если Prometheus развёрнут в Kubernetes, используйте Service Discovery вместо статических целей.
* Убедитесь, что сеть между Prometheus и сервером 192.168.3.0 разрешает трафик на порт 9404.

#### 7. Проверка интеграции с Prometheus

1. Откройте веб-интерфейс Prometheus.
2. Перейдите в раздел «Status» → «Targets».
3. Убедитесь, что цель `keycloak` имеет статус `UP`.
4. В разделе «Graph» выполните запрос `up{job="keycloak"}` — должен вернуться результат `1`.

#### 8. Дополнительные рекомендации

1. **Резервное копирование**:
   * Регулярно делайте бэкапы базы PostgreSQL.
   * Сохраняйте файлы сертификатов SSL.
2. **Безопасность**:
   * Используйте сильные пароли для пользователя `keycloak` и администратора Keycloak.
   * Ограничьте доступ к порту 9404 только для Prometheus.
   * Настройте брандмауэр на сервере 192.168.3.0.
3. **Мониторинг**:
   * Добавьте алерты в Prometheus для ключевых метрик Keycloak.
   * Следите за потреблением ресурсов контейнерами.
4. **Обновления**:
   * Периодически обновляйте образы Docker.
   * Следите за релизами Keycloak и экспортера метрик.
