Nextcloud Docker 部署 OnlyOffice 并使用 Apache 反向代理 HTTPS

最近给自己的 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 云盘。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇