在 Windows 平台下搭建docker - nextCloud 个人云盘

一直感觉放在百度网盘里面的数据很不安全,因为之前因为存一些技术教程被封过号,再也没活过来。正巧赶上盘当劳事件,手里还有闲置硬件资源,终于下定决心自己搭建一个​ NAS 来用了。​

  1. 先挂载到本地磁盘中,因为我们不想因为存储的数据随着容器的删除而消失,如下图先创建共享文件夹,这里我指定的是E盘
image.png
  1. 因为官方推荐我们不要用 sqlite 数据库,那我们就是用 mysql 数据库,搭建 docker 环境

先进行安装:docker pull mysql

挂载启动:docker run -d -e MYSQL_ROOT_PASSWORD=a123456 --name mysql -v e:/mysql:/var/lib/mysql -p 3306:3306 mysql

意思是在3306端口启动了一个服务名称为 mysql 且 root 用户的密码为 a123456 的最新版的数据库服务了.且挂载地址为 e:/mysql,这样你可以从挂载目录下面查看到刷刷刷的文件创建了。

  1. mysql 数据库建库

进入bash命令:docker exec -it mysql bash

登录mysql:mysql -u root -p

创建名为 nextcloud 的数据库:create database nextcloud default character set utf8 collate utf8_general_ci;

创建用户 nextcloud 密码为 adminadsdff:CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'adminadsdff';

(推荐) 或者使用老验证模式创建用户(php使用):CREATE USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password BY 'adminadsdff';

查看用户是否创建成功: select user,host from mysql.user;

授权:GRANT ALL ON nextcloud.* TO 'nextcloud'@'%';

查看授权: show grants for 'nextcloud'@'%';

  1. 启动 nextCloud 并对文件进行挂载

拉取:docker pull nextcloud

docker run -d -p 9000:80 \

-v e:/nextcloud/main:/var/www/html \

-v e:/nextcloud/apps:/var/www/html/custom_apps \

-v e:/nextcloud/config:/var/www/html/config \

-v e:/nextcloud/data:/var/www/html/data \

--name nextcloud nextcloud

解释如下(dockerhub 中有):

image.png
  1. 设置管理员用户名密码,这里会报错:

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

是由于MySQL 8默认使用了新的密码验证插件:caching_sha2_password,而之前的PHP版本中所带的mysqlnd无法支持这种验证。有好几种方式解决这个问题:

  1. 已存在用户直接更改验证方式:

ALTER USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password

(推荐) ALTER USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password BY 'nextadmin';

采用前一种方式,账户的密码将被清除;BY子句将为账户设置新的密码。

  1. 依旧会报错,说你的路径别的用户也能访问,请更改权限为 0770 以避免其他用户查看目录

config.php 下加入 'check_data_directory_permissions' => false 即可

  1. 文件上传太慢,如何服务器直接拷入?

网上的教程都是错的,应该执行这个命令:sudo -u root php occ files:scan --all,如果没有 sudo ,先安装

试用一下,全速下载,美滋滋。

你可能感兴趣的:(在 Windows 平台下搭建docker - nextCloud 个人云盘)