通过Docker部署NextCloud和ONLYOFFICE以实

2024-10-17  本文已影响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设置
上一篇 下一篇

猜你喜欢

热点阅读