本地用docker搭建onlyoffice,只能局域网访问,想在外网访问,遇到了一些困难,在这里记录一下

刚开始采用本地用docker搭建onlyoffice,电脑使用macmini,用nginx代理,期望使用ipv6实现外网访问,但是一直不成功,总结应该是docker搭建onlyoffice,docker或者是onlyoffice对ipv6支持不太友好,或者docker内部的nginx代理的问题,后续会持续关注,看问题在哪里

现在使用window搭建onlyoffice,nginx代理,能够实现外网访问,下面是具体搭建过程

操作系统及依赖软件:

操作系统: 64-bit Windows Server 2012 或者更高版本(window10也可以)

Erlang: 24.2 版本(window必须要装上,否则安装onlyoffice失败,一直卡住不动)

RabbitMQ:3.9.12 版本(docker安装)

docker run -id --name=rabbitmq -v /usr/local/rabbitmq:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=123456. rabbitmq:management

PostgreSQL: 12.9 版本或者更高(docker安装)

docker run -id --name=postgresql -v /usr/local/postgresql:/var/lib/postgresql/data --restart=always -p 5432:5432 -e POSTGRES_PASSWORD=Cao123456. -e LANG=C.UTF-8 postgres

创建onlyoffice库表

Erlang安装

本地搭建onlyoffice,并在外网访问_外网访问

本地搭建onlyoffice,并在外网访问_nginx_02

本地搭建onlyoffice,并在外网访问_外网访问_03

本地搭建onlyoffice,并在外网访问_nginx_04

本地搭建onlyoffice,并在外网访问_外网访问_05


安装ONLYOFFICE

ONLYOFFICE Docs程序默认是使用的 80端口,如果80端口被占用,需要采用命令的方式指定端口来安装。

本地搭建onlyoffice,并在外网访问_onlyoffice_06

还是桌面快捷键“Win+R”,输入“cmd”,确定,打开终端。

本地搭建onlyoffice,并在外网访问_docker_07

找到ONLYOFFICE Docs程序,鼠标右键“属性”,复制它的位置路径。

本地搭建onlyoffice,并在外网访问_docker_08

在终端输入“cd+上步复制的ONLYOFFICE Docs程序路径”,回车。

本地搭建onlyoffice,并在外网访问_nginx_09

接着输入命令“onlyoffice-documentserver.exe /DS_PORT=XXXX”并回车。“XXXX”就是我们指定的端口,请注意这个端口号只要没有被占用,任何端口都可以。

本地搭建onlyoffice,并在外网访问_onlyoffice_10

然后点击“Next”开始安装。

本地搭建onlyoffice,并在外网访问_nginx_11

本地搭建onlyoffice,并在外网访问_外网访问_12

本地搭建onlyoffice,并在外网访问_nginx_13

本地搭建onlyoffice,并在外网访问_外网访问_14

本地搭建onlyoffice,并在外网访问_docker_15

安装ONLYOFFICE Docs程序所有过程都是默认,一直“Next”直至安装完成!

访问 IP:端口/welcome验证是否安装成功。

本地搭建onlyoffice,并在外网访问_docker_16

1.2.6、关闭JWT

7.2版本开始默认是开启JWT的,需要关闭JWT

修改local.json

C:\Program Files\ONLYOFFICE\DocumentServer\config\local.json
"token": {
                "enable": {
                    "browser": false,
                    "request": {
                        "inbox": false,
                        "outbox": false
                    }
                }
            }


重启onlyoffice服务

本地搭建onlyoffice,并在外网访问_nginx_17

现在安装必要的完毕了

然后就是nginx

下面是配置文件

upstream docservice {
      server 127.0.0.1;
    }

    map $http_host $this_host {
        "" $host;
        default $http_host;
    }

    map $http_x_forwarded_proto $the_scheme {
         default $http_x_forwarded_proto;
         "" $scheme;
    }

    map $http_x_forwarded_host $the_host {
        default $http_x_forwarded_host;
        "" $this_host;
    }

    map $http_upgrade $proxy_connection {
      default upgrade;
      "" close;
    }

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $proxy_connection;
    proxy_set_header X-Forwarded-Host $the_host;
    proxy_set_header X-Forwarded-Proto $the_scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


    server {
      listen 0.0.0.0:9999;
      listen [::]:9999 default_server;
      server_tokens off;

      location / {
        proxy_pass http://docservice;
        proxy_http_version 1.1;
      }
    }

现在就可以实现外网访问了。