CollaboraOnline

从 Seafile 专业版 6.0.0 开始,可以选择集成 CollaboraOnline 到 Seafile 系统中以实现 office 文档的在线预览以及在线编辑功能。
安装 CollaboraOnline
本指南中的步骤仅涵盖在与你的 Seafile Docker 容器相同的 Docker 主机上,以另一个容器的形式安装 Collabora。请确保主机有足够的 CPU 核心和内存。 如果你想在另一台主机上安装,请参考 Collabora 官方文档。然后按照此处说明修改 seahub_settings.py 以启用在线 Office 功能。 注意:要将 LibreOffice 与 Seafile 集成,必须在 Seafile 服务器中启用 HTTPS。
docker 部署
修改 .env 文件:
            
                
                
SEAFILE_SERVER_PROTOCOL=https
下载 collabora.yml
            
                
                
# 13.0
wget https://manual.seafile.com/13.0/repo/docker/collabora.yml

# 12.0
wget https://manual.seafile.com/12.0/repo/docker/collabora.yml
collabora.yml 添加到 COMPOSE_FILE 列表中(例如: COMPOSE_FILE='...,collabora.yml' ),并在 .env 中增加相关配置项:
            
                
                
COLLABORA_IMAGE=collabora/code:24.04.5.1.1 # LibreOffice 镜像版本
COLLABORA_PORT=6232 # 暴露端口
COLLABORA_USERNAME=<你的 LibreOffice 管理员用户名>
COLLABORA_PASSWORD=<你的 LibreOffice 管理员密码>
COLLABORA_ENABLE_ADMIN_CONSOLE=true # 是否启用管理控制台
COLLABORA_REMOTE_FONT= # 远程字体 URL
COLLABORA_ENABLE_FILE_LOGGING=false # 是否使用文件日志,参见 FAQ
配置 Seafile
seahub_settings.py 中添加以下配置项:
            
                
                
OFFICE_SERVER_TYPE = 'CollaboraOffice'
ENABLE_OFFICE_WEB_APP = True
OFFICE_WEB_APP_BASE_URL = 'http://collabora:9980/hosting/discovery'

# Expiration of WOPI access token
# WOPI access token is a string used by Seafile to determine the file's
# identity and permissions when use LibreOffice Online view it online
# And for security reason, this token should expire after a set time period
WOPI_ACCESS_TOKEN_EXPIRATION = 30 * 60 # seconds

# List of file formats that you want to view through LibreOffice Online
# You can change this value according to your preferences
# And of course you should make sure your LibreOffice Online supports to preview
# the files with the specified extensions
OFFICE_WEB_APP_FILE_EXTENSION = ('odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx','ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx')

# Enable edit files through LibreOffice Online
ENABLE_OFFICE_WEB_APP_EDIT = True

# types of files should be editable through LibreOffice Online
OFFICE_WEB_APP_EDIT_FILE_EXTENSION = ('odp', 'ods', 'odt', 'xls', 'xlsb', 'xlsm', 'xlsx','ppsx', 'ppt', 'pptm', 'pptx', 'doc', 'docm', 'docx')
然后重启 Seafile。
在 Seafile Web 界面上点击一个office文件,你将会看到如下页面:
故障排查
理解集成的工作流程有助于调试问题。当用户访问一个文件页面时:
  1. (seahub → 浏览器) Seahub 生成包含 iframe 的页面并发送到浏览器
  2. (浏览器 → CollaboraOnline) 浏览器通过 iframe 尝试加载 CollaboraOnline 的文件预览页面
  3. (CollaboraOnline → seahub) CollaboraOnline 接收请求并向 Seahub 请求文件内容
  4. (CollaboraOnline → 浏览器) CollaboraOnline 将文件预览页面返回给浏览器
常见问题
关于日志
CollaboraOnline 容器会将日志输出到 stdout,你可以使用以下命令查看:
            
                
                
docker logs seafile-collabora
如果希望将日志保存为文件(如 .log 文件),可在 .env 中增加如下配置,并在 collabora.yml 中移除注释:
            
                
                
# .env
COLLABORA_ENABLE_FILE_LOGGING=True
# 日志路径
COLLABORA_PATH=/opt/collabora
            
                
                
# collabora.yml
services:
     collabora:
         ...
         volumes:
             - "${COLLABORA_PATH:-/opt/collabora}/logs:/opt/cool/logs/" # chmod 777 needed
创建日志目录并重启 Seafile 服务器:
            
                
                
mkdir -p /opt/collabora
chmod 777 /opt/collabora
docker compose down
docker compose up -d
CollaboraOnline 服务器在另一台主机上
如果 CollaboraOnline 部署在另一台主机上,只需像同机部署一样修改 seahub_settings.py ,唯一的区别是需要将 OFFICE_WEB_APP_BASE_URL 改为你的 CollaboraOnline 主机地址,例如:
            
                
                
https://collabora-online.seafile.com/hosting/discovery