一、环境准备与前提条件
1.1 服务器环境要求
OnlyOffice Docker部署需满足基础硬件条件:建议至少2核CPU、4GB内存及20GB存储空间。操作系统需支持Docker运行环境,推荐使用Ubuntu 20.04 LTS或CentOS 8,因其稳定性和社区支持度较高。需确保系统已安装Docker CE(社区版)及Docker Compose工具,可通过docker --version和docker-compose --version命令验证安装状态。
1.2 域名与DNS解析配置
域名是外部访问的关键入口。需提前注册合法域名(如office.example.com),并在域名注册商后台配置DNS解析。具体步骤为:添加A记录指向服务器公网IP,TTL值建议设置为300秒以加速生效。若使用子域名(如docs.example.com),需在DNS管理中添加CNAME记录指向主域名或直接解析至服务器IP。
1.3 网络与防火墙设置
服务器需开放80(HTTP)、443(HTTPS)端口以支持Web访问,同时开放Docker默认的8080端口(或自定义端口)用于容器间通信。防火墙配置示例(Ubuntu UFW):
sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw allow 8080/tcpsudo ufw enable
若使用云服务器,需在安全组规则中同步放行上述端口。
二、Docker部署OnlyOffice核心步骤
2.1 Docker与Docker Compose安装
以Ubuntu为例,安装步骤如下:
# 卸载旧版本(如有)sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common# 添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加稳定版仓库sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 安装Docker CEsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io# 安装Docker Composesudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
2.2 使用Docker Compose部署OnlyOffice
创建docker-compose.yml文件,配置如下:
version: '3'services:onlyoffice:image: onlyoffice/documentservercontainer_name: onlyofficerestart: alwaysenvironment:- JWT_ENABLED=true- JWT_SECRET=your_secret_key # 用于API认证volumes:- ./onlyoffice/data:/var/www/onlyoffice/Data- ./onlyoffice/logs:/var/log/onlyoffice- ./onlyoffice/fonts:/usr/share/fonts/truetype/customports:- "8080:80" # 容器80端口映射至宿主机8080
执行部署命令:
mkdir -p ./onlyoffice/{data,logs,fonts}docker-compose up -d
通过docker ps验证容器状态,确保onlyoffice容器显示为Up。
三、域名访问配置与反向代理
3.1 Nginx反向代理配置
安装Nginx并配置虚拟主机:
sudo apt-get install nginx
编辑Nginx配置文件(如/etc/nginx/conf.d/onlyoffice.conf):
server {listen 80;server_name office.example.com;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;}}
重启Nginx生效:
sudo systemctl restart nginx
3.2 HTTPS证书配置(Let’s Encrypt)
使用Certbot免费获取SSL证书:
sudo apt-get install certbot python3-certbot-nginxsudo certbot --nginx -d office.example.com
选择自动重定向HTTP至HTTPS,Certbot将自动修改Nginx配置。证书有效期为90天,可通过certbot renew --dry-run测试续期流程。
四、高级配置与安全优化
4.1 JWT认证配置
在docker-compose.yml中启用JWT后,需在应用层(如Nextcloud集成)配置相同的JWT_SECRET以实现安全API调用。修改环境变量:
environment:- JWT_ENABLED=true- JWT_SECRET=strong_password_123- JWT_HEADER=Authorization
4.2 性能调优参数
针对高并发场景,可调整Docker内存限制及Nginx工作进程数:
services:onlyoffice:deploy:resources:limits:memory: 2G
Nginx配置优化示例:
worker_processes auto;worker_rlimit_nofile 65535;events {worker_connections 4096;}
4.3 备份与恢复策略
定期备份数据卷:
docker run --rm --volumes-from onlyoffice -v $(pwd)/backup:/backup alpine tar czf /backup/onlyoffice_backup.tar.gz /var/www/onlyoffice/Data
恢复时解压至对应目录即可。
五、常见问题与排查
5.1 502错误排查
- 检查Docker容器日志:
docker logs onlyoffice - 验证Nginx代理配置是否正确
- 确认防火墙未阻止8080端口
5.2 字体缺失问题
将自定义字体放入./onlyoffice/fonts目录后,需执行:
docker exec onlyoffice fc-cache -fv
5.3 移动端访问异常
确保Nginx配置中包含WebSocket支持:
location /web-apps/apps/api/documents/api.js/websocket {proxy_pass http://localhost:8080;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
通过上述步骤,开发者可完成OnlyOffice的Docker化部署及域名访问配置。实际生产环境中,建议结合CI/CD流程实现自动化部署,并定期更新Docker镜像以获取最新功能与安全补丁。