Создание DNS-имен и сертификатов
Необходимо определить доменные имена для сервисов и, при наличии DNS-сервера в сети, зарегистрировать их в его конфигурации. Для указанных ниже сервисов требуется заранее создать доменные имена. Также необходимо выпустить SSL-сертификаты для всех сервисов, за исключением bs-license-server:
bs-backend(основной веб-портал)keycloak(сервис авторизации)onlyoffice-documentserver(редактор документов)bs-license-server(сервер лицензий — сертификат не требуется)
Готовые сертификаты необходимо разместить в каталоге /DockerCompose/Certificates/https (в соответствующие поддиректории для каждого сервиса).
Для корректного разрешения имен внутри Docker-контейнера необходимо добавить адрес вашего корпоративного DNS-сервера в файл /etc/docker/daemon.json. Пример конфигурации представлен ниже:
{
"dns": ["10.1.2.3"]
}
После внесения изменений перезапустите Docker командой ниже, чтобы новые настройки вступили в силу:
sudo systemctl restart docker
Далее укажите доменные имена и пути к сертификатам в конфигурационном файле .env.
Примечание: пример создания сертификатов можно посмотреть в подразделе: Создание локального центра сертификации (CA) и выпуск TLS-сертификата.
Внимание! В файле docker-compose.yml присутствует переменная: ASPNETCORE_Kestrel__Certificates__Default__Password="***"
Данная переменная должна содержать пароль от сертификата, который используется сервисом bs-backend.
Возможны два варианта:
1. Сертификат защищён паролем. В данном случае необходимо:
- использовать пароль, который был указан при создании сертификата;
- прописать его в переменную:
ASPNETCORE_Kestrel__Certificates__Default__Password="ваш_пароль"
Если пароль указан неверно — контейнер bs-backend не запустится, и в логах появится ошибка загрузки сертификата.
2. Сертификат без пароля:
Если сертификат создан без пароля, необходимо: удалить строку полностью из docker-compose.yml, либо закомментировать ее.
Иначе будет ожидаться пароль и контейнер может завершиться с ошибкой при загрузке сертификата.
Для автоматической генерации сертификатов можно воспользоваться скриптом generate_cert.sh, предварительно заполнив названия сертификатов в .env и сделав файл для генерации сертификатов исполняемым при помощи команды: sudo chmod +x generate_cert.sh
Если корпоративный DNS-сервер отсутствует, доменные имена необходимо прописать вручную в файле /DockerCompose/hosts/hosts.
Пример заполнения:
192.168.1.39 web.local 192.168.1.39 kc.local 192.168.1.39 oo.local
Внимание! Пропустите этот шаг, если вы уже настроили DNS через daemon.json. Ручное заполнение hosts — резервный метод, который используется только при отсутствии основного DNS-сервера в качестве крайней меры.