【DOCKER】DOCKER容器部署的ONLYOFFICE 启用HTTPS

DOCKER容器部署的ONLYOFFICE 启用HTTPS

      • [1. 准备工作(备份与判断部署方式)](#1. 准备工作(备份与判断部署方式))
      • [2. 停止 Nginx 服务(可选)](#2. 停止 Nginx 服务(可选))
      • [3. 复制 HTTPS 模板覆盖原配置](#3. 复制 HTTPS 模板覆盖原配置)
      • [4. 修改 `ds.conf` 中的参数](#4. 修改 ds.conf 中的参数)
      • [5. 重启 ONLYOFFICE 容器](#5. 重启 ONLYOFFICE 容器)
      • [✅ 验证配置](#✅ 验证配置)

背景:已准备好私钥文件onlyoffice.key和证书文件onlyoffice.pem,onlyoffice通过docker容器部署


1. 准备工作(备份与判断部署方式)

在进行任何配置更改前,强烈建议先备份原有配置文件。

  1. 进入正在运行的 ONLYOFFICE 容器:

    bash 复制代码
    sudo docker exec -it <容器名称或ID> /bin/bash

    提示:可使用 sudo docker ps 查看容器信息。

  2. 在容器内备份原始 ds.conf:

    bash 复制代码
    cp /etc/onlyoffice/documentserver/nginx/ds.conf /etc/onlyoffice/documentserver/nginx/ds.conf.backup

2. 停止 Nginx 服务(可选)

可以不停止服务,后续直接重启,但为避免配置加载冲突,建议先停止:

bash 复制代码
sudo systemctl stop nginx

3. 复制 HTTPS 模板覆盖原配置

仅适用于 v5.3 及以上版本,使用 SSL 模板:

bash 复制代码
sudo cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf

其他版本请参考官方文档:Switching ONLYOFFICE Docs to HTTPS protocol


4. 修改 ds.conf 中的参数

使用编辑器打开配置文件:

bash 复制代码
sudo vim /etc/onlyoffice/documentserver/nginx/ds.conf

将以下 {``{...}} 占位符替换为实际值:

参数 说明
{``{SSL_CERTIFICATE_PATH}} SSL 证书路径(如 /etc/ssl/onlyoffice.crt)
{``{SSL_KEY_PATH}} 证书私钥路径(如 /etc/ssl/onlyoffice.key)
{``{SSL_VERIFY_CLIENT}} 是否启用客户端证书验证,可选:on、off、optional、optional_no_ca
{``{CA_CERTIFICATES_PATH}} 客户端 CA 证书路径(如需双向认证)
{``{ONLYOFFICE_HTTPS_HSTS_MAXAGE}} HSTS 最大有效期(默认 31536000,单位:秒)
{``{SSL_DHPARAM_PATH}} Diffie-Hellman 参数文件路径(增强密钥交换安全)

更多 Nginx SSL 参数配置可参考:Module ngx_http_ssl_module

例如:

bash 复制代码
include /etc/nginx/includes/http-common.conf;

## Normal HTTP host
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_name _;
  server_tokens off;
  set $secure_link_secret verysecretstring;

  ## Redirects all traffic to the HTTPS host
  root /nowhere; ## root doesn't have to be a valid path since we are redirecting
  rewrite ^ https://$host$request_uri? permanent;
}

#HTTP host for internal services
server {
  listen 127.0.0.1:80;
  listen [::1]:80;
  server_name localhost;
  server_tokens off;
  set $secure_link_secret verysecretstring;
  include /etc/nginx/includes/ds-common.conf;
  include /etc/nginx/includes/ds-docservice.conf;
}

## HTTPS host
server {
  listen 0.0.0.0:443 ssl http2;
  listen [::]:443 ssl default_server http2;
  server_tokens off;
  set $secure_link_secret verysecretstring;
  root /usr/share/nginx/html;
  ## Strong SSL Security
  ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
  ssl_certificate /var/www/onlyoffice/Data/certs/onlyoffice.pem;
  ssl_certificate_key /var/www/onlyoffice/Data/certs/onlyoffice.key;
  # Uncomment string below and specify the path to the file with the password if you use encrypted certificate key
  # ssl_password_file {{SSL_PASSWORD_PATH}};
  ssl_verify_client off;
  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
  ssl_protocols TLSv1.2;
  ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_prefer_server_ciphers   on;
  add_header Strict-Transport-Security max-age=31536000;
  add_header X-Content-Type-Options nosniff;
  include /etc/nginx/includes/ds-*.conf;

}

5. 重启 ONLYOFFICE 容器

  1. 停止ONLYOFFICE 容器:

    bash 复制代码
    sudo docker stop  <容器名称或ID>
  2. 删除ONLYOFFICE 容器:

    bash 复制代码
    sudo docker rm  <容器名称或ID>
  3. 启动ONLYOFFICE 容器:

    这条命令有很多参数可视情况自行选择,不要照搬

    bash 复制代码
    sudo docker run -itd -p 8081:80 -p 7443:443 -v /home/wst/docx_deploy/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /home/wst/docx_deploy/onlyoffice/DocumentServer/data/nginx/ds.conf:/etc/onlyoffice/documentserver/nginx/ds.conf --name onlyoffice-document-server-9.0.4.1  --privileged -e JWT_SECRET=my_jwt_secret --restart=always onlyoffice/documentserver:9.0.4.1

✅ 验证配置

  1. 在容器内检查 Nginx 配置语法:

    bash 复制代码
    sudo nginx -t
  2. 访问您的 ONLYOFFICE Docs 地址,确认已通过 https://ip:7443 正常访问,并且 HTTP 请求被重定向。


相关推荐
JavaPub-rodert7 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
人生匆匆8 小时前
docker部署ceph集群
ceph·docker·容器
张张123y11 小时前
后端第九课:部署上线(把你的 FastAPI 后端真正跑起来给别人用)
python·docker·部署·fastapi
AscendKing15 小时前
Docker Compose 一键部署 SkyWalking 10.2.0 + Elasticsearch8.11,分布式链路追踪完整实战
elasticsearch·docker·skywalking·链路追踪·微服务监控
励志师code15 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
闲云自留地16 小时前
Kubernetes 安装保姆级:关 swap、装 containerd、init 集群、calico 一篇通
容器·贪心算法·kubernetes
木雷坞16 小时前
Docker Compose部署Metabase:应用库隔离与日期筛选看板
运维·docker·容器
怒放的生命199116 小时前
前端项目 Docker 打包实操指南
前端·docker·容器
tedcloud12316 小时前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
古城小栈16 小时前
Docker Compose 云原生的底座
docker·云原生·容器