快速本地化部署 OnlyOffice服务 ( Linux+Docker)


文章目录

  • 一、OnlyOffice介绍📖
  • 二、集成OnlyOffice🧩
    • 2.1 环境准备🖥️
    • 2.2 搜索镜像
    • 2.3 拉取镜像
    • 2.4 查看镜像
    • 2.5 创建容器
    • 2.6 进入容器配置
    • 2.7 重启服务
    • 2.8 添加字体字号
    • 2.9 测试OnlyOffice服务
  • 三、在线预览office文档
  • 四、Cpolar内网穿透


在这里插入图片描述


一、OnlyOffice介绍📖

💎OnlyOffice 是由 Ascensio System SIA 开发的一套综合办公套件。提供了文档、表格和演示文稿的编辑功能。它包括桌面版、在线版和移动版,支持多平台使用。主要功能和特点如下:

  • 文档编辑器:支持各种文档格式,包括DOCXPDF等,提供丰富的文本编辑工具。

  • 电子表格:具备复杂的公式、数据透视表和图表功能,支持 XLSX 等格式。

  • 演示文稿:提供多种模板和动画效果,支持 PPTX 等格式。

  • 团队协作:基于房间的在线协作平台,提供文档评论、版本历史和权限管理功能。

  • 集成:可以与其他第三方应用集成,如NextcloudOwnCloud 等,提高工作效率。

  • 安全性:提供 数据加密权限控制 ,确保文档安全。

OnlyOffice 适用于个人、企业和教育机构,帮助用户在不同设备和平台上高效处理各种办公任务。

二、集成OnlyOffice🧩

本篇文章讲解如何使用 Docker 在本地 Linux 服务器上安装 ONLYOFFICE ,并结合 cpolar 内网穿透实现公网访问本地部署的文档编辑器与远程协作。

Community Edition 允许您在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台或其他流行系统集成。它是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑器,完全兼容 Office Open XML 格式:.docx.xlsx.pptx,并支持实时协作编辑。

2.1 环境准备🖥️

本次演示环境:

  • 主机:Windows系统10/11
  • 虚拟机:VMware Workstation ProCentOs 7.9
    • VMware 安装教程请移步 VMware Workstation Pro安装教程
  • 容器:Docker
    • Docker 教程请移步 Docker 极简教程 快速入门
    • Docker 镜像加速请移步 Linux虚拟机 Docker 配置阿里云镜像加速
  • 远程工具:Xshell8( 远程ssh )

2.2 搜索镜像

我这里用的是 onlyoffice/documentserver:7.3 版本的

docker search onlyoffice

2.3 拉取镜像

🎯注意:如果因为网络原因拉取不到镜像,请参考 Linux虚拟机 Docker 配置阿里云镜像加速 。

docker hub下载 OnlyOffice 镜像 。

sudo docker pull onlyoffice/documentserver:7.3

2.4 查看镜像

 docker images

🎯提示:镜像文件还是蛮大的,虚拟机分配内存要给足!!!

在这里插入图片描述

2.5 创建容器

  1. 🎯将本机的 9000端口 映射到 docker80端 口上,访问时通过服务器IP:9000 访问

  2. 并且用 -v 将本机机 /home/onlyOffice 文件夹挂载到 docker/var/www/onlyoffice/documentserver/web-apps/wsData 文件下,后续直接通过 http 请求读取对应的文件夹。JWT_SECRET 填写自己定义的密钥,JWT_ENABLED 设置为 true 开启 token 验证。

sudo docker run -i -t -d -p 9000:80 -v /home/myOnlyOffice:/var/www/onlyoffice/documentserver/web-apps/wsData --env JWT_SECRET=VI71S3cGtXg96HgFWzQhblz1KwMc1Jzk -e JWT_ENABLED=false onlyoffice/documentserver:7.3

🔌提示:设置成开机启动:

docker update --restart=always 容器id/名称

在这里插入图片描述

2.6 进入容器配置

#进入容器
docker exec -it 容器名 bash
#找到配置文件local.json
cd /etc/onlyoffice/documentserver/
#如果不能编辑,需要安装vim命令
apt-get update     
apt-get install vim

2.7 重启服务

supervisorctl restart all

2.8 添加字体字号

  1. ❌删除原有字体。
#切换目录
cd /usr/share/fonts/ 
rm -rf *
#切换目录
cd /var/www/onlyoffice/documentserver/core-fonts/
rm -rf *
  1. windows 系统中找到字体文件夹,压缩 上传到服务器下。
    通过 docker 命令 拷贝
    docker cp /home/fonts/ 容器id: /usr/share/fonts/
cd /usr/share/fonts/font
cp * ../
ls
rm -rf font
  1. ✒️添加字号,下载 app.js 文件到本地编辑。
sudo docker cp cf321c512a6a:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/app.js /Users/jianchenghou/uploadjar
  1. 🗳️本地编辑,把以下内容复制到 {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:"八号"},
  1. 将修改好的 app.js 拷贝到容器中
    docker cp app.js cf321c512a6a:/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/
#进入容器
docker exec -it cf321c512a6a /bin/bash
cd /usr/bin
#执行:
./documentserver-generate-allfonts.sh 

至此,服务已搭建完毕,可以运行本地地址查看服务运行效果。

2.9 测试OnlyOffice服务

访问网址:192.168.93.128:9000,需要以 IP加端口 方式访问,不能用 localhost 访问。

在这里插入图片描述
看到这个画面就说明服务已经成功运行了。

三、在线预览office文档

onlyoffice 服务已经创建完成了,接下来我们需要验货了,简简单单创建个测试 html 项目。

服务端地址:
http://192.168.93.128:9000/web-apps/apps/api/documents/api.js

<!DOCTYPE html>
<html lang="zh">

	<head>
		<meta charset="UTF-8">
		<title>测试onlyoffice在线预览文件功能</title>
		<script type="text/javascript" src="http://192.168.93.128:9000/web-apps/apps/api/documents/api.js"></script>
		<style>
			 
			html {
				height: 100%;
				width: 100%;
				padding: 0;
				margin: 0;
			}

			body {
				height: 100%;
				width: 100%;
				padding: 0;
				margin: 0;
			}
		</style>
	</head>

	<body class="full-screen">
		<div id="placeholder"></div>

		<script language="javascript" type="text/javascript">
			//        var docEditor = new DocsAPI.DocEditor("placeholder", {

			//            "document": {
			//                "fileType": "docx",
			//                "title": "2024xxxx移动云应用合同.docx",
			//                //地址必须文件服务器能访问到
			//                "url": "https://minio.nbweixin.cn/private/xxx/file/20241212/2024%E5%8D%97%E4%BA%AC%E5%85%86%E4%BA%BF%E7%A7%BB%E5%8A%A8%E4%BA%91%E5%BA%94%E7%94%A8%E5%90%88%E5%90%8C-1733983002.docx"
			//            },
			//            });

			var docEditor = new DocsAPI.DocEditor("placeholder", {

				"document": {
					"fileType": "docx",
					//每次打开需要生成不同的key
					"key": "253566000196390912",
					"title": "2024xxx云应用合同.docx",
					//地址必须文件服务器能访问到
					"url": "https://minio.nbweixin.cn/private/xxx/file/20241212/2024%E5%8D%97%E4%BA%AC%E5%85%86%E4%BA%BF%E7%A7%BB%E5%8A%A8%E4%BA%91%E5%BA%94%E7%94%A8%E5%90%88%E5%90%8C-1733983002.docx"
				},
				"editorConfig": {
					//回调地址,当点击保存时触发,wjbh为数据库的文件标识,可以在回调方法中做业务处理,回调程序的服务器必须能访问到文件服务器
					"callbackUrl": "http://192.168.1.180:8000/word/callbackSave?wjbh=253566000196390912",
					"lang": "zh-CN", // 中文
					 "mode": "view",//查看模式
					//"mode": "edit", //编辑模式
					"customization": { //定制部分允许自定义编辑器界面,使其看起来像您的其他产品,并更改是否存在其他按钮,链接,更改徽标和编辑者所有者详细信息。
						"help": false, //定义是显示还是隐藏“帮助”菜单按钮。默认值为true。
						"hideRightMenu": false, //定义在第一次加载时是显示还是隐藏右侧菜单。默认值为false。
						"autosave": false, //定义是启用还是禁用“自动保存”菜单选项。请注意,如果您在菜单中更改此选项,它将被保存到浏览器的localStorage中。默认值为true。
						"forcesave": true, //定义保存按钮是否显示默认false
						"chat": false, //定义“聊天”菜单按钮是显示还是隐藏;请注意,如果您隐藏“聊天”按钮,则相应的聊天功能也将被禁用。默认值为true。
						"commentAuthorOnly": false, //定义用户是否只能编辑和删除他的评论。默认值为false。
						"comments": true, //定义是显示还是隐藏“注释”菜单按钮;请注意,如果您隐藏“评论”按钮,则相应的评论功能将仅可用于查看,评论的添加和编辑将不可用。默认值为true。
						"compactHeader": false, //定义是否将菜单栏放在在徽标旁边使界面更加紧凑默认false。
						"compactToolbar": false, //定义显示的顶部工具栏类型是完整(false)还是紧凑true。默认值为false 多余菜单将在右侧折叠点击显示。
						"compatibleFeatures": false, //定义仅与OOXML格式兼容的功能的使用。例如,不要在整个文档上使用注释。默认值为false。
						"macros": true, //定义是否将运行文档宏以及可用的宏设置。默认值为true。
						"macrosMode": "warn", //定义是否将运行文档宏。可以采用以下值: disable -根本不运行;enable -自动运行所有宏;warn -警告宏并请求允许运行。默认值为original。
						"plugins": false, //定义是否将启动插件并可用。默认值为true。
						"showReviewChanges": false, //定义在加载编辑器时是否自动显示或隐藏审阅更改面板。默认值为false。
						"spellcheck": true, //定义在加载编辑器时是否自动打开或关闭拼写检查器。拼写检查器仅适用于文档编辑器和演示文稿编辑器。默认值为true。
						"toolbarNoTabs": false, //定义是突出显示顶部工具栏选项卡样式。默认值为false。
						"unit": "cm", //定义在标尺和对话框中使用的度量单位。可以采用以下值:cm -厘米,pt-点,inch -英寸。默认值为厘米(cm)。
						"zoom": 100, //定义以百分比为单位的文档显示缩放值。可以取大于0的值。对于文本文档和演示文稿,可以将此参数设置为-1(使文档适合页面选项)或-2(使文档页面宽度适合编辑器页面)。默认值为100。
						"goback": { //定义“打开文件位置”菜单按钮和右上角按钮的设置。该对象具有以下参数:
							"blank": true, //在新的浏览器选项卡/窗口(如果值设置为true)或当前选项卡(如果值设置为false)中打开网站。默认值为true,
							"requestClose": false, //定义如果单击“打开文件位置”按钮,则调用events.onRequestClose事件,而不是打开浏览器选项卡或窗口。默认值为false,
							"text": "Open file location", //将在“打开文件位置”菜单按钮和右上角按钮(即,而不是“转到文档”)上显示的文本,
							"url": "https://www.baidu.com" //单击“打开文件位置”菜单按钮时将打开的网站地址的绝对URL ,
						}
					},
					"user": { //用户信息
						"id": "111111", //用户ID
						"name": "张三" //用户全名称
					},
					// "documentType": "cell", //表格
					  "documentType": "word",//文档
					// "documentType": "slide",//ppt演示
					// "type": "desktop"
				}
			});
		</script>
	</body>
	<style type="text/css">
		.full-screen {
			height: 100%;
			overflow: hidden;
		}
	</style>

</html>

运行结果:
在这里插入图片描述

四、Cpolar内网穿透

Cpolar 内网穿透工具 教程请移步:Cpolar 内网穿透工具 。

至此,就大功告成了。


在这里插入图片描述
觉得有帮助就点个赞赞吧 💕💕💕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937935.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字产业化和产业数字化到底是什么?

“数字产业化”和“产业数字化”在很多官方文件和领导人讲话中都是成对出现的&#xff0c;这两个术语看起来非常相似&#xff0c;但它们作为数字经济的两个重要组成部分&#xff0c;既有联系又有区别。 在谈数字产业化和产业数字化之前&#xff0c;我这里需要先给大家介绍一个概…

RabbitMQ中的Work Queues模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信和解耦系统的关键组件之一。RabbitMQ 是一个广泛使用的开源消息代理软件&#xff0c;支持多种消息传递模式。其中&#xff0c;Work Queues&#xff08;工作队列&#xff09;模式是一…

数据结构(二叉树)

前言&#xff1a; 在数据结构那片浩瀚无垠、仿若神秘宇宙的天地里&#xff0c;二叉树宛如一颗散发着独特光辉、极为耀眼的星辰。它就像一位技艺精湛的建筑师&#xff0c;运用独特的二叉分支结构&#xff0c;精心构建起层次分明、秩序井然的数据组织 “大厦”。根节点仿若大厦的…

React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等

须知 1Next.js 官网(英文)Next.js by Vercel - The React Framework2Next.js 文档(中文)简介 | Next.js 中文文档3React官网(中文)https://react.docschina.org/learn4Ant Design组件总览组件总览 - Ant Design5tailwindcss类名大全 官网英Justify Content - TailwindCS…

【MySQL数据库】Ubuntu下的mysql

目录 1&#xff0c;安装mysql数据库 2&#xff0c;mysql默认安装路径 3&#xff0c;my.cnf配置文件 4&#xff0c;mysql运用的相关指令及说明 5&#xff0c;数据库、表的备份和恢复 mysql是一套给我们提供数据存取的&#xff0c;更加有利于管理数据的服务的网络程序。下面…

elasticsearch设置密码访问

1 用户认证介绍 默认ES是没有设置用户认证访问的&#xff0c;所以每次访问时&#xff0c;直接调相关API就能查询和写入数据。现在做一个认证&#xff0c;只有通过认证的用户才能访问和操作ES。 2 开启加密设置 1.生成证书文件 /usr/share/elasticsearch/bin/elasticsearch-…

深入理解 CSS 文本换行: overflow-wrap 和 word-break

前言 正常情况下&#xff0c;在固定宽度的盒子中的中文会自动换行。但是&#xff0c;当遇到非常长的英文单词或者很长的 URL 时&#xff0c;文本可能就不会自动换行&#xff0c;而会溢出所在容器。幸运的是&#xff0c;CSS 为我们提供了一些和文本换行相关的属性&#xff1b;今…

Java 垃圾回收机制详解

1 垃圾回收的概念 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;是自动管理内存的一种机制&#xff0c;用于释放不再使用的对象所占用的内存空间&#xff0c;防止内存溢出。垃圾回收器通过识别和回收那些已经死亡或长时间未使用的对象&#xff0c;来优化…

RabbitMQ全局流量控制

RabbitMQ全局流量控制 流控机制流控是对什么进行控制&#xff1f;rabbitmq进程邮箱流控机制是什么&#xff1f; 流控原理流控原理流程 流控状态显示流控对象流控机制对象主要进程各进程状态情形分析 性能提升提升队列性能方式 当消息积压时&#xff0c;消息会进入到队列深处&am…

Jetpack Compose赋能:以速破局,高效打造非凡应用

Android Compose 是谷歌推出的一种现代化 UI 框架&#xff0c;基于 Kotlin 编程语言&#xff0c;旨在简化和加速 Android 应用开发。它以声明式编程为核心&#xff0c;与传统的 View 系统相比&#xff0c;Compose 提供了更直观、更简洁的开发体验。以下是对 Android Compose 的…

40 基于单片机的温湿度检测判断系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用dht11温湿度传感器检测温湿度&#xff0c; 通过lcd1602显示屏各个参数&#xff0c;四个按键分别可以增加温湿度的阈值&#xff0c; 如果超过阈值&#xff0c;则…

【cocos creator】按照行列数创建格子布局

调用 this.creatLayout(5, 5, this.boxNode, this.rootNode) //限制数量 this.creatLayout(5, 5, this.boxNode, this.rootNode, cc.v3(0, 0), 10, 10, 23) /*** 创建格子布局* param xCount 列数量* param yCount 行数量* param prefab 预制体* param root 根节点* param root…

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构&#xff0c;可方便地与其他FMC板卡实现高速互联&#xff0c;可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…

前端性能优化(理念篇)

前端性能优化&#xff08;理念篇&#xff09; 前言 其实前端性能优化&#xff0c;按照我的理解&#xff0c;首先你公司的硬件条件跟其它资源跟的上&#xff0c;比如服务器资源&#xff0c;宽带怎么样&#xff0c;还有后端接口响应如何&#xff0c;这些资源都具备后&#xff0…

Y3编辑器文档4:触发器1(界面及使用简介、变量作用域、入门案例)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 触发器复用 二、触发器的多层结构2.1 子触发器&#xff08;在游戏内对新的事件进行注册&#xff09;2.2 触发器变量作用域 三、入门案例3.1 使用触发器实现瞬间移动3.…

3D相框案例讲解(详细)

前言 通过现阶段的学习&#xff0c;我们已经掌握了HTML&#xff0c;CSS和JS部分的相关知识点&#xff0c;现在让我们通过一篇案例&#xff0c;来巩固我们近期所学的知识点。 详细视频讲解戳这里 任务一 了解目标案例样式 1.1了解案例 3D相框 1.2 分析案例 首先我们看到一个…

网络安全漏洞挖掘之漏洞SSRF

SSRF简介 SSRF(Server-Side Request Forgery:服务器端请求伪造是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它相连而与外…

简单的Java小项目

学生选课系统 在控制台输入输出信息&#xff1a; 在eclipse上面的超级简单文件结构&#xff1a; Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…

VPN模式

拓扑结构 实验图&#xff1a; 路由器router 配置 DHCP配置 需要右键激活 路由器项配置网关 dns项配置ip DNS服务配置 正向区域 选择不允许动态更新 反向区域 创建主机 正向 验证是否创建成功 反向查找区域 输入网段 使用默认名称---不允许动态更新 KALI机的验证 web服务…