环境:
win11实体机 hyper-v安装虚拟机 Ubuntu 22.04,然后在Ubuntu 中直接部署 Seafile +docker版的onlyoffice。
安装docker版的onlyoffice
下载最新版镜像
sudo docker pull onlyoffice/documentserver
一、解决每次启动都要修改jwt秘钥问题
启动OnlyOffice容器
sudo docker run -i -t -d \
--name OnlyOffice \
--restart=always \
--env JWT_SECRET=你的秘钥 \
-e export LANG="zh_CN.UTF-8" \
-e TZ=UTC+8 \
-p 9000:80 \
-p 9443:443 \
-v /etc/localtime:/etc/localtime \
-v /opt/onlyoffice/log:/var/log/onlyoffice \
-v /opt/onlyoffice/data:/var/www/onlyoffice/Data \
-v /opt/onlyoffice/lib:/var/lib/onlyoffice \
-v /opt/onlyoffice/db:/var/lib/postgresql \
-d onlyoffice/documentserver
修改/opt/seafile/conf/seahub_settings.py文件ONLYOFFICE_JWT_SECRET = ‘你们的秘钥’
这个秘钥你要是不用知道怎么来的可以在用之前的秘钥,两个地方统一即可。我的是svM7pctcd7ODIN2tpYII
二、给OnlyOffice容器安装中文字体
进入容器
sudo docker exec -it OnlyOffice /bin/bash
(容器内操作)删除自带字体 (此处自行选择删除)
cd /usr/share/fonts/
rm -rf *
到宿主机下向docker内复制字体宿主机/opt/cnfonts/目录内存放中文常用字体
sudo docker cp OnlyOffice:/usr/share/fonts/ /opt/cnfonts/
再次进入容器并进入/usr/share/fonts/目录
sudo docker exec -it OnlyOffice /bin/bash
fc-list :lang=zh
fc-cache -fv
返回Ubuntu 重启OnlyOffice容器
sudo docker restart OnlyOffice
清除浏览器缓存,刷新页面,就可以看见中文字体了
三、解决office文档本地化显示问题
打开office文档时经常是汉字下面带着红杠杠,应该是拼写检查的提示,很不爽,每次都需要手动在“设置文本语言”和“设置文档语言”改成中文才能正常,无意之中翻看onlyoffice的api说明,经过尝试后发现可以如下解决。
使用editplus之类的编辑软件打开安装目录/seahub/seahub/templates/view_file_onlyoffice.html文件
var config = {
"type": window.screen.width < 992 ? 'mobile' : 'desktop',
"document": {
"fileType": "{{ file_type }}",
"key": "{{ doc_key }}",
"title": "{{ doc_title|escapejs }}",
"url": "{{ doc_url }}",
"permissions": {
"download": {% if can_download %}true{% else %}false{% endif %},
"edit": {% if can_edit %}true{% else %}false{% endif %},
"print": {% if can_download %}true{% else %}false{% endif %},
"review": true
}
},
"documentType": "{{ document_type }}", // 'text' | 'spreadsheet' | 'presentation',
{% if onlyoffice_jwt_token %}
"token": "{{ onlyoffice_jwt_token }}",
{% endif %}
"editorConfig": {
"callbackUrl": "{{ callback_url }}",
"lang": "{{ LANGUAGE_CODE }}",
//下面添加location和region两个参数,可以直接赋值"zh"或"zh-CN",为了国际化参照lang参数直接使用Seafile的LANGUAGE_CODE变量,
//需要强调的是,以上两个参数设置"zh-cn”时显示“中文(简体)”,设置为"zh"时显示“中文(中华人民共和国)”
"location": "{{ LANGUAGE_CODE }}",
"region": "{{ LANGUAGE_CODE }}",
"mode": {% if can_edit %}"edit"{% else %}"view"{% endif %},
"customization": {
"forcesave": {% if onlyoffice_force_save %}true{% else %}false{% endif %},
{% if not request.user.is_authenticated %}
"anonymous": {
"request": true,
"label": "Guest"
},
{% endif %}
},
{% if request.user.is_authenticated %}
"user": {
"id": "{{ username|escapejs }}",
"name": "{{ username|email2nickname|escapejs }}"
}
{% endif %}
}
};
var docEditor = new DocsAPI.DocEditor("placeholder", config);
修改完成后替换回去,删除浏览器缓存即可。