本文主要介绍在ubuntu server 22.04 系统上使用docker安装onlyoffice 8.0同时添加中文字体、字号方法。
1、硬件要求
CPU:双核2 GHz或更高
内存:最少4GB
硬盘:至少40 GB可用空间
Swap file:至少4 GB,但取决于主机操作系统,越多越好。
操作系统内核:内核版本为3.10或更高版本的amd64 Linux 发行版。
其他要求:
Docker:Docker 团队支持的任何版本
2、DOCKER环境安装
ubuntu安装docker可以参考这篇文章:ubuntu server 22.04 安装docker、docker-compose
3、安装onlyoffice 8.0
创建工作目录:
mkdir -p /data/onlyoffice
mkdir -p /data/onlyoffice/config
cd /data/onlyoffice/
vi docker-compose-oo.yml
这里直接上onlyoffice的docker-compose文件,大家可以参考:
version: "3.7"
services:onlyoffice:# 定义主机名container_name: onlyoffice# 使用的镜像image: onlyoffice/documentserver:8.0.1# 容器的映射端口ports:- 36080:80- 36090:443# 定义挂载点,这里都是一些常用的目录和文件volumes:- /data/onlyoffice/documentserver/logs:/var/log/onlyoffice- /data/onlyoffice/documentserver/data:/var/www/onlyoffice/Data- /data/onlyoffice/documentserver/lib:/var/lib/onlyoffice- /data/onlyoffice/documentserver/db:/var/lib/postgresql# !!!注意:这是onlyoffice的配置目录,第一次启动的时候要注释掉!!!# - /data/onlyoffice/config/documentserver:/etc/onlyoffice/documentserver# docker 重启后,容器自启动restart: "on-failure:10"environment:# 是否启用jwt,不启用,生产环境有条件还是启用的好- JWT_ENABLED=false- JWT_SECRET=secret
启动onlyoffice容器:
docker-compose -f docker-compose-oo.yml up -d
启动后,将容器内目录:/etc/onlyoffice/documentserver 内容拷贝到宿主机的 /data/onlyoffice/config 目录下,方便以后进行onlyoffice的配置修改。执行复制命令:
cd /data/onlyoffice/config/
docker cp onlyoffice:/etc/onlyoffice/documentserver .
将docker-compose-oo.yml文件中的第19行,即下方的这一行的注释取消:
# - /data/onlyoffice/config/documentserver:/etc/onlyoffice/documentserver
修改后保存,然后删除原有容器,重新创建新容器。
重新启动后,查看宿主机配置目录:/data/onlyoffice/config/documentserver,如下图:其中的local.json文件就是我们后期经常用的配置文件,其他文件不需要有改动。
到此,onlyoffice安装成功,可以访问下地址试试:http://安装主机IP:36080,会打开如下网页:
如果要体验在线编辑word、excel等,可以执行onlyoffice的demo脚本进行体验,可以按上图中的第一步、第二步在服务器执行onlyoffice的demo脚本命令(直接复制执行即可),执行完成后即可点击按钮进行体验。
注意:使用docker搭建的onlyoffice服务,默认不支持内网ip编辑文件,此时创建文件进行编辑会报错,需要修改local.json配置。
4、修改配置
onlyoffice默认不支持内网访问,需要修改local.json文件:
注意:rabbitmq、storage配置项不要修改
# 备份原文件
mv local.json local.json.bak
vi local.json
写入新文件内容,如下:
{"services": {"CoAuthoring": {"server": {"savetimeoutdelay": 500},"requestDefaults": {"rejectUnauthorized": false},"sql": {"type": "postgres","dbHost": "localhost","dbPort": "5432","dbName": "onlyoffice","dbUser": "onlyoffice","dbPass": "onlyoffice"},"request-filtering-agent": {"allowPrivateIPAddress": true,"allowMetaIPAddress": true},"autoAssembly": {"enable": true,"interval": "3s"},"token": {"enable": {"request": {"inbox": false,"outbox": false},"browser": false},"inbox": {"header": "Authorization","inBody": false},"outbox": {"header": "Authorization","inBody": false}},"secret": {"inbox": {"string": "secret"},"outbox": {"string": "secret"},"session": {"string": "secret"}}}},"rabbitmq": {"url": "amqp://guest:guest@localhost"},"storage": {"fs": {"secretString": "O7BwzFsUAfBnAIMGBA1O"}},"wopi": {"enable": false,"dummy": {"enable": true,"sampleFilePath": ""}},"FileConverter": {"converter": {"maxDownloadBytes": 524288000,"inputLimits": [{"type": "docx;dotx;docm;dotm","zip": {"uncompressed": "500MB","template": "*.xml"}}]}}
}
保存文件,重启容器,即可访问编辑文件成功。如下图:
5、添加中文字体
- 准备中文字体
先准备好自己需要安装的字体,可以直接从windows系统C:\Windows\Fonts
下选择拷贝,也可以参考这个网址,热心人已经给整理好了,地址:onlyoffice-chinese-fonts - 删除onlyoffice自带字体
先要进入容器删除onlyoffice原有字体,注意:如果只是添加字体,且想使用原有字体的话那么就不用删除原有字体
# 进入容器
sudo docker exec -it onlyoffice bash
# 进入容器后执行
cd /usr/share/fonts/
rm -rf *
cd /var/www/onlyoffice/documentserver/core-fonts/
rm -rf *
- 添加新字体
用docker cp
命令将下载的字体都放到容器内的/usr/share/fonts
目录下。 - 生成字体
进入容器,执行命令:/usr/bin/documentserver-generate-allfonts.sh
等待执行完成,然后退出容器,重启容器即可。
6、添加中文字号
注意:onlyoffice 8.0 好像不用添加中文字号,服务已经默认自带中文字号,大家可以打开一个新的文件进行确认下。
- 将容器中js文件复制到宿主机
docker cp onlyoffice:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/app.js app.js
- 修改js内容,不要用编辑器,使用vim
在app.js中查找{value:8,displayValue:"8"}
,在前面添加:
{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:"八号"},
- 将修改后的js覆盖到容器中,容器中如果有app.js.gz文件的话要删掉它
docker cp app.js onlyoffice:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/
- 本地清缓存刷新即可