一直感觉放在百度网盘里面的数据很不安全,因为之前因为存一些技术教程被封过号,再也没活过来。正巧赶上盘当劳事件,手里还有闲置硬件资源,终于下定决心自己搭建一个 NAS 来用了。
- 先挂载到本地磁盘中,因为我们不想因为存储的数据随着容器的删除而消失,如下图先创建共享文件夹,这里我指定的是E盘
- 因为官方推荐我们不要用 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,这样你可以从挂载目录下面查看到刷刷刷的文件创建了。
- 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'@'%';
- 启动 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 中有):
- 设置管理员用户名密码,这里会报错:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
是由于MySQL 8默认使用了新的密码验证插件:caching_sha2_password
,而之前的PHP版本中所带的mysqlnd无法支持这种验证。有好几种方式解决这个问题:
- 已存在用户直接更改验证方式:
ALTER USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password
或
(推荐) ALTER USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password BY 'nextadmin';
采用前一种方式,账户的密码将被清除;BY子句将为账户设置新的密码。
- 依旧会报错,说你的路径别的用户也能访问,请更改权限为 0770 以避免其他用户查看目录
到 config.php
下加入 'check_data_directory_permissions' => false
即可
- 文件上传太慢,如何服务器直接拷入?
网上的教程都是错的,应该执行这个命令:sudo -u root php occ files:scan --all
,如果没有 sudo ,先安装
试用一下,全速下载,美滋滋。