onlyoffice docker部署 配置域名访问

4,149 阅读2分钟

onlyoffice 是一款自由的办公套件生产力软件和具有协作功能的软件套件。它具有文本文档、电子表格、演示文稿、表格和、PDF、在线编辑器以及基于房间的协作平台。

分享一次onlyoffice部署经过

# 拉取镜像
onlyoffice/documentserver:latest

编写docker-compose 配置文件

services:
  onlyoffice:
    image: onlyoffice/documentserver
    container_name: onlyoffice
    ports:
      - 8011:443
      - 8012:80
    volumes:
      - ./onlyoffice/logs:/var/log/onlyoffice 
      - ./onlyoffice/data:/var/www/onlyoffice/Data
      - ./onlyoffice/lib:/var/lib/onlyoffice
      - ./onlyoffice/db:/var/lib/postgresql
    restart: always
    environment:
      - JWT_ENABLED=false

启动容器

docker-compose up -d

配置nginx域名访问

普通代理

配置好站点后添加如下反向代理

location ^~ /{
    proxy_pass http://127.0.0.1:8012/; 
    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 REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Strict-Transport-Security "max-age=31536000"; 
    add_header Cache-Control no-cache; 
}

直接访问https://你的域名/welcome/即可

跨路径代理

即使用https://域名/自定义路径/访问,

修改容器中的nginx 配置文件

修改容器中的 /etc/onlyoffice/documentserver/nginx/includes/ds-docservice.conf

# 第2-3行 
#script caching protection
rewrite ^(?<cache>\/web-apps\/apps\/(?!api\/).*)$ $the_scheme://$the_host$the_prefix/onlyoffice/8.0.1-31$cache redirect;


# 第69-71行
# 此处和nginx 配置的子路径保持一致
location ^~ /onlyoffice {
  proxy_pass http://docservice;
}

修改后可将容器报保存为镜像、或将配置文件映射到主机进行修改方便后续使用。

修改域名反向代理

# onlyoffice 可替换为自己想要的路径
location ^~ /onlyoffice {
    proxy_pass http://127.0.0.1:8012/; 
    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 REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Strict-Transport-Security "max-age=31536000"; 
    add_header Cache-Control no-cache; 
}
# 缓存代理
location ^~ /cache/ {
    proxy_pass http://localhost:8012/cache/; 
    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 REMOTE-HOST $remote_addr; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    add_header X-Cache $upstream_cache_status; 
    add_header Strict-Transport-Security "max-age=31536000"; 
    add_header Cache-Control no-cache; 
}

验证

访问https://域名/onlyoffice/welcome/ 如图:

image.png

预览验证


<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="https://xxxx.com/onlyoffice/web-apps/apps/api/documents/api.js"></script>
    <style>
        body {
            width: 100%;
            height: 90vh;
            display: flex;
            flex-direction: column;
        }
        
        #placeholder {
            width: 100%;
            height: 100vh;
        }
    </style>
</head>
 
<body>
    <div id="placeholder" class="nav" style="width: 100%; height: 100vh;"></div>
 
</body>
<script>
 
    var onDocumentReady = function () {
        console.log("文档准备好了");
    };
 
 
    var config = {
        "documentType": "slide", 
        "historyList": {
            "history": [],
            "currentVersion": "1"
        },
        "document": {
            "title": "f864d53d6fe14f1d9f00fa9eb4ffa000.pptx",
            "url": "https://xxxx.com/uploads/data/20240408/f864d53d6fe14f1d9f00fa9eb4ffa000.pptx"         
            "attachId": "xxxxxxxxxx",
            "fileType": "pptx",
            // "key": "aHR0cHM6Ly9hcGkucxasadasdasd="
        },
        "editorConfig": {
            "customization": {
                "autosave": false,
                "compactToolbar": true,
                "forcesave": true,
                "toolbarNoTabs": true,
                "help": false,
                "compactHeader": true,
                "hideRightMenu": true,
            },
            "mode": "edit",
            "callbackUrl": "",
            // 回调地址
            //"callbackUrl": "https://xxxx.com/endpoint/onlyoffice/save",
            "lang": "zh-CN",
            "user": {
                "name": "tx",
                "id": "84"
            }
        }
    };
 
 
    var docEditor;
    initDocEditor();
    
 
    /**
     * 初始化编辑器
     */
    function initDocEditor() {
        // 初始化配置
        config['events'] = {
            onDocumentReady: onDocumentReady
        };
        docEditor = new DocsAPI.DocEditor("placeholder", config);
    }
 
 
</script>
 
</html>

使用浏览器打开HTML文件即可看到预览成功 如图:

image.png 若对你有帮助请给个赞