群暉docker部署onlyoffice
搭建好 OnlyOffice 後因為服務是公開的,所以任何人都可以鏈接使用,就給內存本不就富裕的 服務器 更大的壓力。所以我們需要給 OnlyOffice 設置好密鑰(JWT令牌),只給自己允許的人進行使用。
從7.2開始默認開啟了JWT,所以我們需要拿到默認的key。有些插件不支持填key的(如可道雲kodbox下的onlyoffice 3.0插件)就不能使用令牌方式,因為有2年沒更新了。所以可道雲kodbox只能用7.1版本的onlyoffice/documentserver,千萬不要快手點了laster版本~所以還是NextCloud 功能開源豐富點。
如果要使用onlyoffice文檔安全令牌
在 NextCloud 的 OnlyOffice 插件中設置正確的密鑰
===========================================
先查key命令如下:
docker container ls -a #列出所有容器,記錄CONTAINER ID
sudo docker exec [CONTAINER ID] /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string' #查詢默認的key,[CONTAINER ID] 替換為onlyoffice的ID
#查找密鑰:
sudo docker exec $(sudo docker ps -q) /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json
#或者是
sudo docker exec onlyoffice /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json
獲取[CONTAINER ID] 命令
sudo -i (再次輸入群暉admin密碼,獲取root權限;不然docker命令用不了)
docker container ls -a (查看當前運行的容器,記住 CONTAINER id,是一串數字+字母)
一、將 Docker 容器中的 local.json 文件拷貝出,命令:
sudo docker cp (容器ID):/etc/onlyoffice/documentserver/local.json /var/www/onlyoffice/Data/(拷貝出的文件目的目錄,可以自定)
{
"services": {
"CoAuthoring": {
"sql": {
"type": "postgres",
"dbHost": "localhost",
"dbPort": "5432",
"dbName": "onlyoffice",
"dbUser": "onlyoffice",
"dbPass": "onlyoffice"
},
"token": {
"enable": {
"request": {
"inbox": false,
"outbox": false
},
"browser": false
},
"inbox": {
"header": "Authorization"
},
"outbox": {
"header": "Authorization"
}
},
"secret": {
"inbox": {
"string": "secret"
},
"outbox": {
"string": "secret"
},
"session": {
"string": "secret"
}
}
}
},
"rabbitmq": {
"url": "amqp://guest:guest@localhost"
}
}
將文件拷貝至目標目錄
二、使用文本編輯框打開文件,如圖所示兩處位置修改為密鑰
"secret": {
"inbox": {
"string": "secret"
},
"outbox": {
"string": "secret"
},
"session": {
"string": "secret"
}
三、將下面三處位置改成 True
"token": {
"enable": {
"request": {
"inbox": false,
"outbox": false
},
"browser": false
},
四、然後將 Docker 容器中的 local.json 文件拷貝回去,命令:
sudo docker cp (文件所在目錄) /var/www/onlyoffice/Data/local.json 容器ID:/etc/onlyoffice/documentserver/
五、重啟容器即可
如果不想開啟驗證令牌
如果安裝時映射的是:
/var/log/onlyoffice:存儲ONLYOFFICE文檔服務器的日志文件
/var/www/onlyoffice/Data:存儲證書文件
關閉 onlyoffice 的 ssl 證書驗證:
進入容器後:
進入容器後:
sudo cp /etc/onlyoffice/documentserver/default.json /var/www/onlyoffice/Data/certs/ (覆制出配置文件)
覆出後在群暉路徑:docker/onlyoffice/certs 能找到 default.json;或電腦上修改文件,將”rejectUnauthorized”後面的 true 改為 false 如下:
回到CMD容器終端,再覆制回去配置文件:
mv /var/www/onlyoffice/Data/certs/default.json /etc/onlyoffice/documentserver/
也可以這樣:
sudo cp /var/log/onlyoffice/documentserver/default.json /etc/onlyoffice/documentserver/
如果不清楚映射路徑,或找不到/etc下的目錄,請按下面“進入容器”後的命令再操作。
然後就可以退出並關閉CMD終端,重啟容器;
重啟命令:
docker exec -it f63e784f799d(容器ID) /bin/bash -c "supervisorctl restart all"
其他命令與錯誤解決:
制作onlyoffice證書文件
1、mkdir /var/www/html/data/certs
2、cd /var/www/html/data/certs/
3、openssl genrsa -out onlyoffice.key 2048
4、openssl req -new -key onlyoffice.key -out onlyoffice.csr (*填寫各種信息,同樣記得 域名的地方要用ddns的域名)
5、openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt
6、openssl dhparam -out dhparam.pem 2048 (這個要等比較久)
調整時區:
電腦 搜索 CMD ,輸入 ssh admin@群暉局域網IP ; 回車輸入admin的密碼(不會顯示)
1、sudo -i (再次輸入群暉admin密碼,獲取root權限;不然docker命令用不了)
2、docker container ls -a (查看當前運行的容器,記住 container id)
3、docker exec -it [容器ID或名稱] /bin/bash (容器ID只要輸入前幾個,能不跟其他的重覆就行)
4、echo "Asia/Shanghai" > /etc/timezone; (重點:修改容器時區)
5、ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (也是修改時區,都要操作)
6、date -R (查看時間是否正確)
onlyoffice安裝中文字體
關於這裏涉及的字庫,文件太大,可以去百度一下,或者直接在office的win版本轉換過來,其文件以tff結尾。
sudo docker cp /usr/share/fonts 替換為容器id:/usr/share
#進入容器:
docker ps
docker exec -it 替換為容器id bash
/usr/bin/documentserver-generate-allfonts.sh
onlyoffice設置字號
#把文件覆制出來:
sudo docker cp 2a816dbf82ee:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/app.js /volume1/docker/onlyoffice
#編輯文件:
查找{value:8,displayValue:"8"},在此之前添加3次:
{value:42,displayValue:"初號"},{value:36,displayValue:"小初"},{value:26,displayValue:"一號"},{value:24,displayValue:"小一"},{value:22,displayValue:"二號"},{value:18,displayValue:"小二"},{value:16,displayValue:"三號"},{value:15,displayValue:"小三"},{value:14,displayValue:"四號"},{value:12,displayValue:"小四"},{value:10.5,displayValue:"五號"},{value:9,displayValue:"小五"},{value:7.5,displayValue:"六號"},{value:6.5,displayValue:"小六"},{value:5.5,displayValue:"七號"},{value:5,displayValue:"八號"},
#把文件替換
sudo docker cp /volume1/docker/onlyoffice/app.js 2a816dbf82ee:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main
字體問題:結局方案,文件夾映射好之後,在對應的文件夾下建立chinese文件夾,在裏面導入你需要的字體(我的是從windows下覆制的)。。
覆制進入後,打開docker 對應的鏡像的終端界面:
,
然後按照:mkfontscale
mkfontdir
fc-cache -fv
documentserver-generate-allfonts.sh
這樣的順序輸入命令後就OK了。
以上命令也可以在終端機上操作,終端機相當於省了這步,直接進入容器:
用命令進入docker容器
sudo docker exec -i -t f63e784f799d /bin/bash (f63e784f799d為容器ID)
可以直接進入 cd /etc/onlyoffice/documentserver/ 容器目錄下。
然後ls 一下,就可以找到local.json和default.json
在線打開office文檔,提示無法保存和下載,下載失敗
問題現象:
如果onlyoffice容器和seafile、nextcloud不在同一主機,在線編輯會提示下載失敗。
原因分析:
docker容器內默認是無法訪問外網的,如果容器和kodbox、nextcloud、seafile等服務不在同一主機,則容器需要主動聯網。但是linux默認策略是不會轉發包的,所以需要開啟主機NAT轉發。
解決辦法1:
#編輯系統設置
vi /etc/sysctl.conf
#添加以下內容到sysctl.conf
#添加完畢記得 :wq 保存
net.ipv4.ip_forward = 1
#最後重啟主機
解決辦法2:
修改local.json配置,框架默認配置的鏈接是localhost,組件識別不了,
把localhost改成自己的IP或0.0.0.0就好了。
———————————–
©著作權歸作者所有:來自51CTO博客作者OPQ20的原創作品,請聯系作者獲取轉載授權,否則將追究法律責任
群暉安裝docker版 onlyoffice ,這些命令必須知道,不然不會排除報錯!
https://blog.51cto.com/picker/5790042
THE END