科技 · 2 月. 28, 2024/星期三

Docker

群暉docker部署onlyoffice

群暉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 

辣椒小魚 •  2023-03-06 • Docker系列群暉專題 • 2503 閱讀

https://www.chillifish.cn/3230.html