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

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

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

bash 复制代码
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:

bash 复制代码
dnf install docker-ce

安装完毕后,在执行:

bash 复制代码
#设为开机启动
systemctl enable --now docker

#启动docker
systemctl start docker

#查看状态
systemctl status docker

#查看版本
docker -v

二、更新docker镜像源:

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

bash 复制代码
nano /etc/docker/daemon.json

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

bash 复制代码
{
	 "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:

bash 复制代码
systemctl daemon-reload
systemctl restart docker

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

三、安装Dpanel

用途和使用就不说了,详见官方介绍,官方地址:https://dpanel.cc

我选择的是lite版:

bash 复制代码
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端口:

bash 复制代码
firewall-cmd --add-port=8807/tcp --permanent
firewall-cmd --reload

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

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

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

bash 复制代码
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端口:

bash 复制代码
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...

bash 复制代码
docker exec -it office /bin/bash

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

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

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

接着,找到:

bash 复制代码
"request-filtering-agent" : {
        "allowPrivateIPAddress": false,
        "allowMetaIPAddress": false
}

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

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

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

bash 复制代码
<!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...

bash 复制代码
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执行下面命令重新生成:

1000 复制代码
/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

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

相关推荐
dot to one1 小时前
Linux 入门 常用指令 详细版
linux·服务器·centos
栗子~~3 小时前
docker-compose的方式搭建 kafka KRaft 模式集群
docker·kafka·linq
周杰伦_Jay5 小时前
详细介绍:持续集成与持续部署(CI/CD)技术细节(关键实践、CI/CD管道、优势与挑战)
程序人生·ci/cd·docker·微服务·云原生·容器·人机交互
骑台风走8 小时前
ubunut22.04安装docker(基于阿里云 Docker 镜像源安装 Docker)
阿里云·docker·容器
仇辉攻防9 小时前
【云安全】云原生-Docker(五)容器逃逸之漏洞利用
安全·web安全·网络安全·docker·云原生·容器·安全性测试
SomeBottle13 小时前
【小记】在 Google Colab 等平台上运行 GPU 容器
linux·python·docker·学习笔记·容器化·斩虫
风霜不见闲沉月15 小时前
Docker常用知识点问题
docker
三天不学习17 小时前
Docker 系列之 docker-compose 容器编排详解
docker·容器·docker-compose
一夜白头催人泪17 小时前
【阿里云】使用docker安装nginx后可以直接访问
nginx·阿里云·docker
mcharleylei21 小时前
Centos 安装docker
linux·docker·centos