Проблема Collabora (docker) и NextCloud (snap) за прокси на одном компьютере

Я решил опубликовать свою ситуацию после многих дней устранения неполадок. Недавно я установил NextCloud как оснастку на Ubuntu 18.04, и все работало нормально. Я сделал переадресацию портов и использовал Let’s Encrypt (из команд snap) для создания сертификатов для NC.

Затем я решил установить сервер Collabora на эту же машину, чтобы использовать офисный функционал. Я использовал официальные руководства Collaboration для установки, упомянутые здесь. Однако в этом руководстве предполагается, что NC устанавливается вручную (не с помощью оснастки). Согласно руководствам, мне пришлось установить Apache (или любой другой прокси/веб-сервер), чтобы проксировать трафик на NC или Collabora.

Я думаю, что проблема с моей конфигурацией прокси или что-то не так с SSL-сертификатами. Когда запущены и Apache, и snap, я могу перейти на страницу Apache, и Collabora должна быть запущена, но не могу перейти на страницу NC.

Я могу перейти по ссылке ниже (порт 443) и перейти на страницу (имеется в виду, что Collabora отвечает?)

https://collabora.domain.com/loleaflet/dist/admin/admin.html

Но при доступе к домену NC браузер говорит «Не удалось подключиться: потенциальная проблема безопасности» и жалуется, что сертификаты не для того домена NC, который я пытаюсь подключить, а сертификат для домена Collabora. Если я остановлю Apache и позволю запустить Snap, я смогу получить доступ к домену NC без проблем (за исключением того, что мне нужно снова установить порты на 443 и 80! Это проблематично?) Мой файл конфигурации прокси-сервера Apache (находится в /etc/apache2 /сайты-доступны/) выглядит следующим образом:

<VirtualHost *:444>

ServerName nextcloud.domain.com:444
ProxyPreserveHost On
ProxyPass        / https://192.168.1.50/
ProxyPassReverse / https://192.168.1.50/

SSLProxyEngine on
SSLCertificateFile /etc/letsencrypt/live/nextcloud.domain.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/nextcloud.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.domain.com/privkey.pem

</VirtualHost>

<VirtualHost *:443>
ServerName collabora.domain.com:443

# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/collabora.domain.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/collabora.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/collabora.domain.com/privkey.pem
SSLProtocol             all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-$
SSLHonorCipherOrder     on

# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode

# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

# keep the host
ProxyPreserveHost On

# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of LibreOffice Online
ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet

# WOPI discovery URL
ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery$
ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

# Admin Console websocket
ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /lool https://127.0.0.1:9980/lool
ProxyPassReverse    /lool https://127.0.0.1:9980/lool

# Endpoint with information about availability of various features
ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
</VirtualHost>

Честно говоря, первый раз настраиваю прокси сервер, не знаю как он работает. Большая часть моего файла конфигурации скопирована, и я думаю, что это проблема :) Если кто-то может взглянуть на него и направить меня в правильном направлении, это сэкономит мне много головной боли и времени.


person mohi    schedule 11.12.2019    source источник


Ответы (1)


Я прошел через ту же боль в течение такого же количества времени и, в конце концов, нашел простое решение.

Онлайн-инструкции для docker здесь верны, за исключением того, что в них не включен прокси-сервер для веб-сокетов.

a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod ssl

Единственное другое изменение, которое мне пришлось сделать, это добавить --cap-add MKNOD к началу докера.

В Nextcloud мне нужно было только добавить https://collab.example.com в конфигурацию адреса сервера WAPI после создание сертификатов LetsEncrypt для моего домена (очевидно, что example.com не является моим настоящим доменом).

person Jason M    schedule 07.10.2020