一直感覺放在百度網(wǎng)盤里面的數(shù)據(jù)很不安全,因為之前因為存一些技術教程被封過號垦页,再也沒活過來掌唾。正巧趕上盤當勞事件放前,手里還有閑置硬件資源,終于下定決心自己搭建一個? NAS 來用了糯彬。?
- 先掛載到本地磁盤中凭语,因為我們不想因為存儲的數(shù)據(jù)隨著容器的刪除而消失,如下圖先創(chuàng)建共享文件夾,這里我指定的是E盤
- 因為官方推薦我們不要用 sqlite 數(shù)據(jù)庫撩扒,那我們就是用 mysql 數(shù)據(jù)庫似扔,搭建 docker 環(huán)境
先進行安裝: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 的最新版的數(shù)據(jù)庫服務了.且掛載地址為 e:/mysql,這樣你可以從掛載目錄下面查看到刷刷刷的文件創(chuàng)建了。
- mysql 數(shù)據(jù)庫建庫
進入bash命令:docker exec -it mysql bash
登錄mysql:mysql -u root -p
創(chuàng)建名為 nextcloud 的數(shù)據(jù)庫:create database nextcloud default character set utf8 collate utf8_general_ci;
創(chuàng)建用戶 nextcloud 密碼為 adminadsdff:CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'adminadsdff';
(推薦) 或者使用老驗證模式創(chuàng)建用戶(php使用):CREATE USER 'nextcloud'@'%' IDENTIFIED WITH mysql_native_password BY 'adminadsdff';
查看用戶是否創(chuàng)建成功: 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
即可
- 文件上傳太慢倘是,如何服務器直接拷入亭枷?
網(wǎng)上的教程都是錯的,應該執(zhí)行這個命令:sudo -u root php occ files:scan --all
搀崭,如果沒有 sudo 叨粘,先安裝
試用一下,全速下載瘤睹,美滋滋升敲。