Содержание
Общие условия
Описание проблем при интеграции развернутого в Docker Корпоративного Сервера 2024 и Р7 команды (1.10.3 нативный инсталлятор).
Разворачивание КС 2024 производилось с использованием следующей инструкции:
Установка Корпоративный сервер 2024 через инсталлятор в docker-compose (Расширенная установка).
Подробное описание проблем и их решение
1. Порт RabbitMQ (5672
) не проброшен наружу из Docker. Анализ файла /opt/r7-office-docker/template.yaml
Симптомы:
Приложение не может подключиться к RabbitMQ, хотя контейнер запущен.
Сообщение в логах Р7 Команды, либо в инсталляторе при настройке конфигурации с интеграцией к Корпоративному серверу 2024:
connect to 172.16.16.16 port 5672 (tcp) failed: Connection refused
В логах addressbook
появляется следующее сообщение:
java.net.ConnectException: Connection refused (Connection refused)
Порт 5672
не открыт на хосте:
root@cs24srv1:/opt/r7-office-docker/configs/api# docker ps -a | grep "5672" faa4ea4082a8 downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2.0.2024.14752 "docker-entrypoint.s…" 2 days ago Up 5 seconds 4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 5672/tcp cs-rabbitmq ddfe0ba123af downloads.r7-office.ru:9011/r7office/ds/ds-rabbitmq:2024.3.2.622 "docker-entrypoint.s…" 2 days ago Up 2 days 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp ds-rabbitmq root@cs24srv1:/opt/r7-office-docker/configs/api# ss -tulnp | grep "5672"
Причина:
Некорректно конфигурируется шаблон для docker-compose файла.
Подтверждение:
Сегмент конфигурационного файла для cs-rabbitmq
из /opt/r7-office-docker/template.yaml
:
cs-rabbitmq: container_name: cs-rabbitmq environment: RABBITMQ_DEFAULT_PASS: guest RABBITMQ_DEFAULT_USER: guest RABBITMQ_NODE_PORT: '5672' r7_team_rabbit_pass: team hostname: cs-rabbit image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2.0.2024.14752 networks: - net-cs restart: unless-stopped
Решение:
Авторизуйтесь с повышением привилегий (su -
или sudo -i
) на сервере, где установлен Корпоративный сервер 2024.
Откройте конфигурационный файл:
nano /opt/r7-office-docker/template.yaml
Отредактируйте секцию, отвечающую за конфигурацию cs-rabbitmq
, добавьте секцию ports
.
cs-rabbitmq: container_name: cs-rabbitmq environment: RABBITMQ_DEFAULT_PASS: guest RABBITMQ_DEFAULT_USER: guest RABBITMQ_NODE_PORT: '5672' r7_team_rabbit_pass: team hostname: cs-rabbit image: downloads.r7-office.ru:9011/r7office/cs/cddisk-rabbitmq:2.0.2024.14752 networks: - net-cs restart: unless-stopped ports: - '5672:5672'
Сохраните файл.
Выполните повторную установку контейнеров вручную, используя команду docker-compose
и новый исправленный файл template.yaml
:
cd /opt/r7-office-docker ./runtime/docker-plugins/docker-compose -f template.yaml up --force-recreate -d -V --remove-orphans
2. Для OAuth2.0 КС24 использует файл /opt/r7-office-docker/configs/ssl/domain.pfx
Данный файл не формируется автоматически
Симптомы:
Ошибка авторизации: invalid_token_response
.
Пример ошибки:
Или:
Причина:
Отсутствует или некорректно сформирован файл /opt/r7-office/Api/domain.pfx
.
Подтверждение:
1. Проверьте файл на хостовой машине
Убедитесь, что файл domain.pfx
создан по инструкции и находится в нужной директории:
ls /opt/r7-office-docker/configs/ssl/domain.pfx
2. Проверьте наличие файла внутри контейнера
Выполните команду, чтобы убедиться, что файл доступен и внутри контейнера:
docker exec -it cs-api bash -c 'ls -l /opt/r7-office/Api/domain.pfx'
Если вы видите ошибку вида:
ls: cannot access '/opt/r7-office/Api/domain.pfx': No such file or directory
Это значит, что файл либо отсутствует, либо неправильно смонтирован.
Если вы не создавали свой собственный domain.pfx
, то система может использовать стандартный (дефолтный) файл, как на хосте, так и в контейнере.
⚠ Важно: Использование стандартного файла не рекомендуется. Замените его на собственный, правильно сформированный файл по инструкции.
Решение:
1. На хостовой машине перейдите в каталог с сертификатами и ключами:
cd /opt/r7-office-docker/configs/ssl/
2. Откройте ранее подготовленные файлы для работы SSL.
Это файл с сертификатом для работы HTTPS, который включает в себя сертификат для WEB ресурса и промежуточный сертификат, если такой выдает удостоверяющий центр, и файл с закрытым ключом.
В данном примере это fullchainvolav.crt
и volav.key
root@cs24srv1:/opt/r7-office-docker/configs/ssl# cat fullchainvolav.crt -----BEGIN CERTIFICATE----- MIIE9zCCA9+gAwIBAgISBnyA7N0Nw6cjJWYnJLCfjU9NMA0GCSqGSIb3DQEBCwUA MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD EwNSMTAwHhcNMjUwNTI3MTE1MzI1WhcNMjUwODI1MTE1MzI0WjATMREwDwYDVQQD Ewh2b2xhdi5ydTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANGqQfyt deDTtsVOdHFdSkGbFU1YB0/MDpCui6rHALCitmwpgomwxTElO9Q5yDeltRjWhGdN /WzVqrhpZnBiR+doSOMfhfob2HFEmbh88Ut9csnUC9uRYoyGBJ4KRZggqu6//XMr oJWzAjnSk0qaBaz0MWyZAVgNO4IU/moava78zj1lHwzn8EQKGBgV7ZY9Unb1e9T/ GVZyfkoI0jCFoBkeEx15VkDTkRRwPj71MaCj3SFcspunT2CHL/SYLkY0JziujC1F 0AqM/o9w1bY5HJ2By84N/vzBpmtRp82YMdY22QZCmuBOSlbvsbLx1+CNS86rz4uS +lhit4AnixB1pasCAwEAAaOCAiMwggIfMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU n2AiU+Y1GEhWNirLeoylL16g/74wHwYDVR0jBBgwFoAUu7zDR6XkvKnGw6RyDBCN ojXhyOgwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzAChhdodHRwOi8vcjEwLmku bGVuY3Iub3JnLzAfBgNVHREEGDAWggoqLnZvbGF2LnJ1ggh2b2xhdi5ydTATBgNV HSAEDDAKMAgGBmeBDAECATAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcjEwLmMu bGVuY3Iub3JnLzc4LmNybDCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2AN3cyjSV 1+EWBeeVMvrHn/g9HFDf2wA6FBJ2Ciysu8gqAAABlxHMrtkAAAQDAEcwRQIgY58W /rmlkimvcwZlwuL6ZhplmHJaiM1a9DzDRwUVlVcCIQD+sjp1vb90cNPlZFzpCT9u vxYwx6hOORIESS09LOotQwB1AA3h8jAr0w3BQGISCepVLvxHdHyx1+kw7w5CHrR+ Tqo0AAABlxHMtnIAAAQDAEYwRAIgDyIZvsBp/oOqWtaCCefX8ohDXsm5PBSHSdoA HXWpxRoCIE35s5m/PTxDapffr7mK3osgIx4gRwT1BMviv1A3q0AUMA0GCSqGSIb3 DQEBCwUAA4IBAQDIQ4gI6YpFPR20n+sUJdKyvvulN+deVnduQRFFSHh1fl4Y9YJB 4Db0guPs84lVLvnBgEKCNy2guZwC0MFED3i+uvNJ4hgWyiwyY0sBzO2xIUFthuZV heh+HtCOoDw+a23ZmVhFZuA1XriLiFnduZHCR4RoGqVPHaCoUMEc+WdQH8gMh+Tq 7ayoOkhsFoSEwipoo0leaeWiaG4WMKWkVfcIzyW1JXy6FE46F1L5sdcWGZvxUPJS AUralgdpivvNyb3NAFVn+8PZsNu3197AP36xJf1eZ+k4p0rcUQNMOEN/Nmg4c+5d tUMKEnU1bW5axgZ09kBcQDh/VtxICAfuw6G5 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFBTCCAu2gAwIBAgIQS6hSk/eaL6JzBkuoBI110DANBgkqhkiG9w0BAQsFADBP MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy Y2hhR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF bmNyeXB0MQwwCgYDVQQDEwNSMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQDPV+XmxFQS7bRH/sknWHZGUCiMHT6I3wWd1bUYKb3dtVq/+vbOo76vACFL YlpaPAEvxVgD9on/jhFD68G14BQHlo9vH9fnuoE5CXVlt8KvGFs3Jijno/QHK20a /6tYvJWuQP/py1fEtVt/eA0YYbwX51TGu0mRzW4Y0YCF7qZlNrx06rxQTOr8IfM4 FpOUurDTazgGzRYSespSdcitdrLCnF2YRVxvYXvGLe48E1KGAdlX5jgc3421H5KR mudKHMxFqHJV8LDmowfs/acbZp4/SItxhHFYyTr6717yW0QrPHTnj7JHwQdqzZq3 DZb3EoEmUVQK7GH29/Xi8orIlQ2NAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/ AgEAMB0GA1UdDgQWBBS7vMNHpeS8qcbDpHIMEI2iNeHI6DAfBgNVHSMEGDAWgBR5 tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B AQsFAAOCAgEAkrHnQTfreZ2B5s3iJeE6IOmQRJWjgVzPw139vaBw1bGWKCIL0vIo zwzn1OZDjCQiHcFCktEJr59L9MhwTyAWsVrdAfYf+B9haxQnsHKNY67u4s5Lzzfd u6PUzeetUK29v+PsPmI2cJkxp+iN3epi4hKu9ZzUPSwMqtCceb7qPVxEbpYxY1p9 1n5PJKBLBX9eb9LU6l8zSxPWV7bK3lG4XaMJgnT9x3ies7msFtpKK5bDtotij/l0 GaKeA97pb5uwD9KgWvaFXMIEt8jVTjLEvwRdvCn294GPDF08U8lAkIv7tghluaQh 1QnlE4SEN4LOECj8dsIGJXpGUk3aU3KkJz9icKy+aUgA+2cP21uh6NcDIS3XyfaZ QjmDQ993ChII8SXWupQZVBiIpcWO4RqZk3lr7Bz5MUCwzDIA359e57SSq5CCkY0N 4B6Vulk7LktfwrdGNVI5BsC9qqxSwSKgRJeZ9wygIaehbHFHFhcBaMDKpiZlBHyz rsnnlFXCb5s8HKn5LsUgGvB24L7sGNZP2CX7dhHov+YhD+jozLW2p9W4959Bz2Ei RmqDtmiXLnzqTpXbI+suyCsohKRg6Un0RC47+cpiVwHiXZAW+cn8eiNIjqbVgXLx KPpdzvvtTnOPlC7SQZSYmdunr3Bf9b77AiC/ZidstK36dRILKz7OA54=
2. Создайте файл domain.pfx
с пустым паролем. Для этого сформируйте и выполните команду вида:
openssl pkcs12 -export \ -out domain.pfx \ -inkey volav.key \ -in fullchainvolav.crt \ -password pass:
Для проверки можно воспользоваться командой:
openssl pkcs12 -info -in domain.pfx -passin pass:
Команда в своем результате может не отобразить закрытый ключ и выдать ошибку — это нормальное поведение.
3. Поместите сформированный файл domain.pfx
в контейнер.
Далее, перезапустите контейнер:
docker cp /opt/r7-office-docker/configs/ssl/domain.pfx cs-api:/opt/r7-office/Api/domain.pfx docker exec -it cs-api ls -l /opt/r7-office/Api/domain.pfx docker stop cs-api docker start cs-api
3. Отсутствие пользователя team
для RabbitMQ в контейнере cs-rabbit
. В веб интерфейсе отображается пользователь team
с паролем team
, но в самом RabbitMQ такого пользователя нет
Симптомы:
Ошибка подключения с кодом 403
.
Сообщение в логах Р7 Команды, либо в инсталляторе при настройке конфигурации с интеграцией к Корпоративному серверу 2024:
ERROR: Невозможно подключиться к серверу RabbitMQ. Подробнее: ERROR[0003] session: cannot (re-)dial: Exception (403) Reason: "username or password not allowed": "amqp://team:team@172.16.16.16:5672"
Причина:
В RabbitMQ не был создан пользователь team
.
Подтверждение:
docker exec -it cs-rabbitmq bash root@cs-rabbit:/# rabbitmqctl list_users Listing users ... user tags guest [administrator]
Решение:
Создание пользователя вручную внутри контейнера:
rabbitmqctl add_user team team rabbitmqctl set_permissions -p / team ".*" ".*" ".*"
4. Очереди не существуют (ошибка 404
)
Симптомы:
Приложение не может подписаться на очередь:
ERROR: Невозможно подключиться к серверу RabbitMQ. Подробнее: ERROR[0000] error subscribing messages: subscribe failed: Exception (404) Reason: "NOT_FOUND - no queue 'Converted.Customer.OtherSystem' in vhost '/'"
Причина:
Очередь Converted.Customer.OtherSystem
отсутствовала в RabbitMQ
.
Подтверждение:
Очереди были созданы автоматически позже (возможно, самим приложением после получения сообщений):
------ message received on 2025-05-30T17:36:28+03:00 ------ exchange.......: routingkey.....: Converted.Customer.OtherSystem ... RabbitMQ queue Converted.Customer.OtherSystem exists
Решение:
Выполните перезагрузку Корпоративного сервера 2024, далее выполните синхронизацию нажатием кнопки Синхронизировать
.
После успешного старта КС2024, выполните на сервере Управления Р7 Команды рестарт службы addressbook.service
:
systemctl restart addressbook.service