Nextcloud私有云盘-重新定义云存储体验
1. 什么是Nextcloud
Nextcloud是一个开源的云存储和协作平台,旨在为个人用户、企业和团队提供安全、隐私保护的数据存储和共享解决方案。它允许您在不同设备之间同步、共享文件,提供了强大的协作工具和应用生态系统。
- 功能特点
-
文件同步与分享:通过Nextcloud,您可以轻松地在不同设备之间同步和共享文件。无论是照片、视频、文档还是其他文件类型,都可以方便地访问和共享。
-
安全与隐私:Nextcloud致力于保护您的数据安全和隐私。它提供端到端加密功能,确保您的数据在传输和存储过程中始终受到保护。
-
团队协作:Nextcloud不仅适用于个人用户,也是团队协作的理想选择。通过共享文件夹、日历、联系人等功能,团队成员可以轻松地共享和协作,提高工作效率。
-
丰富的应用生态系统:Nextcloud拥有丰富的应用生态系统,涵盖了各种实用工具和功能,如日历、联系人管理、文件同步等,满足您不同的需求。
-
灵活的部署:Nextcloud可以在各种环境中部署,包括自己的服务器、私有云、公共云,甚至是混合部署。这使得Nextcloud成为适合个人和企业的理想解决方案。
- 为什么选择Nextcloud
-
数据掌控权:Nextcloud让您重新获得对数据的掌控权,不再依赖于第三方云服务提供商。
-
安全保障:Nextcloud提供先进的安全功能,包括加密传输和端到端加密,确保您的数据始终受到保护。
-
灵活性与可扩展性:Nextcloud具有很高的灵活性和可扩展性,可以根据您的需求进行定制和扩展。
-
开源社区支持:Nextcloud是一个开源项目,拥有庞大的开源社区支持,不断推动平台的发展和改进。
2. Nextcloud安装部署
2-1. 安装准备
下载安装包
- 整合资源分享
分享本人部署的整合工具包:
链接:https://pan.baidu.com/s/10vt_SqnWHvFdHxsIKoCy8Q?pwd=r2gl
提取码:r2gl
# 网盘资源下载至服务器解压:tar -xf nextcloud_install.tar.gz
[root@wangting666 nextcloud_install]# ll
total 1678856
-rw-r--r-- 1 root root 781 May 8 17:13 docker-compose.yml
drwxr-xr-x 2 root root 4096 May 8 17:14 install_docker
-rw------- 1 root root 399751680 May 8 11:02 mariadb.tar
-rw------- 1 root root 1319373312 May 8 11:01 nextcloud.tar
-rwxr-xr-x 1 root root 311 May 8 17:15 useradd_all.sh
-rw-r--r-- 1 root root 82 May 8 17:15 userlist.txt
包含了官方近期最新的镜像,compose编辑好的定义文件、一键部署docker脚本、批量添加用户脚本等等功能的集合包
- 官方下载
https://nextcloud.com/ 通过download下载
2-2. 安装docker与docker-compose
- 注意服务器没有docker环境情况下才需要安装docker
[root@wangting666 nextcloud_install]# cd install_docker/
[root@wangting666 install_docker]# ll
total 94456
-rw-r--r-- 1 root root 70191972 Jan 30 16:51 docker-24.0.8.tgz
-rwxr-xr-x 1 root root 26525696 May 8 11:05 docker-compose
-rwxr-xr-x 1 root root 2725 May 8 17:14 install_docker.sh
[root@wangting666 install_docker]# bash install_docker.sh docker-24.0.8.tgz
注意:
需要在install_docker.sh脚本所在路径执行
bash install_docker.sh docker-24.0.8.tgz
默认已经有docker-24.0.8,如果需要安装其它版本需要自行下载,脚本中有介绍
官方下载地址:https://download.docker.com/linux/static/stable/x86_64/
需要用root用户或者有sudo权限的普通用户
一键脚本包含安装
docker-compose
2-3. nextcloud服务安装
- 安装目录创建
[root@hdt-dmcp-nextcloud nextcloud]# mkdir -p /data/nextcloud/{nginx,db,app}
注意:
- nginx目录存放nginx相关配置、db目录存放应用自身的系统数据、app存放应用数据和用户数据
- /data 路径需要有足够的存储空间
- docker-compose.yaml任务定义
[root@wangting666 nextcloud_install]# cp docker-compose.yml /data/nextcloud/
[root@wangting666 nextcloud_install]# cd /data/nextcloud/
[root@wangting666 nextcloud]# vim docker-compose.yml
version: '2'services:db:image: mariadb:10.5restart: alwayscommand: --transaction-isolation=READ-COMMITTED --binlog-format=ROWnetworks:- nextcloud_netbridgevolumes:- /data/nextcloud/db:/var/lib/mysqlenvironment:- MYSQL_ROOT_PASSWORD=wangting_666- MYSQL_PASSWORD=nextcloud- MYSQL_DATABASE=nextcloud- MYSQL_USER=nextcloudapp:image: nextcloudrestart: alwaysports:- 80:80networks:- nextcloud_netbridgelinks:- dbvolumes:- /data/nextcloud/app:/var/www/htmlenvironment:- MYSQL_PASSWORD=nextcloud- MYSQL_DATABASE=nextcloud- MYSQL_USER=nextcloud- MYSQL_HOST=dbnetworks:nextcloud_netbridge:driver: bridge
注意:
- volumes相关配置需要改成本地真实的路径,volumes中的值前面为本地映射目录,后面为容器中的路径
- 在db中的environment配置中,MYSQL_ROOT_PASSWORD可以修改root密码等等相关信息,但一定要保证app中的指定environment信息需匹配上db中的定义,
- app中的ports
-80:80
,含义为把容器中的80端口映射到本地的80端口,如果本地80端口已使用,这里需要更换,例如-1088:80
- 镜像导入
[root@hdt-dmcp-nextcloud nextcloud]# docker load -i mariadb.tar
[root@hdt-dmcp-nextcloud nextcloud]# docker load -i nextcloud.tar
[root@wangting666 nextcloud_install]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nextcloud latest f49cee8b0306 2 weeks ago 1.29GB
mariadb 10.5 c65b1e141932 2 months ago 394MB
注意:如果不想使用分享包中的镜像版本,且服务器是无互联网限制,可以自行去拉取官方镜像
但需要对应修改
docker-compose.yaml
中的image
docker pull mariadb:版本号
docker pull nextcloud:版本号
- 启动服务
[root@wangting666 nextcloud_install]# cd /data/nextcloud/
[root@hdt-dmcp-nextcloud nextcloud]# docker-compose -f /data/nextcloud/docker-compose.yml up -d
[+] Running 3/3⠿ Network nextcloud_nextcloud_netbridge Created 0.0s⠿ Container nextcloud-db-1 Started 0.3s⠿ Container nextcloud-app-1 Started [root@hdt-dmcp-nextcloud nextcloud]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0af6417141a nextcloud "/entrypoint.sh apac…" 14 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp nextcloud-app-1
53bc6911afb1 mariadb:10.5 "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 3306/tcp nextcloud-db-1
服务此时已经启动成功
- 打开URL配置
URL地址为主机ip与yml中app的port配置端口
第一次登录需要进行页面的管理员信息配置与服务安装
后续一些辅助工具都可以跳过暂时不安装,安装完毕后即可登录
3. nextcloud使用
3-1. 登录界面
登录后界面
左上角主要为功能区,右上角为信息区(个人、好友、消息提醒、搜索)
文件存放中,初始会有一些示例文档等等,可以自行删除
3-2. windows工具(可选)
下载地址:https://github.com/nextcloud/desktop/releases/
去查找Release版本中Assets有msi安装文件的下载安装即可
例如:https://github.com/nextcloud/desktop/releases/download/v3.6.0/Nextcloud-3.6.0-x64.msi
安装配置nextcloud连接URL即可打开使用
可以添加本地目录与云文件夹同步,例如本地E:\nextcloud
与云文件夹upload
目录
3-3. 用户管理
通过管理员可以增删改查用户组和用户,分享文件可以进行人员分享以及组分享等等
当我们添加用户需要加到指定组时,需要先创建出这个组
- 批量添加用户
当我们需要加大量用户时,界面操作效率低下,可以通过接口调用实现,所以可以通过脚本进行批量操作
[root@wangting666 nextcloud_install]# cat useradd_all.sh
#!/bin/sh
txt_file="userlist.txt"
while IFS=, read -r userid password
doecho "用户ID: $userid, 密码: $password"curl -X POST http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users -d userid="$userid" -d password="$password" -H "OCS-APIRequest: true" -d groups[]="bigdata"
done < "$txt_file"[root@wangting666 nextcloud_install]# cat userlist.txt
zhangsan,Bigdata123A456
lisi,Bigdata123A456
wangwu,Bigdata123A456
zhaoliu,Bigdata123A456
注意需要更改脚本中的部分内容
http://wangting:Bigdata123456@122.9.33.66
http://管理员账号:管理员密码@服务器地址
- 必须以管理员账号登录才有权限添加用户
- -d group[ ]=“bigdata” 表示将用户加入到这个组里,需要提前创建组,创建用户也可以不加组,删除这段内容即可
<statuscode>200</statuscode>
返回200则表示创建成功
执行添加
[root@wangting666 nextcloud_install]# bash useradd_all.sh
用户ID: zhangsan, 密码: Bigdata123A456
<?xml version="1.0"?>
<ocs><meta><status>ok</status><statuscode>200</statuscode><message>OK</message></meta><data><id>zhangsan</id></data>
</ocs>
用户ID: lisi, 密码: Bigdata123A456
<?xml version="1.0"?>
<ocs><meta><status>ok</status><statuscode>200</statuscode><message>OK</message></meta><data><id>lisi</id></data>
</ocs>
...
...
执行成功后即完成了批量添加效果
- 删除用户
curl -X DELETE http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/username -H "OCS-APIRequest: true"
例如
[root@wangting666 ~]# curl -X DELETE http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/zhangsan -H "OCS-APIRequest: true"
<?xml version="1.0"?>
<ocs><meta><status>ok</status><statuscode>200</statuscode><message>OK</message></meta><data/>
</ocs>
- 禁用用户
curl -X PUT http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/username/disable -H "OCS-APIRequest: true"
例如
[root@wangting666 ~]# curl -X PUT http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/lisi/disable -H "OCS-APIRequest: true"
<?xml version="1.0"?>
<ocs><meta><status>ok</status><statuscode>200</statuscode><message>OK</message></meta><data/>
</ocs># 再次启用
curl -X PUT http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/lisi/enable -H "OCS-APIRequest: true"
- 添加用户至组
curl -X POST http://wangting:Bigdata123456@122.9.33.66/ocs/v2.php/cloud/users/wangwu/groups -d groupid="test" -H "OCS-APIRequest: true"
3-4. nextcloud维护
- 数据库维护
# 查看数据库容器的ID
[root@wangting666 nextcloud]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32eb670ba257 nextcloud "/entrypoint.sh apac…" 8 hours ago Up 8 hours 0.0.0.0:80->80/tcp, :::80->80/tcp nextcloud-app-1
e8fed9feffcf mariadb:10.5 "docker-entrypoint.s…" 8 hours ago Up 8 hours 3306/tcp nextcloud-db-1# 进入数据库(数据库密码为yml文件中定义)
[root@wangting666 nextcloud]# docker exec -it e8fed9feffcf /bin/bash
root@e8fed9feffcf:/# mysql -uroot -p
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nextcloud |
| performance_schema |
+--------------------+
MariaDB [(none)]> use nextcloud;# 巡检或者查看一些基本信息,可以找相关表进行查询
# 例如group
MariaDB [nextcloud]> select * from oc_group_user;
+--------------+----------+
| gid | uid |
+--------------+----------+
| admin | wangting |
| bigdata | lisi |
| bigdata | wangwu |
| bigdata | zhaoliu |
+--------------+----------+
4 rows in set (0.000 sec)# 用户信息
MariaDB [nextcloud]> select * from oc_users limit 2 \G;
*************************** 1. row ***************************uid: lisi
displayname: NULLpassword: 3|$argon2id$v=19$m=65536,t=4,p=1$U0RpdjdEQ1Y0di5uTy4zcw$mdvQ1wXrYJVyGq6rndgP6YVDbLzdtpCm/yUBSj7GC7Uuid_lower: lisi
*************************** 2. row ***************************uid: wangt
displayname: NULLpassword: 3|$argon2id$v=19$m=65536,t=4,p=1$SWlGaGRiaWlYRlRNdHA2OQ$yV9hG61R8NLxn7mnR/K6a6TvJRMO+My/lYZO0NRljEEuid_lower: wangt
2 rows in set (0.000 sec)