使用正確的 WOPI URL 將 Seafile 和 Collabora 連接起來

若要將 Seafile 與 Collabora Online 連接,請在 Seafile 上啟用 HTTPS,部署 Collabora,並將 Seafile 的 Office 整合指向 Collabora 的發現端點。如果這兩個服務運行在同一個 Docker 網路上,Seafile 目前的整合指南使用內部 URL http://collabora:9980/hosting/discovery;如果 Collabora 運行在單獨的主機上,則改用其公共 HTTPS URL。

目前的 Seafile 管理手冊詳細介紹了collabora.ymlCompose 整合及其設定seahub_settings.py。特定的部署檔案可能因 Seafile 版本而異,因此在參考這些範例時,請使用與您已安裝版本相符的手冊。

開始之前

  • 請使用具有有效 TLS 憑證的 HTTPS Seafile 位址。 Seafile 將 HTTPS 列為 Collabora 整合的必要條件。
  • 了解 Collabora 是會在同一 Docker 主機上作為另一個容器運行,還是作為單獨託管的服務運行。
  • 擁有對 Seafile 部署目錄的管理員權限seahub_settings.py。
  • 選擇允許預覽和編輯的文件格式。 Seafile 設定控制這些副檔名清單。

Seafile 和 Collabora 使用 WOPI 進行通訊。 Seafile 提供文件存取訊息,Collabora 則向 Seafile 請求文件。發現 URL 會告知 Seafile 要使用哪個 Collabora 服務以及該服務提供的編輯器功能。

1. 確認 Seafile 上的 HTTPS 連接

在瀏覽器中開啟 Seafile,確認其正常位址以 `/example.com` 開頭https://,且憑證有效。對於 Seafile 的 Docker 部署,其目前手冊顯示需要SEAFILE_SERVER_PROTOCOL=https在設定.env檔中進行設置,然後透過配置的反向代理完成 HTTPS 設定。請勿使用公共的純 HTTP Seafile 端點。

# In the Seafile deployment .env file
SEAFILE_SERVER_PROTOCOL=https

請將實際的憑證和私鑰置於您的 TLS 代理程式或憑證管理員的控制之下。此設定本身不會頒發憑證或設定反向代理;在啟用線上辦公室編輯之前,請完成部署的 HTTPS 步驟。

2. 將 Collabora 新增至 Seafile Docker 部署中

對於文件中記錄的同主機 Docker 配置,請使用 Seafile 提供的 Collabora Compose 文件,而不是自行建構無關的容器定義。在 Seafile 部署目錄中,下載與手冊版本相符的文件,並將其新增collabora.yml至現有COMPOSE_FILE清單.env。請保留安裝中已使用的 Compose 檔案。

# Example for a Seafile 14.0 deployment
wget https://manual.seafile.com/14.0/repo/docker/collabora.yml

設定 Seafile 文件中記錄的 Collabora 變數.env:

COLLABORA_IMAGE=collabora/code
COLLABORA_PORT=6232
COLLABORA_USERNAME=your_admin_username
COLLABORA_PASSWORD=use_a_long_unique_secret
COLLABORA_ENABLE_ADMIN_CONSOLE=true
COLLABORA_ENABLE_FILE_LOGGING=false

請使用唯一且強的密碼,並限制對該.env文件(包含憑證)的存取。範例連接埠是 Seafile 整合配置中暴露的連接埠;請勿假定它是反向代理上的公共連接埠。請按照collabora.yml與您的版本相符的檔案和代理配置進行操作。

將服務新增至部署後,請使用常規的 Seafile 流程啟動或更新 Compose 堆疊。除非您的設計明確要求且已確保端點安全,否則請避免將 Collabora 的內部連接埠直接發佈到網際網路。

3. 將 Seafile 指向 Collabora 的發現 URL

編輯目前seahub_settings.py文件並新增整合設定。對於同一台主機上的 Compose 設置,Seafile 手冊使用服務名稱和內部 Collabora 連接埠:

OFFICE_SERVER_TYPE = 'CollaboraOffice'
ENABLE_OFFICE_WEB_APP = True
OFFICE_WEB_APP_BASE_URL = 'http://collabora:9980/hosting/discovery'
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'
)

此處的URLhttp://是 Seafile 官方文件中 Docker 網路內部的服務間通訊位址。瀏覽器導向的 Seafile 網站仍需使用 HTTPS。請勿將此內部位址複製到獨立主機部署。

如果 Collabora 運行在不同的主機上,請配置 Collabora 透過 HTTPS 連接到標準公共端口,並使用反向代理將請求轉送到 Collabora 的監聽端口。將基本 URL 設定為您的實際公用主機名,例如:

OFFICE_WEB_APP_BASE_URL = 'https://office.example.com/hosting/discovery'

確保 URL 中的主機名稱能夠解析,並且需要開啟文件的用戶端能夠提供有效的憑證。此外,還需要配置 Collabora 的 WOPI 允許列表,使其允許 Seafile 伺服器主機存取。 Collabora 的官方 Docker 文件介紹了aliasgroup用於聲明允許的 WOPI 主機的環境變數;請確保其與 Seafile 使用的主機和協定完全匹配,並避免在生產伺服器上使用廣泛的通配符存取權。

4. 重新啟動並測試連接

重新啟動 Seafile 服務,以便 Seahub 載入新的 Python 設定。請使用適用於您的軟體包、Compose 堆疊或 Kubernetes 設定的重啟步驟;服務名稱和命令會因部署而異。如果您新增了新的 Compose 文件,請在測試瀏覽器工作流程之前確認 Collabora 容器正在執行。

從 Seafile 的 Web 介面開啟一個支援的 Office 文件。該檔案應在 Collabora 編輯器中打開,顯示其內容,並將一小段測試變更儲存回 Seafile。成功開啟文件比僅檢查發現頁面更有意義,因為它可以測試瀏覽器、Seafile、Collabora 和 WOPI 文件傳輸的兼容性。

透過檢查每個連接來排查故障

  • Seahub 報告發現錯誤:請確認OFFICE_WEB_APP_BASE_URLSeafile 服務是否可存取。僅當兩個容器共用相同網路時才使用內部 Docker 服務名稱。
  • 編輯器已載入但無法取得檔案:請檢查 Collabora 日誌和 Seafile 日誌。確認 Collabora 已允許 Seafile WOPI 主機訪問,且 Seafile 的 HTTPS 憑證已受信任。
  • 它在同一主機上運行正常,但遠端運行不正常:將內部 URL 替換為公共 HTTPS 發現 URL,確認 DNS 和 TLS,並驗證代理是否將 Collabora 請求轉送至連接埠 9980。
  • 僅部分格式開放:審核OFFICE_WEB_APP_FILE_EXTENSION和OFFICE_WEB_APP_EDIT_FILE_EXTENSION。請將這些清單限制在使用者需要的格式以及您的 Collabora 部署支援的格式範圍內。
  • 重新啟動後設定似乎沒有變化:請確認您已編輯seahub_settings.py並重新啟動了正確的 Seafile 服務。

對於獨立的 Collabora 節點,Seafile 明確引導管理員參考 Collabora 的部署文檔,而不是使用其自帶的設定檔collabora.yml。自帶的設定檔適用於上述相同的 Docker 主機/網路配置。

官方參考資料

留下評論

使用正確的 WOPI URL 將 Seafile 和 Collabora 連接起來

使用正確的 WOPI URL 將 Seafile 和 Collabora 連接起來

透過為您的部署配置 Collabora 的發現 URL、HTTPS 和 WOPI 存取權限,在 Seafile 中啟用安全性文件編輯。

恢復 Collabora 和桌面應用程式之間的複製和貼上功能

恢復 Collabora 和桌面應用程式之間的複製和貼上功能

測試系統剪貼簿,調整瀏覽器權限,並確定嵌入式 Collabora 整合何時需要更改 iframe 策略。

在 Collabora CODE Docker 中提供自訂字體

在 Collabora CODE Docker 中提供自訂字體

將字體檔案掛載到 Docker 和 Collabora 的系統範本中,以便自訂字體出現在編輯器中並在文件中正確渲染。

恢復 Collabora CODE 設定而不遺失部署更改

恢復 Collabora CODE 設定而不遺失部署更改

備份 coolwsd.xml 及其部署來源,安全地恢復它們,並在使用者返回編輯之前驗證程式碼。

透過匹配主機來源來修復 CODE 的 WOPI 主機檢查

透過匹配主機來源來修復 CODE 的 WOPI 主機檢查

在程式碼中允許確切的 Nextcloud 或其他 WOPI 來源,然後驗證活動主機允許列表,並將其與 Nextcloud 的來源 IP 限制區分開來。

解決 Collabora 的“好吧,這太尷尬了”錯誤

解決 Collabora 的“好吧,這太尷尬了”錯誤

追蹤 Collabora 的瀏覽器、WOPI 和 WebSocket 連接,找出文件無法開啟的原因,然後套用與您的 Nextcloud 設定相符的修復程式。

在 Kubernetes 節點上執行 Collabora Online

在 Kubernetes 節點上執行 Collabora Online

使用 Helm 部署 Collabora CODE 副本,透過 WOPI 親和性將每個文件保持在一個 pod 中,並驗證入口、節點放置和 Nextcloud 編輯。

透過代理程式恢復 Collabora 的 WebSocket 連接

透過代理程式恢復 Collabora 的 WebSocket 連接

從瀏覽器到 coolwsd 追蹤失敗的套接字握手,然後將反向代理路由與您的 Collabora 版本進行匹配,包括 CODE 26.04 Apache 變更。

透過檢查金鑰、發現和 URL 來修復 WOPI 驗證錯誤

透過檢查金鑰、發現和 URL 來修復 WOPI 驗證錯誤

追蹤 Collabora WOPI 證明失敗的原因,例如金鑰不匹配、發現資料過時、時脈漂移或代理 URL 變更——而不會削弱驗證。

修正 Collabora Online 字體大小下拉選單顯示錯誤的問題

修正 Collabora Online 字體大小下拉選單顯示錯誤的問題

重置瀏覽器縮放,測試乾淨的會話,並確定何時格式錯誤的選單大小需要 Collabora 伺服器更新。