需要一个类似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
在设置界面左侧面板中选择
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
将复制的命令放到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
对应的也更新成对应的域名,如下图:
需要注意的是,如果防火墙是SonicWall的情况下,上面ONLYOFFICE配置是没办法保存成功的,需要对使用到的两个端口(8080和8180)进行Loopback的NAT设置,使跟服务器同在一个局域网的用户可以通过互联网IP来访问局域网内的服务器,放一个截图(图上的Translated Destination
是Ubuntu主机的IP地址也就是这里的192.168.1.11
,NextCloud Related Services
是8080
和8180
两个TCP端口),这里不赘述过程。
网友评论