最近给自己的 Nextcloud 配置了 OnlyOffice 在线编辑功能,记录一下完整过程。
环境:
- Nextcloud 已经部署完成
- Nextcloud 使用 HTTPS
- OnlyOffice 使用 Docker 单独部署
- Apache 作为反向代理
一、Docker 部署 OnlyOffice
新建目录:
mkdir onlyoffice
cd onlyoffice
创建 docker-compose.yml:
services:
onlyoffice:
image: onlyoffice/documentserver
container_name: onlyoffice
restart: always
ports:
- "8082:80"
environment:
- JWT_ENABLED=true
- JWT_SECRET=123456
volumes:
- ./data:/var/www/onlyoffice/Data
- ./logs:/var/log/onlyoffice
- ./lib:/var/lib/onlyoffice
- ./db:/var/lib/postgresql
启动:
docker compose up -d
查看是否成功:
http://服务器IP:8082
如果能看到 ONLYOFFICE 页面,说明部署成功。
二、为什么不能直接 HTTP
如果 Nextcloud 使用 HTTPS,而 OnlyOffice 使用 HTTP,会出现:
不允许混合活动内容,请使用HTTPS连接ONLYOFFICE Docs
原因:
浏览器禁止 HTTPS 页面加载 HTTP 内容。
因此:
Nextcloud 是 HTTPS
↓
OnlyOffice 也必须 HTTPS
最简单的方式就是:
Apache 反向代理 + SSL
三、Apache 反向代理 OnlyOffice
假设:
OnlyOffice 本地端口:8082
域名:office.example.com
1. 启用 Apache 模块
Ubuntu / Debian:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod rewrite
sudo systemctl restart apache2
2. 新建站点配置
创建:
sudo vim /etc/apache2/sites-available/onlyoffice.conf
写入:
<VirtualHost *:80>
ServerName office.example.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8082/
ProxyPassReverse / http://127.0.0.1:8082/
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8082/$1 [P,L]
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Ssl "on"
LimitRequestBody 1073741824
</VirtualHost>
3. 启用站点
sudo a2ensite onlyoffice.conf
测试配置:
sudo apachectl configtest
如果显示:
Syntax OK
重新加载:
sudo systemctl reload apache2
四、申请 HTTPS 证书
安装 certbot:
sudo apt install certbot python3-certbot-apache
申请证书:
sudo certbot --apache -d office.example.com
成功后即可通过:
https://office.example.com
访问 OnlyOffice。
五、Nextcloud 配置 OnlyOffice
进入:
设置 → 管理 → ONLYOFFICE
填写:
Document Editing Service address:
https://office.example.com
Secret key:
123456
保存即可。
六、常见问题
1. Invalid command ‘RequestHeader’
原因:
Apache 未启用 headers 模块
解决:
sudo a2enmod headers
sudo systemctl restart apache2
2. 不允许混合活动内容
原因:
Nextcloud HTTPS
OnlyOffice HTTP
解决:
给 OnlyOffice 配 HTTPS
3. Nextcloud 无法连接 OnlyOffice
不要填写:
http://127.0.0.1:8082
因为:
如果 Nextcloud 是 Docker 容器:
127.0.0.1 指向的是容器自己
推荐填写:
https://office.example.com
七、最终效果
实现:
- Nextcloud 在线编辑 Word
- 在线编辑 Excel
- 在线编辑 PPT
- 多人协同编辑
- HTTPS 安全访问
- Docker 独立部署
整体体验已经非常接近私有 Office 云盘。









