Nextcloud私有云盘-重新定义云存储体验

1. 什么是Nextcloud

​ Nextcloud是一个开源的云存储和协作平台,旨在为个人用户、企业和团队提供安全、隐私保护的数据存储和共享解决方案。它允许您在不同设备之间同步、共享文件,提供了强大的协作工具和应用生态系统。

  • 功能特点
  1. 文件同步与分享:通过Nextcloud,您可以轻松地在不同设备之间同步和共享文件。无论是照片、视频、文档还是其他文件类型,都可以方便地访问和共享。

  2. 安全与隐私:Nextcloud致力于保护您的数据安全和隐私。它提供端到端加密功能,确保您的数据在传输和存储过程中始终受到保护。

  3. 团队协作:Nextcloud不仅适用于个人用户,也是团队协作的理想选择。通过共享文件夹、日历、联系人等功能,团队成员可以轻松地共享和协作,提高工作效率。

  4. 丰富的应用生态系统:Nextcloud拥有丰富的应用生态系统,涵盖了各种实用工具和功能,如日历、联系人管理、文件同步等,满足您不同的需求。

  5. 灵活的部署:Nextcloud可以在各种环境中部署,包括自己的服务器、私有云、公共云,甚至是混合部署。这使得Nextcloud成为适合个人和企业的理想解决方案。

  • 为什么选择Nextcloud
  1. 数据掌控权:Nextcloud让您重新获得对数据的掌控权,不再依赖于第三方云服务提供商。

  2. 安全保障:Nextcloud提供先进的安全功能,包括加密传输和端到端加密,确保您的数据始终受到保护。

  3. 灵活性与可扩展性:Nextcloud具有很高的灵活性和可扩展性,可以根据您的需求进行定制和扩展。

  4. 开源社区支持: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
  • 官方下载

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

2-3. nextcloud服务安装

  • 安装目录创建
[root@hdt-dmcp-nextcloud nextcloud]# mkdir -p /data/nextcloud/{nginx,db,app}
  • 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.5
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    networks:
      - nextcloud_netbridge
    volumes:
      - /data/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=wangting_666
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 80:80
    networks:
      - nextcloud_netbridge
    links:
      - db
    volumes:
      - /data/nextcloud/app:/var/www/html
    environment:
      - MYSQL_PASSWORD=nextcloud
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

networks:
  nextcloud_netbridge:
    driver: bridge
  • 镜像导入
[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 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配置端口

第一次登录需要进行页面的管理员信息配置与服务安装

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

后续一些辅助工具都可以跳过暂时不安装,安装完毕后即可登录

3. nextcloud使用

3-1. 登录界面

登录后界面

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

文件存放中,初始会有一些示例文档等等,可以自行删除

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

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目录

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

3-3. 用户管理

通过管理员可以增删改查用户组和用户,分享文件可以进行人员分享以及组分享等等

当我们添加用户需要加到指定组时,需要先创建出这个组

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

  • 批量添加用户

当我们需要加大量用户时,界面操作效率低下,可以通过接口调用实现,所以可以通过脚本进行批量操作

[root@wangting666 nextcloud_install]# cat useradd_all.sh 
#!/bin/sh
txt_file="userlist.txt"
while IFS=, read -r userid password
do
  echo "用户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

执行添加

[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>
...
...

执行成功后即完成了批量添加效果

Nextcloud私有云盘-重新定义云存储体验-LMLPHP

  • 删除用户
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: NULL
   password: 3|$argon2id$v=19$m=65536,t=4,p=1$U0RpdjdEQ1Y0di5uTy4zcw$mdvQ1wXrYJVyGq6rndgP6YVDbLzdtpCm/yUBSj7GC7U
  uid_lower: lisi
*************************** 2. row ***************************
        uid: wangt
displayname: NULL
   password: 3|$argon2id$v=19$m=65536,t=4,p=1$SWlGaGRiaWlYRlRNdHA2OQ$yV9hG61R8NLxn7mnR/K6a6TvJRMO+My/lYZO0NRljEE
  uid_lower: wangt
2 rows in set (0.000 sec)
05-11 11:16