我按照此处的说明设置了全新的 nextcloud 安装:https://hub.docker.com/_/nextcloud/,使用“使用 docker-compose 运行此映像”>“基本版本 - FPM”变体。
这导致三个 Docker 容器正在运行:
IMAGE COMMAND CREATED STATUS PORTS
nextcloud:fpm "/entrypoint.sh php-…" 22 hours ago Up 22 hours 9000/tcp
mariadb "docker-entrypoint.s…" 22 hours ago Up 22 hours 3306/tcp
nginx "nginx -g 'daemon of…" 22 hours ago Up 9 minutes 0.0.0.0:8080->80/tcp
到目前为止一切都很好。
但是有一个现有的 apache 安装,需要用于传入的 Web 流量。在新的 vhost 中,我设置了以下代理指令,以将适当的请求重定向到 nginx docker:
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
RewriteRule ^/ - [QSA,L]
现在,安装似乎可以通过 Web 界面顺利进行。
但是 a) 有警告说反向代理标头配置不正确。我不确定这是否是一个严重的问题,因为它说如果有值得信赖的代理,那就没问题,但我不确定(消息是德语的)。
b) 服务器 URL 不正确。移动设备似乎需要这个才能连接。它报告的是内部 nginx URL,http://127.0.0.1:8080/
而不是公共名称https://cloud.somedomain.com
。
这是合乎逻辑的,因为 nextcloud/docker 进程对 apache 和外部名称一无所知,但我不知道在哪里指定它。
我试过这个https://github.com/nextcloud/docker/pull/527#issuecomment-434492082,但没有效果。
我读过有关环境变量的信息DEFAULT_HOST
,VIRTUAL_HOST
这里https://github.com/jwilder/nginx-proxy和NEXTCLOUD_TRUSTED_DOMAINS
这里https://hub.docker.com/_/nextcloud/,但我不确定如何应用它们以及这是否是正确的方法。
答案1
在我发布这个问题之后,我就找到了解决方案......-.-
需要在 nextcloud docker 中的文件中添加以下参数/var/www/html/config/config.php
,以设置正确的 url:
'overwritehost' => 'cloud.somedomain.com',
'overwriteprotocol' => 'https',
根据描述,这可能能够被自动检测到。但显然,它对我来说不起作用。
现在,服务器 URL 在管理 Web UI 中正确报告,并且移动设备登录正常!