在日常部署和维护在线协作平台时,ONLYOFFICE DocumentServer 作为一款强大的在线 Office 解决方案,因其优秀的兼容性和开放性被广泛采用。结合 Docker Compose,可以更灵活地控制服务的生命周期、挂载、更新及安全策略。以下记录一次优化配置和维护的实践过程。
💡 配置背景
在最初的配置中,DocumentServer 容器同时暴露了 HTTP(80)和 HTTPS(443)端口,并在容器内部配置证书。这种方式在单机场景下可以快速实现,但长期来看,证书管理和更新不够灵活。
随着需求的发展,改为由外部反向代理(如 Nginx)统一处理 HTTPS,加密与证书管理集中在代理层面,容器只需使用 HTTP。这样不仅减少了内部配置复杂度,也方便后续维护。
⚙️ 优化前配置示例
services:
onlyoffice:
image: onlyoffice/documentserver
container_name: onlyoffice
restart: always
ports:
- "8080:80"
- "8443:443"
volumes:
- /path/to/logs:/var/log/onlyoffice
- /path/to/data:/var/www/onlyoffice/Data
- /path/to/cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files
- /path/to/public:/var/www/onlyoffice/documentserver-example/public/files
- /path/to/fonts:/usr/share/fonts
在该配置中,容器内已经开启 HTTPS(8443),同时还挂载了示例文件和自定义字体目录,配置较为繁琐。
✅ 优化后的配置
为了精简容器内部配置,只保留 HTTP(示例端口 8080),并将证书管理交由反向代理处理,配置文件进行了调整:
services:
onlyoffice:
image: onlyoffice/documentserver
container_name: onlyoffice
restart: always
ports:
- "8080:80"
# - "8443:443"
volumes:
- /path/to/logs:/var/log/onlyoffice
- /path/to/data:/var/www/onlyoffice/Data
- /path/to/cache:/var/lib/onlyoffice/documentserver/App_Data/cache/files
# - /path/to/public:/var/www/onlyoffice/documentserver-example/public/files
# - /path/to/fonts:/usr/share/fonts
注:如果不需要示例文件和自定义字体,可将对应挂载路径注释或删除,进一步精简。
🌐 Nginx 反向代理配置
在主机或外部服务器上,通过 Nginx 实现 HTTPS,示例配置如下(域名为示例域名 docs.example.com):
server {
listen 443 ssl http2;
server_name docs.example.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://127.0.0.1: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 https;
}
}
server {
listen 80;
server_name docs.example.com;
return 301 https://$host$request_uri;
}
这种方式下,所有对外访问流量都通过 Nginx 加密,内部容器专注于文档处理逻辑,安全性与维护性均得到了提高。
🛠️ 容器生命周期管理
为了更方便地重启和更新容器,使用以下命令组合管理服务:
docker-compose down && docker-compose up -d
此操作会先停止并删除容器,再基于最新的配置文件重新创建并启动服务。挂载的日志和数据目录会被保留,确保业务数据安全。
🔎 总结
本次优化实践体现了「将加密与证书管理集中到代理层」的思路,简化了容器配置,提升了后期维护和安全策略的灵活性。对于需要长期稳定运行的文档协作系统而言,这是一种更推荐、更符合生产环境要求的方式。