OnlyOffice Docker部署与域名访问配置全攻略

一、环境准备与前提条件

1.1 服务器环境要求

OnlyOffice Docker部署需满足基础硬件条件:建议至少2核CPU、4GB内存及20GB存储空间。操作系统需支持Docker运行环境,推荐使用Ubuntu 20.04 LTS或CentOS 8,因其稳定性和社区支持度较高。需确保系统已安装Docker CE(社区版)及Docker Compose工具,可通过docker --versiondocker-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):

  1. sudo ufw allow 80/tcp
  2. sudo ufw allow 443/tcp
  3. sudo ufw allow 8080/tcp
  4. sudo ufw enable

若使用云服务器,需在安全组规则中同步放行上述端口。

二、Docker部署OnlyOffice核心步骤

2.1 Docker与Docker Compose安装

以Ubuntu为例,安装步骤如下:

  1. # 卸载旧版本(如有)
  2. sudo apt-get remove docker docker-engine docker.io containerd runc
  3. # 安装依赖
  4. sudo apt-get update
  5. sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  6. # 添加Docker官方GPG密钥
  7. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  8. # 添加稳定版仓库
  9. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  10. # 安装Docker CE
  11. sudo apt-get update
  12. sudo apt-get install docker-ce docker-ce-cli containerd.io
  13. # 安装Docker Compose
  14. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  15. sudo chmod +x /usr/local/bin/docker-compose

2.2 使用Docker Compose部署OnlyOffice

创建docker-compose.yml文件,配置如下:

  1. version: '3'
  2. services:
  3. onlyoffice:
  4. image: onlyoffice/documentserver
  5. container_name: onlyoffice
  6. restart: always
  7. environment:
  8. - JWT_ENABLED=true
  9. - JWT_SECRET=your_secret_key # 用于API认证
  10. volumes:
  11. - ./onlyoffice/data:/var/www/onlyoffice/Data
  12. - ./onlyoffice/logs:/var/log/onlyoffice
  13. - ./onlyoffice/fonts:/usr/share/fonts/truetype/custom
  14. ports:
  15. - "8080:80" # 容器80端口映射至宿主机8080

执行部署命令:

  1. mkdir -p ./onlyoffice/{data,logs,fonts}
  2. docker-compose up -d

通过docker ps验证容器状态,确保onlyoffice容器显示为Up

三、域名访问配置与反向代理

3.1 Nginx反向代理配置

安装Nginx并配置虚拟主机:

  1. sudo apt-get install nginx

编辑Nginx配置文件(如/etc/nginx/conf.d/onlyoffice.conf):

  1. server {
  2. listen 80;
  3. server_name office.example.com;
  4. location / {
  5. proxy_pass http://localhost:8080;
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Real-IP $remote_addr;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. }
  10. }

重启Nginx生效:

  1. sudo systemctl restart nginx

3.2 HTTPS证书配置(Let’s Encrypt)

使用Certbot免费获取SSL证书:

  1. sudo apt-get install certbot python3-certbot-nginx
  2. sudo 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调用。修改环境变量:

  1. environment:
  2. - JWT_ENABLED=true
  3. - JWT_SECRET=strong_password_123
  4. - JWT_HEADER=Authorization

4.2 性能调优参数

针对高并发场景,可调整Docker内存限制及Nginx工作进程数:

  1. services:
  2. onlyoffice:
  3. deploy:
  4. resources:
  5. limits:
  6. memory: 2G

Nginx配置优化示例:

  1. worker_processes auto;
  2. worker_rlimit_nofile 65535;
  3. events {
  4. worker_connections 4096;
  5. }

4.3 备份与恢复策略

定期备份数据卷:

  1. 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目录后,需执行:

  1. docker exec onlyoffice fc-cache -fv

5.3 移动端访问异常

确保Nginx配置中包含WebSocket支持:

  1. location /web-apps/apps/api/documents/api.js/websocket {
  2. proxy_pass http://localhost:8080;
  3. proxy_http_version 1.1;
  4. proxy_set_header Upgrade $http_upgrade;
  5. proxy_set_header Connection "upgrade";
  6. }

通过上述步骤,开发者可完成OnlyOffice的Docker化部署及域名访问配置。实际生产环境中,建议结合CI/CD流程实现自动化部署,并定期更新Docker镜像以获取最新功能与安全补丁。