Nextcloud能夠通過OnlyOffice對儲存的Office文檔進(jìn)行在線創(chuàng)建又官、編輯豪嗽。本文簡要記錄這個(gè)部署蛤售、配置的過程以作備忘誓焦。本文重點(diǎn)講述解決域名+IPv6的情況下解決相應(yīng)的配置問題。
前言
最近在公共電腦上需要對Nextcloud上的Office文檔作一些處理诺祸、更新携悯。于是先從Nextcloud把文檔下載下來,用本地的office編輯好以后再把文件上傳回去筷笨。一番操作后讓我這個(gè)中度強(qiáng)迫癥不免感到繁瑣憔鬼。以前在研究Nextcloud的時(shí)候就發(fā)現(xiàn)通過插件以及一個(gè)叫作OnlyOffice的網(wǎng)絡(luò)套件可以實(shí)現(xiàn)在線編輯Office文檔。經(jīng)過一番折騰終于把服務(wù)搭建起來胃夏。
OnlyOffice簡介
OnlyOffice有一款產(chǎn)品叫Document Server轴或,是一款提供在線編輯office文檔的服務(wù)套件。通過這個(gè)套件以及對應(yīng)的Nextcloud插件仰禀,可以實(shí)現(xiàn)在Nextcloud上進(jìn)行在線編輯Office文檔的功能照雁。該套件有相應(yīng)的Docker鏡像,所以部署方面是比較簡單的答恶。
設(shè)備饺蚊、系統(tǒng)簡介
家里通過一臺工控機(jī)(i7-7500U)作路由,主系統(tǒng)PVE悬嗓,除了路由系統(tǒng)外污呼,通過LXC裝了Docker。
容器方面與本文相關(guān)的主要是Nextcloud(包括它的數(shù)據(jù)庫容器MariaDB)烫扼。因?yàn)楸疚牟皇墙榻BNextcloud的部署,所以這方面的部署過程不作講解碍庵。
通過IPv6+動(dòng)態(tài)域名+反向代理的方式Nextcloud實(shí)現(xiàn)了外網(wǎng)訪問映企。訪問協(xié)議方面為HTTPS。由于這些前置配置静浴,在配置OnlyOffice的時(shí)候會(huì)造成一些問題堰氓,這點(diǎn)需要特別注意。
部署及安裝插件
- 創(chuàng)建OnlyOffice容器苹享,容器的部署很簡單直接双絮,除了初始化的時(shí)間有點(diǎn)長以外沒有什么特別之處浴麻。
docker run -d --name onlyoffice \
-p 8080:80 \
-v /app/onlyoffice/logs:/var/log/onlyoffice \
-v /app/onlyoffice/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/db:/var/lib/postgresql \
--restart=always \
onlyoffice/documentserver:7.0.1
- 在Nextcloud中安裝OnlyOffice插件。
用管理賬號登錄Nextcloud -> 點(diǎn)擊右上角用戶圖標(biāo) -> 點(diǎn)擊Apps
-> 左面菜單點(diǎn)擊Office & text
囤攀。這樣就能在主頁面找到和安裝OnlyOffice了软免。
配置插件
進(jìn)入配置頁面
用管理賬號登錄Nextcloud -> 點(diǎn)擊右上角用戶圖標(biāo) -> 點(diǎn)擊Settings
-> 左面菜單的Administration
底下找到并點(diǎn)擊ONLYOFFICE
.這樣主頁面就會(huì)跳轉(zhuǎn)到OnlyOffice的配置頁面中。
在配置頁面下最關(guān)鍵的是配置OnlyOffice的服務(wù)地址焚挠。這里有若干方面需要注意膏萧,下面逐一介紹。
http協(xié)議訪問
如果Nextcloud是通過http協(xié)議(非https)進(jìn)行訪問蝌衔,那么用http://ip:port
的格式對OnlyOffice的服務(wù)地址進(jìn)行配置通常就可以了榛泛。譬如,假設(shè)我們docker宿主機(jī)的IP是192.168.0.10
噩斟,那么按照前面創(chuàng)建的容器設(shè)置曹锨,配置則應(yīng)該是:http://192.168.0.10:8080
。
通常來說剃允,如果Nextcloud只在內(nèi)網(wǎng)使用(通過內(nèi)網(wǎng)ip訪問)沛简,又或者通過http協(xié)議和域名實(shí)現(xiàn)外網(wǎng)訪問都屬于這種情況。
https協(xié)議訪問
如果Nextcloud是通過https協(xié)議進(jìn)行訪問的話硅急,插件也會(huì)要求通過https協(xié)議訪問OnlyOffice的服務(wù)覆享。如果使用http開頭的地址作為配置,插件會(huì)彈出下面提示营袜。
Error when trying to connect (Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required.)
也就是說撒顿,我們需要為OnlyOffice配置https。
通常荚板,之所以使用https協(xié)議是為了讓訪問更加安全凤壁,https協(xié)議通常是配合外網(wǎng)訪問使用的,內(nèi)網(wǎng)訪問很少會(huì)用到跪另。配置https訪問需要用到證書拧抖,盡管自建證書也能夠?qū)崿F(xiàn),但通常情況下這樣做的意義不大免绿。更常見的情況是從域名供應(yīng)商獲取相應(yīng)的域名證書唧席。
為了解決OnlyOffice的https訪問問題,我們有兩種方式嘲驾。理論上一種是前面提到的自建證書淌哟,在這種情況下,可以通過https://ip:port
的格式訪問到OnlyOffice的服務(wù)辽故。盡管網(wǎng)上看到過一些這方面的介紹徒仓,但因?yàn)檫@種配置方式很少用到,也就沒有采納這種方案誊垢。
另外一種形式是干脆為OnlyOffice服務(wù)注冊一個(gè)域名(譬如掉弛,二級域名)并為其配置https訪問症见。如果Nextcloud本身就使用https協(xié)議訪問,那么必然了解這套配置流程殃饿,這里就不贅述了谋作。在這種情況下OnlyOffice的服務(wù)地址將用https://hostname
的格式進(jìn)行配置。這也是我實(shí)際選擇的方案壁晒。
IPv6的問題
在我部署好OnlyOffice并完成的https訪問配置后瓷们,再在OnlyOffice的插件中填入服務(wù)地址,系統(tǒng)跳出下面提示
Error when trying to connect (cURL error 7: (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://(我的域名)/healthcheck)
查了一下cURL error 7
秒咐,大概是無法訪問的意思谬晕。然而在瀏覽器輸入https://(我的域名)/healthcheck
卻能夠正常返回true
。
進(jìn)入nextcloud的后臺ping了一下為OnlyOffice注冊的域名發(fā)現(xiàn)的確無法訪問携取。經(jīng)過一番思考攒钳,合理猜測是因?yàn)镮Pv6造成的。
前文介紹到雷滋,設(shè)備是通過動(dòng)態(tài)域名+IPv6的方式實(shí)現(xiàn)Nextcloud的外網(wǎng)訪問不撑。訪問過程需要經(jīng)歷一系列的環(huán)節(jié),而只要其中一環(huán)不支持IPv6晤斩,那么訪問就無法成功焕檬。盡管不能確定具體是哪個(gè)環(huán)節(jié)造成的,但大概率發(fā)生在nextcloud對IPv6的支持或者docker的橋接上澳泵。
解決這個(gè)問題只要正確解釋域名對應(yīng)的IP即可实愚,可以通過兩種辦法實(shí)現(xiàn)。一個(gè)是在nextcloud的host文件中添加OnlyOffice的域名解釋兔辅。假設(shè)我們的域名是office.myhost.com
腊敲,根據(jù)前文的配置,在nextcloud的host文件中添加下面域名解釋:
192.168.0.10 office.myhost.com
我采取的另一個(gè)方案是维苔,如果路由有相應(yīng)功能的話碰辅,直接在路由解釋(劫持)對應(yīng)的域名即可。該方案能夠把局域網(wǎng)內(nèi)的自定義的域名解釋集中管理介时,相對更方便没宾。
在添加了OnlyOffice的域名解釋后,沒有再出現(xiàn)前面的錯(cuò)誤沸柔,但系統(tǒng)又提示了新的錯(cuò)誤:
Error when trying to connect (Error occurred in the document service: Error while downloading the document file to be converted.) (version 7.0.1.37)
同樣是因?yàn)閺腛nlyOffice無法訪問Nextcloud導(dǎo)致的循衰,原因也同樣出在域名解釋的問題上。類似的在OnlyOffice的host文件中添加相應(yīng)解釋后就能解決勉失,譬如:
192.168.0.10 nextcloud.myhost.com
再一點(diǎn)點(diǎn)域名解釋的問題
按理來說羹蚣,當(dāng)我們在域名商對OnlyOffice的域名進(jìn)行配置的時(shí)候(或者通過動(dòng)態(tài)域名工具創(chuàng)建原探、配置對應(yīng)的域名)并不需要填寫真實(shí)的公網(wǎng)IP(無論是靜態(tài)還是動(dòng)態(tài))乱凿。無論是自建證書還是通過域名商獲得證書顽素,為的都【只是】為了解決通過https協(xié)議訪問OnlyOffice服務(wù),之所以從域名商申請證書是因?yàn)榇蠖鄶?shù)人對這套流程更為熟悉徒蟆,僅此而已胁出,而并非真的要從外網(wǎng)訪問OnlyOffice。事實(shí)上段审,我們并不希望自己搭建的OnlyOffice被外部訪問全蝶。
此外,依托域名商的域名解釋相當(dāng)于在訪問的時(shí)候先跑到DNS上查詢到自己的公網(wǎng)IP寺枉,然后再回到自己的服務(wù)器上進(jìn)行訪問抑淫。這一方面多此一舉,降低訪問速度姥闪,二一方面使得本來Nextcloud與OnlyOffice之間純粹的內(nèi)網(wǎng)訪問過程變成不得不依賴外網(wǎng)進(jìn)行始苇。
總結(jié)
OnlyOffice的部署和配置相對簡單,但主要問題在于Nextcloud插件中OnlyOffice的地址配置問題上筐喳。如果Nextcloud純粹是為了內(nèi)網(wǎng)訪問而設(shè)催式,這個(gè)問題還是非常簡單直接的,只要按照http://ip:port
的格式填寫地址即可避归。但如果是通過域名和https協(xié)議訪問的話荣月,配置方面可能會(huì)出現(xiàn)各種問題∈岜校總的來說哺窄,這些問題集中在域名解釋方面。在服務(wù)器運(yùn)維的問題上顿天,各人的情況不盡相同堂氯,本文并沒有記錄詳細(xì)的部署、配置步驟牌废,更多的是記錄配置過程中出現(xiàn)的問題以及解決過程咽白。此外也列舉了遇到的一些報(bào)錯(cuò)信息,方便有類似問題的朋友找到自己的解決思路鸟缕。