当前位置: 首页 > article >正文

CentOS9 安装Docker+Dpanel+onlyoffice(https、更改字体、字号、去除限制)的避坑笔记

CentOS9 安装Docker+onlyoffice(https、更改字体、字号、去除文件大小限制)的避坑笔记

  • 一、安装Docker
  • 二、更新docker镜像源:
  • 三、安装Dpanel
  • 四、安装onlyoffice(开启https及一些碰到的问题)
  • 五、更改字体和字号
  • 六、去除限制

动手前,预防遭遇各种莫名奇妙的问题,先把selinux给disabled掉:

nano /etc/selinux/config

SELINUX=enforcing,改为:SELINUX=disabled,然后reboot一下系统。

一、安装Docker

1.方法一:使用docker执行脚本安装:

curl -sSL https://get.docker.com/ | sh 

2.方法二:使用dnf安装:
添加docker仓库:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

安装docker:

dnf install docker-ce

安装完毕后,在执行:

#设为开机启动
systemctl enable --now docker

#启动docker
systemctl start docker

#查看状态
systemctl status docker

#查看版本
docker -v

二、更新docker镜像源:

由于某种原因,国内从DockerHub拉取镜像速度会很慢,反正我这里根本无法使用,所以找了一些可用的源,把源添加到:/etc/docker/daemon.json就可以了

nano /etc/docker/daemon.json

把下面内容复制进去,然后ctrl+o,ctrl+x保存退出:

{
	 "registry-mirrors": [
	 	"https://docker.registry.cyou",
        "https://docker-cf.registry.cyou",
        "https://dockercf.jsdelivr.fyi",
        "https://docker.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://mirror.aliyuncs.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.iscas.ac.cn",
        "https://docker.rainbond.cc"
	 ]
}

重启docker:

systemctl daemon-reload
systemctl restart docker

至此,我们的docker已经可以正常使用了。

三、安装Dpanel

用途和使用就不说了,详见官方介绍,官方地址:https://dpanel.cc
我选择的是lite版:

docker run -it -d --name dpanel --restart=always \
 -p 8807:8080 -e APP_NAME=dpanel \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v dpanel:/dpanel dpanel/dpanel:lite

防火墙放行8807端口:

firewall-cmd --add-port=8807/tcp --permanent
firewall-cmd --reload

好了,你的dpanel面板已经安装好了,打开你的浏览器访问:http://你的IP:8807

四、安装onlyoffice(开启https及一些碰到的问题)

1.执行下面命令,安装onlyoffice社区版,目前最新版本为8.2.2,

docker run -i -t -d -p 443:443 --name office --restart=always \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql -e JWT_ENABLED=false onlyoffice/documentserver

2.防火墙放行443端口:

firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

3.添加证书:
进入:/app/onlyoffice/DocumentServer/data目录,mkdir certs创建certs目录,然后把证书上传到这个目录下。
我用的是mkcert生成的自签证书,如果你对mkcert有兴趣,可以到我另一个帖子看:https://blog.csdn.net/alinathz/article/details/106440017

mkcert生成出来的是pem文件,这里需要把证书和key都改名为:
证书改名为:onlyoffice.crt
key改名为:onlyoffice.key
接着把证书上传到/app/onlyoffice/DocumentServer/data/certs目录下。

4.开启https访问:
A.在容器输入:service nginx stop,把容器的nginx停用掉;
B.复制ds-ssl.conf.tmpl替换ds.conf文件:

sudo cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf

C.修改/etc/onlyoffice/documentserver/nginx/ds.conf文件,把里面的{{SSL_CERTIFICATE_PATH}} 和{{SSL_KEY_PATH}} 替换为证书的路径:

nano /etc/onlyoffice/documentserver/nginx/ds.conf

# 证书
ssl_certificate /var/www/onlyoffice/Data/certs/onlyoffice.crt;
# 证书key
ssl_certificate_key /var/www/onlyoffice/Data/certs/onlyoffice.key;

D.修改完后,重启容器的nginx:service nginx start

E.执行下面的脚本:

bash /usr/bin/documentserver-update-securelink.sh

5.进入onlyoffice容器修改/etc/onlyoffice/documentserver/default.json
进入onlyoffice容器,我们上面创建的是office,so…

docker exec -it office /bin/bash

进入后粗暴些,直接:nano /etc/onlyoffice/documentserver/default.json,找到:

"requestDefaults": {
      "headers": {
                "User-Agent": "Node.js/6.13",
                "Connection": "Keep-Alive"
        },
        "gzip": true,
        "rejectUnauthorized": true
}

"rejectUnauthorized": true 改为 "rejectUnauthorized": false,这个是解决自签证书无法访问未授权的问题。

接着,找到:

"request-filtering-agent" : {
        "allowPrivateIPAddress": false,
        "allowMetaIPAddress": false
}

把两个false改为true,这个解决无法打开document.url指向的文件,提示“无法下载”的问题。

好了,经过上面的操作,你现在可以用https://docker服务器地址,来访问你的onlyoffice了。

我打算用它的API,直接来编辑我网站里面的文档,所以做了一个测试:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ONLYOFFICE Document Editor Code Sample</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <style>body {height: 100vh; margin: 0}</style>
    <script src="https://docker服务器地址/web-apps/apps/api/documents/api.js"></script>
  </head>
  <body>
    <div id="placeholder"></div>
    <script type="module">
    const config = {
      document: {
        fileType: "docx",
        key: "随机生成的KEY",
        title: "Playground Document",
        url: "https://你的网站地址/test.docx"
      },
      documentType: "word",
      editorConfig: {
        lang: "zh"
      },
      height: "100%",
      width: "100%"
    }
    const editor = new DocsAPI.DocEditor("placeholder", config)
    </script>
  </body>
</html>

然后直接访问上面的html文件,如果可以直接看到test.docx的内容,那就证明已经OK了。

五、更改字体和字号

刚刚发现,字号显示是正常的,所以不用改,哈哈…现在说说怎么换上自己的字体吧!
1、进入onlyoffice容器,我们上面创建的是office,so…

docker exec -it office /bin/bash

2、删除自带的字体,有两个目录:

cd /usr/share/fonts/
rm -rf *

cd /var/www/onlyoffice/documentserver/core-fonts/
rm -rf *

删除完后退出exit容器。

3、到c:\windows\fonts目录下面找需要用的字体,然后复制到其他地方;

4、把复制出来的字体,上传到宿主机上(U盘,tftp,MobaXterm等方式),如我复制到/home/fonts目录里,然后用下面命令复制到office容器里:

docker cp /home/fonts office:/usr/share/fonts/truetype/custom

5、在进入容器docker exec -it office /bin/bash执行下面命令重新生成:

/usr/bin/documentserver-generate-allfonts.sh

重新生成完毕后,刷新下页面就可以看到改好的字体了。

六、去除限制

去除文件大小限制
参考:https://blog.csdn.net/g401946949/article/details/144337540
A.进入容器docker exec -it office /bin/bash,编辑/etc/onlyoffice/documentserver/default.json

nano /etc/onlyoffice/documentserver/default.json

找到并修改limits_tempfile_upload(模板上传限制),maxDownloadBytes(最大下载限制),uncompressed(未压缩限制):

limits_tempfile_upload:104857600(默认10M)
maxDownloadBytes:104857600(默认10M)
uncompressed:“50M”(默认50M)

根据需求自己修改,保存后,退出容器,重启容器:docker restart office

记录结束,希望可以帮到你。


http://www.kler.cn/a/512512.html

相关文章:

  • Swift语言的函数实现
  • 大模型 | AI驱动的数据分析:利用自然语言实现数据查询到可视化呈现
  • 路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)
  • 【C++】C++11
  • 金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout
  • 内网渗透测试工具及渗透测试安全审计方法总结
  • [论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
  • Open3D 裁剪任意指定区域的点【2025最新版】
  • 网络Web存储之LocalStorage
  • 具体场景的 MySQL 与 redis 数据一致性设计
  • doris:Azure Storage导入数据
  • 【Java 学习】详讲代码块:控制流语句代码块、方法代码块、实例代码块(构造代码块)、静态代码块、同步代码块
  • MacOS/C/C++下怎样进行软件性能分析(CPU/GPU/Memory)
  • 《keras 3 内卷神经网络》
  • хорошо哈拉少wordpress俄语主题
  • 【Redis】AOF持久化的实现与原理
  • Go环境搭建(vscode调试)
  • C ++ 也可以搭建Web?高性能的 C++ Web 开发框架 CPPCMS + MySQL 实现快速入门案例
  • docker 安装 nanomq
  • 深入探索Python人脸识别技术:从原理到实践
  • 202209 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)
  • HTML知识点复习
  • 【无法下载github文件】虚拟机下ubuntu无法拉取github文件
  • dubbo 的 spi 思想是什么?
  • [前端算法]排序算法
  • C#使用WMI获取控制面板中安装的所有程序列表