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

news2024/12/18 10:39:05

文章目录

  • 一、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 内网穿透工具 。

至此,就大功告成了。


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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leecode刷题C++之形成目标字符串需要的最少字符串数①

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下&#xff1a; class Solution { public:int minValidStrings(vector<string>& words, string target) {auto prefix_function [](const string& word, const string& target) -> vector<…

51c嵌入式~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/11529950 一、不同的电平信号的MCU怎么通信 “电平转换”电路 ​ 先说一说这个电路的用途&#xff1a;当两个MCU在不同的工作电压下工作&#xff08;如MCU1 工作电压5V&#xff1b;MCU2 工作电压3.3V&#xff09;&#xf…

2024年第十五届蓝桥杯青少组C++国赛—割点

割点 题目描述 一张棋盘由n行 m 列的网格矩阵组成&#xff0c;每个网格中最多放一颗棋子。当前棋盘上已有若干棋子。所有水平方向或竖直方向上相邻的棋子属于同一连通块。 现给定棋盘上所有棋子的位置&#xff0c;如果要使棋盘上出现两个及以上的棋子连通块&#xff0c;请问…

Java线程池解读

Java 线程池是一个提供多线程管理和调度的工具&#xff0c;通常用来处理多个并发任务。线程池能够帮助有效管理线程的创建、调度、执行和销毁&#xff0c;避免频繁的线程创建和销毁&#xff0c;提高系统性能。 前言 Java 线程池是面试中的常客&#xff0c;面试官经常会问线程…

如何为IntelliJ IDEA配置JVM参数

在使用IntelliJ IDEA进行Java开发时&#xff0c;合理配置JVM参数对于优化项目性能和资源管理至关重要。IntelliJ IDEA提供了两种方便的方式来设置JVM参数&#xff0c;以确保你的应用程序能够在最佳状态下运行。本文将详细介绍这两种方法&#xff1a;通过工具栏编辑配置和通过服…

【CC2530开发基础篇】继电器模块使用

一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开&#xff0c;深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件&#xff0c;广泛用于自动化系统中&#xff0c;用于控制大功率负载的开关操作。在本实验中&#xff0c;将通过GPIO口…

通过解调使用正则化相位跟踪技术进行相位解包裹

1. 绪论 光学计量学通常使用光学干涉仪来测量各种物理量。1,2 根据应用的不同&#xff0c;可以使用多种类型的干涉仪&#xff0c;但它们的共同目标是产生一个由被测物理量调制的条纹图案。使用这种光束编码程序可以检测到的物理量范围非常广&#xff1a;深度测量、应变分析、温…

数字图像处理技术期末复习

1. 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&#xff1f; 题目&#xff1a; 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&a…

Elasticsearch 架构及 Lucene 索引结构原理入门

文章目录 Elasticsearch 整体架构Lucene 索引结构Lucene 倒排索引核心原理倒排索引倒排表&#xff08;Posting List&#xff09; Elasticsearch 整体架构 一个 ES Index 在集群模式下&#xff0c;有多个Node&#xff08;节点&#xff09;组成&#xff0c;每个节点就是ES的 inst…

人脸检测的若干思考!!!

1.目前主要有人脸检测方法分类&#xff1f; 主要包含两类&#xff1a;传统人脸检测算法和基于深度学习的人脸检测算法。 传统人脸检测算法主要可以分为4类&#xff1a; 基于知识、模型、特征和外观的人脸检测方法&#xff1b; 基于深度学习的方法&#xff1a;基于级联CNN的人脸…

突破时间与空间限制的富媒体百宝箱——智能工具箱:让云上内容生产更easy

“这是你的同款日常吗&#xff1f;老是在赶deadline&#xff0c;苦练PS还未出师&#xff0c;premiere、达芬奇真的好难&#xff0c;学python脑容量确实不够~打工人太难了~~” 来试试智能工具箱吧&#xff01;即来即用&#xff0c;一键实现办公自由。图片工具、视频工具、音频工…

el-table打印PDF预览,表头错位的解决方案

文章目录 背景与需求需求分析解决方案方案一&#xff1a;vue-print-nb插件安装引入使用 方案二安装使用 方案三 总结 背景与需求 本例以vue2项目为例&#xff0c;vue3与react等同理。 有个项目需要打印的功能&#xff0c;网页使用vue2写的&#xff0c;主体内容为表格el-table&a…

【算法day16】二叉树:搜索二叉树的修剪与构建

题目引用 修剪二叉搜索树将有序数组转换为二叉搜索树把二叉搜索树转换为累加树 1. 修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在…

java中File类

1、介绍 File类定义了一些与平台无关的方法来操作文件&#xff0c;可以通过调用File类中的方法&#xff0c;实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息&#xff0c;如文件所在的目录、文件长度、文件读写权限等。数据流可以将数据写入到文…

金碟中间件-AAS-V10.0安装

金蝶中间件AAS-V10.0 AAS-V10.0安装 1.解压AAS-v10.0安装包 unzip AAS-V10.zip2.更新license.xml cd /root/ApusicAS/aas# 这里要将license复制到该路径 [rootvdb1 aas]# ls bin docs jmods lib modules templates config domains …

易语言OCR证件照文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

Haproxy 高可用代理原理配置(Haproxy High Availability Proxy Principle Configuration)

Haproxy 高可用代理原理 简介 Haproxy是一个开源的高可用性负载均衡解决方案&#xff0c;提供基于TCP和HTTP的应用代理服务。它支持高并发连接&#xff0c;能够处理大量的请求&#xff0c;特别适合高负载站点和需要会话保持的应用场景。 主要特点 ‌高可用性‌&#xff1a;…

企业微信可信域名个人配置方法,个人添加企业微信可信IP方法5.0版本,无论是否企业认证都通用。

自动22年11月份开始更新企业微信可信域名配置方法后&#xff0c;先后阿里&#xff08;22年11月&#xff09;1.0可信域名配置方法、腾讯&#xff08;2022年12月14日&#xff09;2.0版本可信域名配置方法、百度&#xff08;2023年1月27日&#xff09;、华为&#xff08;2023年2月…

Endnote | 查看文献所在分组

软件版本&#xff1a;Endnote X8 第一种方式&#xff1a; 在文献上右键——记录摘要&#xff0c;即可在弹出页面上看到自定义和智能组的分组情况。 第二种方式&#xff1a; 在菜单栏点击文献——记录摘要&#xff0c;也可以查看分组情况。 注&#xff1a; 新版本的endnote软件…

力扣-图论-15【算法学习day.65】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…