Last Updated on 2026-10-30 by william
我自己的nextcloud原本連結 Collabora Online 達到可線上編輯 office 文件功能, 但是最近發現 onlyoffice 更相容 M$ office, 於是想試用看看, 這次一樣使用 docker 安裝,且不使用 onlyoffice 內建的 let’s encrypt 功能;而是使用我習慣的反向代理,因此法證書都是放在宿主機裡,並非分散到其他容器裡面,比較好管理。
*** 2022/11/28 以下作法安裝 7.2 居然失敗(docker 必須升級到 20.10.21), 但我這版還沒升級, 只好退回 7.1
docker volume create onlyoffice_fonts
docker run --restart always -v onlyoffice_fonts:/usr/share/fonts -v /etc/letsencrypt:/etc/letsencrypt --name onlyoffice -d -p 8443:443 onlyoffice/documentserver:7.1*** 2023/09/19 安裝 7.2 以上,需要設定密碼,並且在 nextcloud 的「secret key」欄位輸入該密碼
docker volume create onlyoffice_fonts
docker run --restart always -v onlyoffice_fonts:/usr/share/fonts -v /etc/letsencrypt:/etc/letsencrypt --name onlyoffice -d -p 8443:443 -e JWT_SECRET=<密碼> onlyoffice/documentserver:7.2安裝完畢, 接下來就是進入容器,進行憑證的對應
** onlyoffice_fonts 的路徑可以存放其他字型(TTF、TTC),再進入容器執行 /usr/bin/documentserver-generate-allfonts.sh 即可使用新的字型,或是執行 fc-cache -f /usr/share/fonts/xxxx 目錄 ,fc-list 可得知那些字型生效。
網站憑證的設定方式,我是習慣將宿主機的 /etc/letsencrypt 對應到容器內部的 /etc/letsencrypt;若不想要這樣對應,onlyoffice 應該有參數能自動申請使用。
#進入onlyoffice
docker exec -it onlyoffice bash
###### 執行已下指令
mkdir /var/www/onlyoffice/Data/certs
cd /var/www/onlyoffice/Data/certs/
openssl dhparam -out dhparam.pem 2048
ln -s /etc/letsencrypt/live/onlyoffice.test.com/fullchain.pem /var/www/onlyoffice/Data/certs/onlyoffice.crt
ln -s /etc/letsencrypt/live/onlyoffice.test.com/privkey.pem /var/www/onlyoffice/Data/certs/onlyoffice.key
######
#離開container並且重開
exit
docker restart onlyoffice最後再到 nextcloud 系統,啟用 onlyoffice 外掛連結功能,再輸入咱們 onlyoffice 的網址,如:https://onlyoffice.test.com,就可以享用高度相容 M$ office 的線上編輯功能了。

PS. 若容器的憑證是自己簽發的,經過測試無法使用,官網建議的做法一樣失敗,請三思
https://api.onlyoffice.com/editors/nextcloud
測試的 nextcloud 20.0.4 , 插件 onlyoffice 是 6.1.0.83
2026/10/30
最近因為 php2shell 資安問題,我必須從 nextcloud 27 版開始一路升級到 32 版,才能擺脫這個大漏洞,也順便讓 onlyoffice 從 7.5.1 升到 9.2.1,以下是新版的安裝方式:
先建立字型目錄,裡面可以直接放 ttf、ttf 字型檔案,建議自己建立一個目錄,放入字型,以後好辨認
docker volume create onlyoffice_fonts- 執行以下指令
- 我習慣用宿主機的/etc/letsencrypt,所以需要對應目錄
- 設定好 LETS_ENCRYPT_DOMAIN 與 LETS_ENCRYPT_MAIL 相關參數,以及對外的 port
docker run --restart always -v onlyoffice_fonts:/usr/share/fonts -v /etc/letsencrypt:/etc/letsencrypt -v onlyoffice_Data:/var/www/onlyoffice/Data -e LETS_ENCRYPT_DOMAIN=onlyoffice.test.com -e LETS_ENCRYPT_MAIL=yourgmail@gmail.com -e JWT_ENABLED=true -e JWT_SECRET=密碼 --name onlyoffice_9.2.1 -d -p 8444:443 -p 8081:80 ghcr.io/thomisus/onlyoffice-documentserver-unlimited:9.2.1- 進入容器設定好憑證
- 因 onlyoffice 的預設憑證名稱跟 letsencrypt 不一樣,因此需要對應好。
docker exec -it onlyoffice bash
###### 執行已下指令
mkdir /var/www/onlyoffice/Data/certs
cd /var/www/onlyoffice/Data/certs/
openssl dhparam -out dhparam.pem 2048
ln -s /etc/letsencrypt/live/onlyoffice.test.com/fullchain.pem /var/www/onlyoffice/Data/certs/onlyoffice.crt
ln -s /etc/letsencrypt/live/onlyoffice.test.com/privkey.pem /var/www/onlyoffice/Data/certs/onlyoffice.key
######
修改好,建議安裝 nmap 確認容器的 443 有起來
apt install vim nmap telnet -y
# 以下指令可確認容器內部的 443 有起來
nmap localhost
重啟容器就可以了
docker restart onlyoffice最後回到 nextcloud 進行設定

重啟後,建議看一下 log 我自己安裝 9.2.1 有出現一個錯誤
EACCES: permission denied, mkdir '/var/www/onlyoffice/documentserver/.cache/pkg/282c93e4113a05841f827943c9f6cd6d4188bfda819ab562b27b278d2fcebfda'
Possible solutions:
- Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp"
- Install for the current linux-x64 runtime: "npm install --platform=linux --arch=x64 sharp"
- Consult the installation documentation: https://sharp.pixelplumbing.com/install
原先我照 log 建議,安裝 sharp 甚麼的,但很麻煩,後來發現只要解決上面 EACCESS: permission denied 問題即可
進入容器,看 log 出現無權限的目錄名稱是什麼,先手動建立,然後設定 owner 為 ds,這樣就可以了。
# 看 log 出現無權限的目錄名稱是什麼,
mkdir -p /var/www/onlyoffice/documentserver/.cache/pkg/282c93e4113a05841f827943c9f6cd6d4188bfda819ab562b27b278d2fcebfda
chown -R ds:ds /var/www/onlyoffice/documentserver/.cache
自動引用通知: 超簡單安裝collabora online Part II (v 2.4.17 ) - 咖啡偶-IT日常
自動引用通知: onlyoffice再次回歸啟用 - 咖啡偶-IT日常