Назад | Перейти на главную страницу

Nextcloud Snap с Collabora не может установить сертификат с Let's Encrypt

На сервере Ubuntu 16.04 у меня есть установка Nextcloud (SNAP) и Collabora для управления документами (Docker). Его внутренний IP-адрес - 192.1368.1.30.

NextCloud-Snap слушать на 443 Collabora-Docker слушать на 9980

На этом сервере также есть Apache2 со следующей конфигурацией, чтобы приложение Collabora могло взаимодействовать с NextCloud:

<VirtualHost *:80>
    ServerName docs.mydomain.com
    DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:9081>
    ServerName docs.mydomain.com

    # Encoded slashes need to be allowed
    AllowEncodedSlashes NoDecode

    # 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 retry=0
    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

    # ServerAlias docs.mydomain.com
    SSLProxyEngine on
    SSLProxyVerify None
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off

    # Let's Encrypt Certificate
    SSLCertificateFile /etc/letsencrypt/live/docs.mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/docs.mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf    
</VirtualHost>

Раньше перед этой машиной был обратный прокси-сервер для управления всеми перенаправлениями.

Файл конфигурации для Apache2 на прокси-сервере был:

<VirtualHost *:80>
    ServerName docs.mydomain.com
    ProxyPreserveHost On
    ProxyPass        / http://192.168.1.30:80/
    ProxyPassReverse / http://192.168.1.30:80/
</VirtualHost>

<VirtualHost *:443>
    ServerName cloud.mydomain.com
    ProxyPreserveHost On
    ProxyPass        / https://192.168.1.30/
    ProxyPassReverse / https://192.168.1.30/
    SSLProxyEngine on
    SSLCertificateFile /etc/letsencrypt/live/cloud.mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cloud.mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLProxyVerify none 
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
</VirtualHost>

<VirtualHost *:443>
    ServerName docs.mydomain.com:443

    # Encoded slashes need to be allowed
    AllowEncodedSlashes NoDecode

    # keep the host
    ProxyPreserveHost On

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

    # WOPI discovery URL
    ProxyPass           /hosting/discovery 
    https://192.168.1.30:9081/hosting/discovery retry=0
    ProxyPassReverse    /hosting/discovery 
    https://192.168.1.30:9081/hosting/discovery

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

    # Admin Console websocket
    ProxyPass   /lool/adminws wss://192.168.1.30:9081/lool/adminws

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

    # ServerAlias docs.brains.engineering
    SSLProxyEngine on
    SSLProxyVerify None
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off

    # Let's Encrypt Certificate
    SSLCertificateFile /etc/letsencrypt/live/docs.mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/docs.mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    LogLevel debug
    ErrorLog ${APACHE_LOG_DIR}/error.log

</VirtualHost>

Теперь прокси-сервер был удален, и я хочу открыть доступ к серверу Ubuntu напрямую для внешних пользователей. Если я настрою NAT в маршрутизаторе на направление трафика 80 и 443 на 192.168.1.30, все будет работать нормально, но сертификат SSL недействителен.

Я попытался (пере) установить в соответствии с инструкциями для NextCloud Snap с помощью

sudo nextcloud.enable-https lets-encrypt

Но я получаю 404, так как Let's Encrypt не может загрузить проверочный файл на порт 80.

Как я могу настроить новую конфигурацию без обратного прокси, но установить сертификат SSL для NextCloud Snap?