好不容易才把onlyoffice連接成功,你竟然還給我來這個錯誤,實在是不應(yīng)該呀,都最后一公里了,可不能放棄,必須得把它給解決。
現(xiàn)在不妨從開始說起:
在Docker容器內(nèi)部,宿主機(jī)相當(dāng)于一個網(wǎng)關(guān),宿主機(jī)根據(jù)不同的端口給每個容器分配一個獨(dú)立的IP地址。這時所有Docker上所有容器的IP都是基于DNAT和SNAT技術(shù)自動實現(xiàn)對內(nèi)網(wǎng)的接入,本質(zhì)上都是用宿主機(jī)的內(nèi)網(wǎng)IP地址+宿主機(jī)端口,只是映射的端口號不同而以。此時宿主機(jī)與外界通信的接口是路由器,其使用的IP是內(nèi)網(wǎng)IP,還不能直接上網(wǎng),必須經(jīng)過路由器(路由器的一端連內(nèi)網(wǎng),一端連公網(wǎng))的端口映射,再次把宿主機(jī)的端口映射到路由器的獨(dú)立端口上(具體根據(jù)路由器設(shè)置),使用路由器的端口與公網(wǎng)連接,其本質(zhì)也是利用路由器的公網(wǎng)IP+路由器的端口號。
所以容器在接入公網(wǎng)之前是經(jīng)過了兩層映射(套娃的既視感),兩次端口轉(zhuǎn)換:容器----宿主機(jī)----路由器。
宿主機(jī)內(nèi)部各級映射,每級都有一個網(wǎng)關(guān)
現(xiàn)在安裝Nextcloud和Onlyoffice容器,它們是兩個不同的服務(wù)器,要連接成功,必須是兩邊都是互通的,才可以互訪。前幾天都是把NC和OO都部署在NAS服務(wù)器上,妄想基于Docker容器來實現(xiàn)兩服務(wù)器的互訪,雖然內(nèi)網(wǎng)是沒有問題的,但是外網(wǎng)卻不一直連接不上,為啥呢?
這是因為我犯了個低級錯誤:因為對于DNS服務(wù)器來說來說,要將域名轉(zhuǎn)換為IP地址,這個IP地址必須是公網(wǎng)地址,前面說到如果以回環(huán)的方式實現(xiàn)互訪在內(nèi)網(wǎng)是沒有問題的,但是外網(wǎng)就顯然不可能了。
既然不能直連,那我們可以用其它方法來實現(xiàn),方案有三種:
方案一:能不能再增加一臺以上設(shè)備來實現(xiàn)“下一跳”,這樣就可以“欺騙”路由器了。
?
?
于是,前幾天配置的WireGuard VPN終于可以派上用場了,具體方法是在“ONLYOFFICE Doc地址”欄填入VPN的地址:https://10.0.xx.xx:端口號,在“用于ONLYOFFFCIE Doc內(nèi)部請求的服務(wù)器地址”欄填入內(nèi)網(wǎng)地址:https://192.168.xx.xx:端口號。
但是,現(xiàn)實是騰訊給的公網(wǎng)帶寬只有4M,要實現(xiàn)多人在線辦公4M的帶寬還遠(yuǎn)遠(yuǎn)不夠呀,還有一個問題是每個人都直面我的NAS服務(wù)器,是有風(fēng)險的,所以不推薦。
方案二:因為我的NAS時雙網(wǎng)口的,雙網(wǎng)口就意味著有兩個IP地址可用,讓每個容器使用一個外網(wǎng)口,這樣就實現(xiàn)了兩個容器的相互連通,但是在實驗過程中,因為不知道ONLYOFFICE默認(rèn)使用的端口號,最終沒有成功,所以就有了第三方案。
方案三:利用騰訊云輕量級服務(wù)器Lighthouse來實現(xiàn),同樣是通過Docker容器安裝ONLYOFFICE,相關(guān)過程自行百度或搜索B站或者C站,現(xiàn)在多人在線辦公的網(wǎng)絡(luò)拓?fù)鋱D應(yīng)該是這樣的:
因為我的NC服務(wù)器時基于https訪問的,此時OO也必須以https連接。
要實現(xiàn)https安全連接,有些繁瑣,但是按照步驟一步一步來就很簡單了,,在安裝好OO后,為了避免出現(xiàn)不必要的錯誤,還應(yīng)該修改NEXTCLOUD容器配置文件‘conf.php’,步驟如下:
首先通過以下命令一步一步進(jìn)入:
docker exec -it 該容器ID /bin/bah
ls ##查看根目錄文件夾,并找到conf文件夾
nano conf/conf.php
在段落中插入以下內(nèi)容:
'onlyoffice' =>
array (
'verify_peer_off' => true,
),
'allow_local_remote_servers' => true,
保存好后在瀏覽器中打開“https://騰訊云公網(wǎng)IP:OO的端口”,會出現(xiàn)如下頁面,這個頁面主要是為了測試OO是否正常工作的。
按照提示的步驟一步一步做,最后再點(diǎn)開“GO TO EXAMPLE”出現(xiàn)創(chuàng)建文檔的頁面,試著創(chuàng)建一個文檔:
這時有可能還會出現(xiàn)一個錯誤---類似于“實驗文本無法保存或無法下載”的情況:
查閱多方資料后發(fā)現(xiàn)這是因為docker node js無法對客戶端自簽名證書進(jìn)行認(rèn)證:
解決辦法:關(guān)閉客戶端證書認(rèn)證。
進(jìn)入ONLYOFFICE容器并修改default.json文件。
docker exec -it 容器ID /bin/bash
nano /etc/onlyoffice/documentserver/default.json
找到如下代碼:
"requestDefaults": { "headers": { "User-Agent": "Node.js/6.13" }, "rejectUnauthorized": true
把“true”值改成“false”后,保存并退出。
再次回到容器,輸入‘exit’退出容器,輸入以下命令重啟ONLYOFFICE:
docker restart 該容器ID
?好了,現(xiàn)在就可以在onlyoffice配置頁面(依次點(diǎn)開“頭像”--“設(shè)置”---"ONLYOFFICE")進(jìn)行如下配置:
在“ONLYOFFICE Doc地址”欄填入“https://騰訊云地址:OO端口”,在“用于ONLYOFFICE Doc內(nèi)部請求的服務(wù)器的地址”欄填入NEXTCLOUD的公網(wǎng)地址或域名,格式為“https://mydomain:NC端口”,保存,此時會出現(xiàn)“設(shè)置更改成功”的提示。
連接成功現(xiàn)在我們有要直面開頭提到的錯誤了:
當(dāng)我用Chrome瀏覽器z在NC打開office文件時,我以為會很順利的打開,但是結(jié)果呢,無法連接,前面的工作可不能白做。
好吧,那我去GitHub看看有沒有類似的問題,結(jié)果所有的問題源頭都指向了OO服務(wù)器目錄下的一個名為api.js文件,我自己到開瀏覽器的控制臺查看也確實是那么回事,但是看著這個js文檔,還是有些茫然,要不還是瀏覽器再試試吧,當(dāng)我用Edge瀏覽器在NC上打開OO時,神奇的事發(fā)生了。
原來真的是瀏覽器問題,可能是瀏覽器的安全設(shè)置把OO給攔截了,那就一個一個的實驗吧。
但是無論怎么設(shè)置瀏覽器,OO都是無動于衷,再次用快捷鍵“F12”進(jìn)入控制臺,點(diǎn)開錯誤提示欄,找到有“api.js“文件,點(diǎn)開“api.js”文件,直接跳到“https://ONLYOFFICE的地址/web-apps/apps/api/documents/api.js“,再次刷新NC,重新打開office文件,奇跡發(fā)生了,竟然正常打開。按照這個方法在firefox瀏覽器上見打開“api.js“這個文件后,同樣也可以打開office文件。
所以還真不是安全問題,我琢磨這估計是Chrome和Firefox瀏覽器無法抓取這個api.js文件,而Edge瀏覽器可以正常抓取這個文件,所以那兩個瀏覽器才會出現(xiàn)服務(wù)器無法訪問的錯誤,點(diǎn)擊api.js這個文件打開后,瀏覽器就相應(yīng)保存了這個Cookie,所以還有一點(diǎn)就是在瀏覽器上設(shè)置Cookie時,一定不要選擇“退出時清理Cookie”這個選項。
還有要注意的是,應(yīng)該在“隱私設(shè)置和安全性”的點(diǎn)擊“Cookie及其他網(wǎng)站數(shù)據(jù)”分別選擇“允許所有Cookie”
最近發(fā)現(xiàn):當(dāng)ONLYOFFICE經(jīng)過多次重裝,按以上步驟設(shè)置好后,Nextcloud連接Onlyoffice還會出現(xiàn)一個“INVALID TOKEN”的錯誤提示,或者是在打開文檔時出現(xiàn)“秘鑰沒有正確生成”類似的錯誤提示,大家可以進(jìn)入ONLYOFFICE容器內(nèi)部查看‘‘local.json’’這個文件,內(nèi)部路徑為:‘‘/etc/onlyoffice/documentserver”,或者直接輸入“?cat?/etc/onlyoffice/documentserver/local.json”,打開該文件,找到如下相關(guān)的內(nèi)容:
"secret": {
"inbox": {
"string": "YOURTOKEN"
},
"outbox": {
"string": "YOURTOKEN"
},
"session": {
"string": "YOURTOKEN"
}
復(fù)制秘鑰,然后再回到Nextcloud的Onlyoffice的設(shè)置界面,把復(fù)制好的秘鑰粘貼到“秘鑰”欄,點(diǎn)擊‘‘保存”按鈕即可。
文章來源:http://www.zghlxwxcb.cn/news/detail-406058.html
寫在最后:NEXTCLOUD的BUG還是有點(diǎn)多哈,我還走了很多彎路,花了不少的時間來學(xué)習(xí),不過它確實很好用,而且是開源,用的人越多BUG就越少?。。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-406058.html
到了這里,關(guān)于關(guān)于Nextcloud連接Onlyoffice成功后提示“ONLYOFFICE服務(wù)器無法連接,請聯(lián)系管理員?!板e誤的處理方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!