使用Docker Compose一键部署OnlyOffice的完整指南与配置解析
OnlyOffice Document Server是一款强大的在线办公套件,支持文档、表格和演示文稿的实时协同编辑。将其部署在自有服务器上,不仅可以保障数据安全,还能与NextCloud、OwnCloud等网盘系统无缝集成。本文将详细介绍如何使用Docker Compose实现OnlyOffice的一键部署,并对其核心配置进行深度解析。
一、部署前置准备
在开始部署之前,请确保您的服务器已经安装了以下环境:
Docker引擎:推荐使用20.10及以上版本。
Docker Compose:推荐使用V2版本(即使用
docker compose命令)。系统资源:OnlyOffice对内存要求较高,建议服务器至少配备2GB以上的RAM。
二、编写Docker Compose配置文件
在服务器上创建一个工作目录,例如onlyoffice-docker,并在该目录下新建docker-compose.yml文件。以下是一个经过生产环境验证的完整配置:
version: '3.8' services: onlyoffice-documentserver: image: onlyoffice/documentserver:latest container_name: onlyoffice-server restart: always environment: - JWT_ENABLED=true - JWT_SECRET=your_strong_jwt_secret_here ports: - "8080:80" - "8443:443" volumes: - onlyoffice_data:/var/www/onlyoffice/Data - onlyoffice_logs:/var/log/onlyoffice - onlyoffice_lib:/var/lib/onlyoffice - onlyoffice_db:/var/lib/postgresql volumes: onlyoffice_data: onlyoffice_logs: onlyoffice_lib: onlyoffice_db:
三、核心配置解析
上述配置文件虽然精简,但包含了运行OnlyOffice所需的关键要素,下面逐一进行解析:
1. 镜像与容器管理
image:使用官方提供的
onlyoffice/documentserver:latest镜像,包含了Document Server、Node.js、PostgreSQL等所有依赖。container_name:固定容器名称,方便后续日志查看与管理。
restart: always:确保服务器重启或容器异常退出时,OnlyOffice能够自动拉起。
2. 安全与JWT认证
从7.2版本开始,OnlyOffice默认强制开启JWT(JSON Web Token)签名验证,以防止恶意请求伪造。在生产环境中,绝对不要关闭JWT。
JWT_ENABLED:设置为
true开启令牌验证。JWT_SECRET:自定义一个高强度密钥,集成到第三方网盘(如NextCloud)时,需要在此处以及网盘设置中填入相同的密钥。
3. 端口映射
"8080:80":将容器内部的80端口(HTTP)映射到宿主机的8080端口。
"8443:443":将容器内部的443端口(HTTPS)映射到宿主机的8443端口。如果您直接通过宿主机提供HTTPS服务,需要将证书挂载至数据卷中。
4. 数据持久化(Volumes)
为了避免容器重建后数据丢失,必须将关键目录映射到Docker命名卷或宿主机目录:
/var/www/onlyoffice/Data:存放证书文件、自定义字体及插件等。
/var/log/onlyoffice:日志文件,排查错误必备。
/var/lib/onlyoffice:缓存及运行库文件。
/var/lib/postgresql:数据库文件,存储文档状态信息。
2>四、启动与管理服务
在docker-compose.yml所在目录下,执行以下命令启动服务:
# 后台启动服务 docker compose up -d # 查看启动日志,确认各组件是否正常启动 docker compose logs -f
首次启动时,容器内部需要初始化数据库并启动多项服务,可能需要1-2分钟。当日志输出DocService is running时,说明服务已启动成功。
其他常用管理命令:
# 停止服务 docker compose down # 重启服务 docker compose restart # 更新镜像至最新版 docker compose pull docker compose up -d
五、配置Nginx反向代理与SSL
在生产环境中,通常需要使用Nginx作为反向代理,并配置SSL证书以支持HTTPS访问。OnlyOffice的协同编辑功能(WebSocket)强依赖HTTPS环境。以下为Nginx配置示例:
server {
listen 443 ssl;
server_name www.ipipp.com;
ssl_certificate /etc/ssl/certs/your_cert.pem;
ssl_certificate_key /etc/ssl/private/your_key.key;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}在上述配置中,我们使用了www.ipipp.com作为访问域名。配置完成后,通过nginx -t测试并nginx -s reload重载配置即可。
六、测试验证
服务部署完成后,在浏览器中访问您的域名或http://服务器IP:8080,如果看到OnlyOffice的默认欢迎页面,说明Document Server已成功运行。
为了进一步验证编辑器是否能正常加载文档,可以编写一个简单的HTML测试页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>OnlyOffice Test</title>
<script type="text/javascript" src="https://www.ipipp.com/web-apps/apps/api/documents/api.js"></script>
</head>
<body>
<div id="placeholder" style="width: 100%; height: 600px;"></div>
<script>
new DocsAPI.DocEditor("placeholder", {
"document": {
"fileType": "docx",
"key": "testkey123456",
"title": "Test Document.docx",
"url": "https://www.ipipp.com/sample.docx"
},
"documentType": "word",
"editorConfig": {
"callbackUrl": "https://www.ipipp.com/callback"
}
});
</script>
</body>
</html>请注意,测试页面中的url必须是一个可直接访问的有效文档链接,callbackUrl为您后端处理文档保存的回调地址。如果一切配置正确,页面将加载出OnlyOffice的编辑器界面。
七、总结
通过Docker Compose部署OnlyOffice不仅极大地简化了安装流程,还使得后续的维护与升级变得可控。在实际生产环境中,请务必关注JWT密钥的保密性、数据卷的定期备份以及SSL证书的有效期。掌握这些配置原理后,您就可以轻松将OnlyOffice集成到您现有的业务系统中,打造专属的在线协作办公平台。