Jim*_*mix 3 php document collaborative-editing docker nextcloud
我有这个错误消息:
无法加载 Collabora Online - 请稍后重试
当我尝试打开文件时,位于自托管 nextcloud 网站的右上角
欢迎来到 Nextcloud Hub.docx
在 Nextcloud 中,它作为 Docker 容器运行。
欢迎使用 Nextcloud Hub.docx位于“文件”>“文档”中,作为示例文件。
我使用的是nextcloud:19-apache的官方映像
,我是这样启动的:
#!/bin/sh
set -e;
set -f;
docker run -d \
--name nextcloud \
-p 8080:80 \
-v /tmp/nextcloud/var/www/html:/var/www/html \
-v /tmp/nextcloud/var/lib/mysql:/var/lib/mysql \
-v /tmp/nextcloud/var/lib/postgresql/data:/var/lib/postgresql/data \
nextcloud:19-apache
sleep 3;
firefox "http://localhost:8080"
exit 0;
Run Code Online (Sandbox Code Playgroud)
我这样检查日志:
docker logs nextcloud
Run Code Online (Sandbox Code Playgroud)
除了这一条目之外,没有任何错误/警告:
AH00558:apache2:无法可靠地确定服务器的完全限定域名(使用 172.17.0.2)。全局设置“ServerName”指令以抑制此消息
单击 nextcloud web 设置 > 应用程序显示 Collabora 所需的两个应用程序均已安装:
然而,没有它们的状态是否正常运行。
所有正在运行的容器的状态:
NETWORK ID NAME DRIVER SCOPE
88efc7e2489f bridge bridge local
b75e841984e3 host host local
efff0416acdb none null local
-------------------------------------------------------------
CONTAINER ID IMAGE CREATED STATUS IP PORTS NAMES
58c7069e0a4d nextcloud:19-apache 2020-09-21T13:59:53 running bridge:172.17.0.2 map[80/tcp:[map[HostIp:0.0.0.0 HostPort:8080]]] /nextcloud
Run Code Online (Sandbox Code Playgroud)
如何使 Collabora 工作并打开该文档 docx?(打开*.pdf或*.md文件时没有问题,编辑它们并保存修订历史记录)
所以我看了一下这个。我一直只通过 Docker-Compose、Traefik 或 Nginx 和 Colabora Server 作为额外服务器来使用 Nextcloud。
为了让 Collabora 工作,Apache 服务器必须在端口 9980 上侦听。为此,您必须进行 Apache 配置修改 (ProxyPass)。请参阅文档链接中的第 2 部分
我不推荐本地 Collabora Server,因为它经常崩溃。但这不是重点。
我根本不会这样做,而是使用 docker-compose 来组装服务。
我已经通过 Traefik 代理实现了 Nextcloud 与 Collabora 的本地安装。您不必担心网络服务器重定向到正确的端口,因为 Traefik 会处理这个问题。
Docker-Compose 示例
如果你有问题,就问吧!
在我的示例中,我使用解析为 Docker IP 的本地域。只需编辑 Hosts 文件即可。但你肯定知道...
192.168.x.x collabora.local.com
192.168.x.x nextcloud.local.com
如果尚未安装 Docker-Compose,请安装它。
创建网络“web”:
$ docker network create web
创建 Docker-Compose 文件:
$ touch docker-compose.yml
添加:
version: "3.3"
volumes:
db:
nextcloud:
services:
traefik:
image: "traefik:v2.3"
container_name: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/etc/localtime:/etc/localtime:ro"
networks:
- web
- internal
nextcloud:
image: "nextcloud:19-apache"
container_name: "nextcloud-app"
restart: unless-stopped
depends_on:
- traefik
- db
volumes:
- "nextcloud:/var/www/html"
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud-app.entrypoints=web"
- "traefik.http.routers.nextcloud-app.rule=Host(`nextcloud.local.com`)"
networks:
- web
- internal
collabora:
image: "collabora/code"
container_name: collabora-app
restart: unless-stopped
expose:
- "9980"
environment:
- domain=nextcloud.local.com
- extra_params=--o:ssl.enable=false
- username=admin
- password=admin
cap_add:
- MKNOD
labels:
- "traefik.enable=true"
- "traefik.http.routers.collabora.entrypoints=web"
- "traefik.http.routers.collabora.rule=Host(`collabora.local.com`)"
- "traefik.http.services.collabora.loadbalancer.server.port=9980"
networks:
- web
db:
image: mariadb:latest
container_name: nextcloud-db
restart: always
environment:
- MYSQL_HOSTNAME=maria_db
- MYSQL_ROOT_PASSWORD=Secure_Root_Password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=Secure_Password
ports:
- "3306:3306"
volumes:
- "db:/var/lib/mysql"
networks:
- internal
labels:
- "traefik.enable=false"
networks:
web:
external: true
internal:
external: false
Run Code Online (Sandbox Code Playgroud)
开始:docker-compose up
以守护进程开始:docker-compose up -d
停止:docker-compose down