美文网首页
通过Docker部署NextCloud和ONLYOFFICE以实

通过Docker部署NextCloud和ONLYOFFICE以实

作者: 达哥傻乐 | 来源:发表于2024-10-17 16:40 被阅读0次

    需要一个类似Dropbox类似的共享服务器,经过分析后选择使用NextCloud,直接在Ubuntu服务器上通过Docker来实现,同时希望提供MS Office文档的在线编辑功能,故同时给它集成ONLYOFFICE。

    1. 安装NextCloud

    这里假定NextCloud服务使用8080端口,然后数据卷的名称为nextcloud_data,容器名称为tstnextcloud,容器每次都自动重启,命令如下:

    #拉取镜像
    sudo docker pull nextcloud
    #创建容器
    sudo docker run -d --name tstnextcloud -p 8080:80 -v nextcloud_data:/var/www/html nextcloud
    

    安装完成确认容器tstnextcloud启动了后,可以通过如下URL访问nextcloud,并按提示来进行初始化,假设我们的Docker服务器的IP为192.168.1.11
    http://192.168.1.11:8080

    2. NextCloud的LDAP集成的配置

    这里假定NextCloud通过与Windows AD服务器192.168.1.12进行LDAP集成,以使它能使用Windows AD的用户账号进行登录
    2.1 登录后点击右上角用户图标,然后选择Apps

    图1. 打开Apps界面
    在设置界面左侧面板中选择App bundles,然后找到LDAP user and group backend并点击Enable或者Download and enable按钮下载(如果还没有的话)并启用它,使它成下图所示可以关闭的Disable状态:
    图2. 启用LDAP user and group backend
    2.2 登录后点击右上角用户图标,然后选择Administration Setting再在左侧面板中找到LDAP/AD integration来配置LDAP的集成
    图3. 进入管理设置
    2.3 填入服务器的相关信息,Windows服务器的地址或者名称、端口号(可以点Detect Port按钮进行自动检测,默认是389)、凭据、以及Base DN(比如:DC=mydomain,DC=local)等然后点Continue按钮进行一下步配置。
    图4. 配置LDAP服务器
    2.4 用户页面的设置,可以指定仅搜索user类型,然后指定特定的安全组即可,只有选定的安全组中的用户可以登录NextCloud,如下图所示:
    图5. 配置需要引入的用户
    2.5 配置登录的时候使用的用户名等,这里我希望用户用Windows用户名和其邮箱地址均可登录 ,故选择了两个,可酌情选择:
    图6. 指定可以用于登录的用户的凭据ID
    2.6 指定会用于NextCloud的安全组的导入,导入后可以用于权限等的控制(可选,如果不在Windows AD上控制权限,这里可以忽略)
    图7. 指定从LDAP导入的安全组
    如此操作后,如果没有问题,在NextCloud的用户界面中一会后即可看到相应导入的用户和组,并可进行登录了。

    3. 安装ONLYOFFICE提供MS Office文档的在线编辑功能

    这里还是通过Docker的方式安装,容器命名为tstonlyoffice,使用端口号为8180,并使容器每次自动重启,命令如下:

    #拉取镜像
    sudo docker pull onlyoffice/documentserver:latest
    #创建容器
    sudo docker run -d --name tstonlyoffice -p 8180:80 --restart=always onlyoffice/documentserver
    

    容器启动后,可以通过下面URL查看并复制方框里的获取密钥的命令:
    http://192.168.1.11:8180

    图8. 查看并复制方框中的取得密钥的命令
    将复制的命令放到Ubuntu主机上运行它,会显示一个密钥字串,复制它以进行下一步在NextCloud中的设置。

    4. 在NextCloud中配置ONLYOFFICE

    4.1 按上面2.1的方式进入安装启用ONLYOFFICE
    4.2 按上面2.2的方式找到ONLYOFFICE并点击进行设置,将前面步骤复制的密钥粘贴到Secret key文本框里,把上面的ONLYOFFICE的服务器地址http://192.168.1.11:8180填到ONLYOFFICE Docs address文本框里,然后点击保存即可。

    5. 将服务对互联网进行开放

    通过上面的安装配置后,整个系统对于局域网内已经具备完全的服务能力了,接下来介绍如何将之以域名连接到互联网上提供服务,假定保持端口号不变。
    假定要将服务以域名lib.mydomain.com的域名对外提供服务,NextCloud端口依然保持8080,而ONLYOFFICE端口依然是8180
    5.1 在路由器上进行NAT配置,将这两个端口映射到内网服务器上(TP-LINK路由器上可能叫虚拟服务器)
    5.2 我们现在要编辑NextCloud容器上主目录下config\config.php的配置,使这个域名得到允许。
    编辑这个文件的办法有几个,一个是通过docker cp命令把这个文件复制出来,编辑后再复制回去,这里就不介绍了。
    下面介绍一个不需要复制文件的方法:
    5.2.1 运行下面命令,找到我们上面第1步里指定的数据卷nextcloud_data在Ubuntu主机里的位置:

    sudo docker volume inspect nextcloud_data
    

    上面命令会显示nextcloud_data在主机里的具体位置:

    [
        {
            "CreatedAt": "2024-10-14T03:39:40Z",
            "Driver": "local",
            "Labels": null,
            "Mountpoint": "/var/lib/docker/volumes/nextcloud_data/_data",
            "Name": "nextcloud_data",
            "Options": null,
            "Scope": "local"
        }
    ]
    

    在主机上用cd命令切换到上面的Mountpoint里指定的路径/var/lib/docker/volumes/nextcloud_data/_data

    cd /var/lib/docker/volumes/nextcloud_data/_data
    

    现在可以使用各种方式编辑当前目录下config目录里的config.php文件了,这里我用vi来编辑,也可以用nano等,甚至可以使用1panel等Linux控制面板来直接编辑。

    vi config/config.php
    

    打开文件后找到下面的小节:

      'trusted_domains' =>
      array (
              0 => '192.168.1.11:8080',
      ),
    

    给它加上一段关于域名的配置:

      'trusted_domains' =>
      array (
              0 => '192.168.1.11:8080',
              1 => 'lib.mydomain.com:8080',
      ),
    

    重启NextCloud容器后即可生效,最后还要按上面第4步的方法,把ONLYOFFICE Docs address对应的也更新成对应的域名,如下图:

    图9. 更新ONLYOFFICE服务器地址

    需要注意的是,如果防火墙是SonicWall的情况下,上面ONLYOFFICE配置是没办法保存成功的,需要对使用到的两个端口(8080和8180)进行Loopback的NAT设置,使跟服务器同在一个局域网的用户可以通过互联网IP来访问局域网内的服务器,放一个截图(图上的Translated Destination是Ubuntu主机的IP地址也就是这里的192.168.1.11NextCloud Related Services80808180两个TCP端口),这里不赘述过程。

    图10. SonicWall的Loopback NAT设置

    相关文章

      网友评论

          本文标题:通过Docker部署NextCloud和ONLYOFFICE以实

          本文链接:https://www.haomeiwen.com/subject/dpifdjtx.html