Создание DNS-имен и сертификатов
Необходимо определить доменные имена для сервисов и, при наличии DNS-сервера в сети, зарегистрировать их в его конфигурации. Для указанных ниже сервисов требуется заранее создать доменные имена. Также необходимо выпустить SSL-сертификаты для всех сервисов, за исключением bs-license-server:
bs-backend- основной веб-порталkeycloak- сервис авторизацииonlyoffice-documentserver- редактор документовbs-license-server- сервер лицензий (сертификат не требуется)redis-ui- веб-интерфейс Rediskafka-ui- веб-интерфейс Kafka-uiopensearch-dashboards- веб-интерфейс OpenSearchca- корневой сертификат (используется для выпуска остальных сертификатов; доменное имя не требуется)
Готовые сертификаты необходимо разместить в каталоге /DockerCompose/Certificates/https (в соответствующие поддиректории для каждого сервиса).
Рекомендуется использовать следующую структуру файлов:
- сертификат (.crt / .pem)
- приватный ключ (.key)
- пароль к сертификату (.txt) — при необходимости
Для упрощения администрирования рекомендуется использовать wildcard-сертификаты, покрывающие все поддомены одного домена.
Поддерживаемый формат:
- .pem (основной и рекомендуемый)
Фактически используются:
- .crt, .cer, .pem — сертификаты
- .key — приватные ключи
Для корректного разрешения имен внутри Docker-контейнера необходимо добавить адрес вашего корпоративного DNS-сервера в файл /etc/docker/daemon.json. Пример конфигурации представлен ниже:
{
"dns": ["10.1.2.3"]
}
Примечание: при выполнении скрипта bs_setup.sh будет дополнительно предложено настроить ротацию логов Docker-контейнеров (параметры log-driver и log-opts в том же файле /etc/docker/daemon.json), чтобы избежать неконтролируемого роста логов и переполнения диска. Рекомендуется согласиться с данной настройкой — она не требует ручного редактирования конфигурации.
Перезапуск службы Docker для применения внесённых изменений (DNS и настроек логирования) выполняется автоматически в процессе работы скрипта bs_setup.sh — вручную перезапускать Docker не требуется.
Далее укажите доменные имена и пути к сертификатам в конфигурационном файле .env.
Примечание: пример создания сертификатов можно посмотреть в подразделе: Создание локального центра сертификации (CA) и выпуск TLS-сертификата.
Внимание! В файле docker-compose.yml присутствует переменная: ASPNETCORE_Kestrel__Certificates__Default__Password="***"
Данная переменная должна содержать пароль от сертификата, который используется сервисом bs-backend.
Возможны два варианта:
Порядок её заполнения зависит от того, какой сертификат используется при установке:
1. Самоподписанные сертификаты
Инсталлятор автоматически генерирует пароль, шифрует им сертификат и подставляет этот пароль в переменную ASPNETCORE_Kestrel__Certificates__Default__Password.
Никаких дополнительных действий не требуется.
2. Корпоративные сертификаты
- Если ключ сертификата защищён паролем — в процессе установки в окне терминала появится запрос на ввод пароля от сертификата. Введённый пароль будет автоматически прописан в переменную.
- Если ключ сертификата без пароля — переменная ASPNETCORE_Kestrel__Certificates__Default__Password будет автоматически закомментирована инсталлятором.
Возможные проблемы
Если после установки контейнер bs-backend не запускается и в логах появляется ошибка загрузки сертификата, проверьте:
- соответствие значения переменной реальному паролю сертификата (для корпоративных сертификатов);
- корректность закомментированной строки (если сертификат без пароля).
Если корпоративный DNS-сервер отсутствует, доменные имена необходимо прописать вручную в файле /DockerCompose/hosts/hosts.
Пример заполнения:
192.168.1.39 web.local 192.168.1.39 kc.local 192.168.1.39 oo.local 192.168.1.39 redis-ui.local 192.168.1.39 opensearch-dashboards.local 192.168.1.39 kafka-ui.local
Внимание! Пропустите этот шаг, если вы уже настроили DNS через daemon.json. Ручное заполнение hosts — резервный метод, который используется только при отсутствии основного DNS-сервера в качестве крайней меры.