如何使用 docker-compose 为 Nextcloud 运行 Collabora office

创建此 docker-compose.yml,例如在 /opt/collabora-mydomain 中:

docker-compose-collabora.yml
services:
  code:
    image: collabora/code:latest
    restart: always
    environment:
      - password=${COLLABORA_PASSWORD}
      - username=${COLLABORA_USERNAME}
      - aliasgroup1=https://collabora.mydomain.com:443
      - aliasgroup2=https://nextcloud.myseconddomain.com:443
      - server_name=collabora.mydomain.com
      - extra_params=--o:ssl.enable=true
    ports:
      - 9980:9980
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.collabora.rule=Host(`collabora.mydomain.com`)"
      - "traefik.http.routers.collabora.entrypoints=websecure"
      - "traefik.http.routers.collabora.tls.certresolver=cloudflare"
      - "traefik.http.routers.collabora.tls.domains[0].main=mydomain.com"
      - "traefik.http.routers.collabora.tls.domains[0].sans=*.mydomain.com"
      - "traefik.http.services.collabora.loadbalancer.server.port=9980"
      - "traefik.http.services.collabora.loadbalancer.server.scheme=https"

如果需要,根据需要添加更多 aliasgroup。

现在创建此 .env 配置。你需要更改密码和域名!

collabora.env
COLLABORA_USERNAME=admin
COLLABORA_PASSWORD=veecheit0Phophiesh1fahPah0Wue3

现在你可以使用我们来自在 10 秒内为你的 docker-compose 项目创建 systemd 服务的脚本创建 systemd 服务以自动启动。

从你的目录内运行(例如 /opt/collabora-mydomain

create_docker_compose_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

Traefik 配置

所有相关 traefik 配置已在 docker-compose.yml 中。你需要运行 Traefik 并配置为使用 cloudflare certresolver。

有关我们使用的 Traefik 配置,请参见此 TechOverflow 文章

nginx 配置。

注意:我通常推荐使用 Traefik。

现在你需要配置反向代理指向端口 9980。以下是示例 nginx 配置:

collabora_nginx.conf
server {
    server_name collabora.mydomain.com;

    access_log /var/log/nginx/collabora.mydomain.com.access_log;
    error_log /var/log/nginx/collabora.mydomain.com.error_log info;

    location / {
        proxy_pass https://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_read_timeout 3600s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        add_header X-Frontend-Host $host;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    }

    listen [::]:80; # managed by Certbot
}

现在打开浏览器并打开 collabora.mydomain.com。如果 collabora 正确运行,你应该看到:

collabora_ok_output.txt
OK

在 Nextcloud 中,转到 https://nextcloud.mydomain.com/settings/admin/richdocuments 并将**Collabora Online 服务器的 URL(和端口)**设置为:

collabora_nextcloud_url_example.txt
https://admin:veecheit0Phophiesh1fahPah0Wue3@collabora.mydomain.com

确保使用 .env 中的自定义密码和你的自定义域名!

点击保存,你应该看到 Collabora Online server is reachable

显示 Collabora Online server is reachable 的 Nextcloud 设置


Check out similar posts by category: Container, Docker, Nextcloud