Collabora Online

Collabora Online 可以与 Seafile 集成,让用户直接在浏览器中预览、编辑 Office 文档。本文适用于 Seafile 14 和 Seafile 13。以下以 Seafile Docker 单节点部署为例,说明如何在同一台主机上部署 Collabora Online;单独部署的方法见后文。
部署前准备
  • Seafile 服务已正常运行,服务器有足够的 CPU 和内存运行额外的 Collabora 容器。
  • Seafile 必须通过 HTTPS 对外提供服务,并配置有效的 TLS 证书。
  • 以下以 /opt/seafile 为 Docker Compose 工作目录,以 seafile.example.com 为域名。请根据实际环境调整。
  • 集成部署时,Collabora 通过 Seafile 的 Caddy 反向代理提供服务。应确认外部客户端能访问配置的 Collabora 端口(默认 6232 );容器内 Collabora 服务监听 9980 端口,不需要直接对公网开放该端口。
如果使用其他反向代理,请参阅 使用其他反向代理 。
在 Docker 中部署 Collabora Online
1. 下载 Compose 文件
进入 Seafile 的 Docker Compose 目录:
            
                
                
cd /opt/seafile
Seafile 14:
            
                
                
wget https://manual.seafile.com/14.0/repo/docker/collabora.yml
Seafile 13:
            
                
                
wget https://manual.seafile.com/13.0/repo/docker/collabora.yml
如已有 collabora.yml ,请先备份,再根据所用版本更新。
2. 修改 .env
确保 Seafile 的服务协议为 HTTPS:
            
                
                
SEAFILE_SERVER_PROTOCOL=https
在现有的 COMPOSE_FILE 列表中追加 collabora.yml , 不要移除其他正在使用的组件文件 。例如:
            
                
                
COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,collabora.yml'
然后配置 Collabora:
            
                
                
COLLABORA_IMAGE=collabora/code:24.04.5.1.1
COLLABORA_PORT=6232
COLLABORA_USERNAME=collabora_admin
COLLABORA_PASSWORD=请替换为强密码
COLLABORA_ENABLE_ADMIN_CONSOLE=true
COLLABORA_REMOTE_FONT=
COLLABORA_ENABLE_FILE_LOGGING=false
各项配置的作用如下:
变量名
说明
COLLABORA_IMAGE
Collabora Online 容器镜像;示例采用官方部署文件中的镜像版本。
COLLABORA_PORT
Collabora 的外部访问端口,默认 6232 。
COLLABORA_USERNAME
Collabora 管理控制台用户名。
COLLABORA_PASSWORD
Collabora 管理控制台密码,请设置强密码。
COLLABORA_ENABLE_ADMIN_CONSOLE
是否启用管理控制台,示例为 true 。
COLLABORA_REMOTE_FONT
远程字体配置地址;不需要时留空。
COLLABORA_ENABLE_FILE_LOGGING
是否将日志保存到文件,默认 false ,日志输出至容器标准输出。
注意: .env 中的用户名和密码属于敏感信息,应限制配置文件的访问权限。默认的官方 collabora.yml 通过 Caddy 将外部 6232 端口转发至容器内的 9980 端口;不要将外部端口改成 9980 后直接向公网暴露容器服务。
3. 配置 Seafile
编辑 Seafile 的 seahub_settings.py 。默认 Docker 数据目录下,该文件位于:
            
                
                
/opt/seafile-data/seafile/conf/seahub_settings.py
添加或修改以下配置:
            
                
                
# 选择 Collabora Online 作为在线 Office 服务
OFFICE_SERVER_TYPE = 'CollaboraOffice'
ENABLE_OFFICE_WEB_APP = True
OFFICE_WEB_APP_BASE_URL = 'http://collabora:9980/hosting/discovery'
# WOPI 访问令牌的有效期,单位为秒
WOPI_ACCESS_TOKEN_EXPIRATION = 30 * 60
# 可在线预览的文件格式
OFFICE_WEB_APP_FILE_EXTENSION = (
'odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx',
'ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx'
)
# 启用在线编辑
ENABLE_OFFICE_WEB_APP_EDIT = True
# 可在线编辑的文件格式
OFFICE_WEB_APP_EDIT_FILE_EXTENSION = (
'odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx',
'ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx'
)
OFFICE_WEB_APP_BASE_URL 使用的是 Docker 网络内的 Collabora 地址,由 Seafile 服务访问。用户浏览器访问 Collabora 时,则通过反向代理访问公开的 HTTPS 地址。不要仅因 Seafile 使用 HTTPS,就把这里的内部地址直接改成 https://collabora:9980 。
WOPI_ACCESS_TOKEN_EXPIRATION 控制文件访问令牌的有效时间。可预览或编辑的格式应与实际使用的 Collabora 版本支持范围一致。
4. 启动服务
在 /opt/seafile 目录下检查配置并启动:
            
                
                
docker compose config --quiet
docker compose up -d
如果原有的 Seafile 容器未应用 seahub_settings.py 的修改,可重启 Seafile 服务:
            
                
                
docker compose restart seafile
查看运行状态:
            
                
                
docker compose ps
docker logs -f seafile-collabora
启动成功后,在 Seafile Web 界面中点击一个受支持的 Office 文件,便可以使用 Collabora Online 预览或编辑。
在另一台服务器上部署 Collabora Online
如需将 Collabora 部署在独立服务器,请按照 Collabora Online 官方部署文档 安装,而不是直接使用本指南中的同机部署 collabora.yml 。
独立部署时,需要满足以下条件:
  • Collabora 使用 HTTPS ,通过标准 443 端口对外提供服务。
  • 反向代理将公开访问请求转发到 Collabora 的 9980 端口。
  • Collabora 服务器与 Seafile 服务器之间的网络访问、证书信任及 WOPI 请求应正常。
部署成功后,在 Seafile 的 seahub_settings.py 中指定实际的 Collabora 地址:
            
                
                
OFFICE_SERVER_TYPE = 'CollaboraOffice'
ENABLE_OFFICE_WEB_APP = True
OFFICE_WEB_APP_BASE_URL = 'https://collabora.example.com/hosting/discovery'
WOPI_ACCESS_TOKEN_EXPIRATION = 30 * 60
ENABLE_OFFICE_WEB_APP_EDIT = True
将 collabora.example.com 替换为实际域名,然后重启 Seafile 服务。如果需要限制预览、编辑格式,还应保留前面对应的文件扩展名配置。
工作原理与故障排查
在线预览或编辑 Office 文件时,请求流程如下:
  1. Seahub → 浏览器: Seahub 返回包含 iframe 的文件预览页面。
  2. 浏览器 → Collabora Online: 浏览器通过 iframe 加载 Collabora 的在线预览页面。
  3. Collabora Online → Seahub: Collabora 向 Seahub 请求相应文件内容。
  4. Collabora Online → 浏览器: Collabora 将预览或编辑页面呈现给浏览器。
如果无法打开 Office 文件,可依次检查:
  • HTTPS 和端口: 浏览器是否可以访问公开的 Collabora HTTPS 地址及相应端口;证书是否有效。
  • 容器状态: 运行 docker compose ps ,确认 Seafile、Caddy 和 Collabora 均正常运行。
  • 内部连接: 检查 OFFICE_WEB_APP_BASE_URL 是否正确,Seafile 与 Collabora 是否位于可互通的 Docker 网络。
  • 反向代理: 如果使用自定义 Nginx 或其他代理,检查 Collabora 的代理规则、访问地址和 TLS 配置。
  • 文件访问: 如果能打开页面但内容加载失败,检查 Collabora 回连 Seafile 的 WOPI 请求及对应容器日志。
Collabora 的更多故障排查方法请参阅 Collabora Online 官方故障排查指南 。
日志配置
查看容器日志
Collabora 默认将日志输出到标准输出。执行以下命令查看:
            
                
                
docker logs -f seafile-collabora
将日志保存到文件
如需保存文件日志,请修改 .env :
            
                
                
COLLABORA_ENABLE_FILE_LOGGING=true
COLLABORA_PATH=/opt/collabora
在 collabora.yml 的 services.collabora 下启用原本注释的 volumes 挂载:
            
                
                
services:
collabora:
# 保留已有的 image、environment、networks 等配置
volumes:
- "${COLLABORA_PATH:-/opt/collabora}/logs:/opt/cool/logs/"
以上仅展示需要增加或启用的字段, 不要使用该片段替换整个 collabora.yml 。
创建日志目录,并确保容器有写入权限:
            
                
                
mkdir -p /opt/collabora/logs
chmod 777 /opt/collabora/logs
chmod 777 是便于确认写入权限的方式,会允许本机其他用户写入该目录。生产环境应根据容器实际运行用户收紧目录权限。
之后重新创建相关服务,使挂载及环境变量生效:
            
                
                
cd /opt/seafile
docker compose config --quiet
docker compose up -d --force-recreate collabora
日志文件将保存到宿主机对应的 logs 目录中。