梦见你的名字 发表于 2025-3-21 18:20:14

使用 Docker 当地部署 onlyoffice 协作空间(社区版)

使用 Docker 当地部署 onlyoffice 协作空间(社区版)



第一次使用Docker,有一些解释可能不太正确,如有错误,还请指出。
Docker 预备工作

预备工作:下载 Docker,下载后 Docker 会提示 sign in,可以自由选择是否登录,功能都可以正常使用,此时页面如下:
https://i-blog.csdnimg.cn/direct/2b3def01fd7f49abba49c45fba71598f.png
点击设置,将提示的更新与安装全都操作一遍
https://i-blog.csdnimg.cn/direct/d06b1c64a71e41839dfe89d7e047ed6b.png
   ⚠️ Windows 必要安装并启用 Linux 子体系(WSL)可以参考CSDN文章:WSL的安装与使用 (超具体图文版安装教程) 举行操作。
Onlyoffice 之 DocumentServer

安装带有全面协作功能的 onlyoffice 则使用下面的内容,这里的 JWT 先设置为 false
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver
上面的 <PORT_NUMBER> 可以本身任意写一个值,比如 1212 ,并且这里的 my_jwt_secret 改为 false ,也就是下面的内容:
sudo docker run -i -t -d -p 1212:80 --restart=always -e JWT_SECRET=false onlyoffice/documentserver
输入暗码后,会出现下面的内容:
Unable to find image 'onlyoffice/documentserver:latest' locally
不用担心,只要网络没问题,会自动下载的。如果没有自动下载那就本身手动拉取。在终端中使用下令行拉取 documentserver 镜像(不写版本则默认最新版)
docker pull onlyoffice/documentserver
运行完毕后可以去 Docker 查看,可以发现 Images 已经装好了,这个时间Docker 的 Images 页面也出现 onlyoffice/documentserver
https://i-blog.csdnimg.cn/direct/fd2eb7b7759a487886f87b28a1d597ab.png
然后根据 onlyoffice/documentserver 镜像创建并启动容器,可以本身设置端口号,这里我设定的是9631:80 ,安装官网我这里的测试直接写 false
docker run -i -t -p 9631:80 --restart=always -e JWT_ENABLED=false onlyoffice/documentserver
接着在浏览器中输入localhost:9631 ,大概输入本机的 IP 地点,页面如下所示
https://i-blog.csdnimg.cn/direct/84ed285e0c8347228d7e8f362e50062c.png
直接点击下面的测试样例会出现 502 Bad Gateway 的错误提示,不用担心,只必要根据页面上的提示,把三个下令依次实行,之后再点击就可以正常查看,页面如下所示
https://i-blog.csdnimg.cn/direct/a1b7b9959f364b9e9f704c64a1b65d3d.png
可能出现的问题

不外这里点击Create new 下面的任何格式文件后,可能会出现下面的情况
https://i-blog.csdnimg.cn/direct/c66472c3cb424746bbf08ee3457fb069.png
原本我也被迷惑了,以为是 localhost 无法被辨认的问题,不外查询 onlyoffice 文档 后发现遗漏了下面内容:
https://i-blog.csdnimg.cn/direct/12895a143e6445f0a7aa629b71939fec.png
   /var是 Linux 体系中一个常用的目次,用于存放体系运行时变化的数据 。像日记文件、缓存文件、数据库文件、以及网站相关的数据(如证书)等都存放在/var目次下的子目次中。
也就是说必要在创建容器的时间举行一些设置,如许后续方便修改数据,比如文档增删改查、用户权限等。
   使用的方法是挂载-v,将主机上的文件与容器内的某个文件建立关联。
举例:团队协作修改文档,相当于团队成员有了一个公共的文件柜来存放共同编辑的文档。


[*]同步更新:团队成员 A 在容器中编辑文档时,容器内存储该文档的目次(比如为 /var/www/onlyoffice/Data )里的文档内容发生了改变;在挂载的作用下,主机上的目次 /app/onlyoffice/DocumentServer/data 目次里面对应的文档也同步更新;
[*]数据持久化:即使容器重新启动大概删除重建,文档数据已然保存在主机的/app/onlyoffice/DocumentServer/data 目次中;
[*]管理:团队管理员可以直接在主机上管理文档数据;
解决方法

文档提供的对应代码如下:
sudo docker run -i -t -d -p 80:80 --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_SECRET=my_jwt_secret onlyoffice/documentserver
看来大概是由于没有举行数据挂载。考虑到在终端中一行代码最方便,把代码修改一下,并且修改 JWT 为 false:
sudo docker run -i -t -d -p 80:80 --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_SECRET=false onlyoffice/documentserver
所以在启动的时间设置一下挂载即可。
留意:必要提前在 C 盘下面创建上面涉及到的几个文件夹,这是为了将容器中的文件与当地文件举行关联。此时就能正常创建新文件了,如下所示:
https://i-blog.csdnimg.cn/direct/323e189599e74a02a5cb0ed737a6d36a.png
可以查看新建的当地文件夹(本身手动建立大概使用mkdir 下令)。
https://i-blog.csdnimg.cn/direct/e6dd92085f2b4874b549626e12e0e926.png
不外上面这些只是测试用例,我们必要的是协作空间管理功能,也就是community server
Onlyoffice 之 CommunityServer

   这一部门在 OnlyOffice 官网没有展示,具体操作可以在GitHub 上的 Docker-CommunityServer 项目找到,所以下面步骤基本上是 README 文档上的内容。
当地创建文件夹

在主机上新建文件夹用来存放容器中的文件。涉及到 MySQL Server、Community Server、Document Server、Mail Server、Control Panel 五个部门。
https://i-blog.csdnimg.cn/direct/ac151f0d7f324702aa777653ff393f38.png
不嫌麻烦也可以本身手动创建,每个子目次就不展示了
https://i-blog.csdnimg.cn/direct/1e0cb793653f4d25a8e51d07ab1258c9.png
文件夹创建好之后,创建 onlyoffice 的网络:
sudo docker network create --driver bridge onlyoffice
   网络驱动为桥接模式,它会在体系中创建一个可用于 ONLYOFFICE 相关容器毗连的网络环境,以便差别的 ONLYOFFICE 组件(如 Community Server、Document Server、Mail Server 等)可以在同一个网络中举行通信。
可以使用下面的下令查看容器的网络模型,<容器ID>替换为对应容器的 ID:
docker inspect --format='{{.HostConfig.NetworkMode}}' <容器ID>
https://i-blog.csdnimg.cn/direct/1e21f670106e41a9881751908a3a50a0.png
图片内容具体寄义:


[*]第一个为 onlyoffice/documentserver 创建的容器,网络模式为 bridge
[*]第二个为 onlyoffice/communityserver 创建的容器,网络模式为 bridge
[*]第三个为 MySQL 创建的容器,网络模式为 onlyoffice
MySQL

将 MySQL 的配置信息(最大毗连数、数据包大小等)写入到并存储在/app/onlyoffice/mysql/conf.d/onlyoffice.cnf 文件中:
echo "
sql_mode = 'NO_ENGINE_SUBSTITUTION'
max_connections = 1000
max_allowed_packet = 1048576000
group_concat_max_len = 2048" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf
下面安装使用Community Server 和 Mail Server 所需条件:


[*]onlyoffice_user 是 Community Server 所必需的用户
[*]mail_admin 是在安装 Mail Server 的情况下所必需的用户
echo "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'my-secret-pw';
CREATE USER IF NOT EXISTS 'onlyoffice_user'@'%' IDENTIFIED WITH mysql_native_password BY 'onlyoffice_pass';
CREATE USER IF NOT EXISTS 'mail_admin'@'%' IDENTIFIED WITH mysql_native_password BY 'Isadmin123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'onlyoffice_user'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'mail_admin'@'%';
FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql
脚本的具体内容包括:


[*]修改 root 用户的暗码认证方式为 mysql_native_password 并设置暗码
[*]创建 onlyoffice_user 和 mail_admin 用户,同样使用 mysql_native_password 认证方式并设置相应暗码(Isadmin123)
[*]为 root、onlyoffice_user 和 mail_admin 用户授予对所有数据库和表的所有权限
[*]最后刷新权限
接着操作,创建 MySQL 容器:
sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server -v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d -v /app/onlyoffice/mysql/data:/var/lib/mysql -v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=onlyoffice mysql:8.0.29
Community Server

安装 Community Server:
sudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 --cgroupns=host -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw-e MYSQL_SERVER_DB_NAME=onlyoffice-e MYSQL_SERVER_HOST=onlyoffice-mysql-server -e MYSQL_SERVER_USER=onlyoffice_user -e MYSQL_SERVER_PASS=onlyoffice_pass -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt -v /sys/fs/cgroup:/sys/fs/cgroup:rw onlyoffice/communityserver
数据存储配置

下面是容器中数据存储的情况:


[*]/var/log/onlyoffice Community Server logs
[*]/var/www/onlyoffice/Data Community Server data
[*]/etc/letsencrypt information on generated certificates,是用于保障服务器通信安全的文件
下面是容器中的数据与当地数据举行关联的操作:
sudo docker run -i -t -d -p 80:80 --cgroupns=host -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt-v /sys/fs/cgroup:/sys/fs/cgroup:rw onlyoffice/communityserver
为了制止端口冲突可以用下面的下令替换上面的下令:
sudo docker run -i -t -d --privileged -p 8080:80 --cgroupns=host -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt-v /sys/fs/cgroup:/sys/fs/cgroup:rw onlyoffice/communityserver
别的还有一些额外的毗连
sudo docker run -i -t -d --privileged -p 80:80 -p 443:443 -p 5222:5222 --cgroupns=host -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt-v /sys/fs/cgroup:/sys/fs/cgroup:rw onlyoffice/communityserver
sudo docker run -i -t -d -p 8080:80 -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/rabbitmq:/var/lib/rabbitmq-v /app/onlyoffice/DocumentServer/redis:/var/lib/redis -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver
同时打开创建的 Community Server 的容器以及 Document Server 之后,页面如下所示:
https://i-blog.csdnimg.cn/direct/a9583c12c8814868bea5dff5d641761a.png
按照要求举行注册就可以得到下面的页面:
https://i-blog.csdnimg.cn/direct/6a91e0e2eb534ae7a47870753b7eb723.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 使用 Docker 当地部署 onlyoffice 协作空间(社区版)