群晖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
分享
二维码
打赏
海报
群晖docker部署onlyoffice
搭建好 OnlyOffice 后因为服务是公开的,所以任何人都可以链接使用,就给内存本不就富裕的 服务器 更大的压力。所以我们需要给 OnlyOffice 设置好密钥(JWT令……
<<上一篇
下一篇>>