序
微恙在家畴栖,思來想去不如嘗試搭建一套自己的家庭云盤(選擇了目前比較流行的nextcloud),一來充分利用下賦閑的樹莓派八千,二來練練手多了解點新東西吗讶。記錄一下搭建的大致過程和碰到的問題,僅供參考恋捆。
正文
1. nextcloud基礎搭建
1.1 樹莓派系統(tǒng)燒錄
樹莓派型號:3B或者4B都可以照皆,sd卡最好是16G以上,當然沸停,有條件的可以直接上4B+8g版的膜毁,因為搭建家庭云只是樹莓派的一個服務,還可以做更多更有趣的事兒
系統(tǒng)鏡像:可以去樹莓派官網下載最新的https://www.raspberrypi.org/software/operating-systems/愤钾,我這里直接用的店家附贈的稍舊一點的鏡像2020-05-27-raspios-buster-full-armhf(官方版本).zip瘟滨,都是32位的,64位的暫時沒有試過能颁。
燒錄:把準備好的sd卡插入電腦杂瘸,燒錄工具我使用了購買樹莓派時候送的:balenaEtcher,過程挺小白伙菊,如圖一步步操作就好:
1.2 源更新(加速下載)
將燒好系統(tǒng)的sd卡插入樹莓派中胧沫,通電啟動后連接下顯示器,進行必要的設置占业,比如連接wifi绒怨,enable ssh等等,網上一堆樹莓派入門文檔谦疾,這里不贅述南蹂,
然后在windows上可以使用putty這個工具,在HostName中輸入內網樹莓派的地址(可以登錄家中路由器網址查看念恍,我自己的是小米的:192.168.31.1)六剥,則可以內網遠程訪問樹莓派:
遠程登錄,進入到樹莓派linux界面后峰伙,可以查看下debian版本號:cat /etc/debian_version疗疟,我的是10.9
然后修改下樹莓派apt源:
1)先備份原文件
?sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp? /etc/apt/sources.list.d/raspi.list? ?/etc/apt/sources.list.d/raspi.list.bak
2)修改編輯系統(tǒng)源文件
sudo vim /etc/apt/sources.list (沒有裝vim的同學可以先:sudo apt-get install vim)
將初始的源使用#注釋掉,添加如下兩行清華的鏡像源:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
注意系統(tǒng)版本瞳氓,我這里是buster版本策彤,可以通過?cat /etc/os-release 來查詢os版本信息
3)修改系統(tǒng)源
sudo vim /etc/apt/sources.list.d/raspi.list
將初始的源使用#注釋掉,用以下內容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
4)執(zhí)行更新
sudo apt-get update (更新索引)
sudo apt-get update (更新文件)
1.3 安裝docker
使用apt安裝稍微麻煩點,這里使用腳本自動安裝店诗,使用如下命令:
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
安裝好后啟動docker
sudo systemctl enable docker
sudo systemctl start docker
建立docker用戶組裹刮,避免權限問題(默認情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊庞瘸。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket)
sudo groupadd docker? #添加docker用戶組
sudo gpasswd -a $xxx docker? #檢測當前用戶是否已經在docker用戶組中捧弃,其中xxx為用戶名
sudo gpasswd -a $USER docker? #將當前用戶添加至docker用戶組
newgrp docker? #更新docker用戶組
執(zhí)行 命令: docker version,應該不會再出現“Got permission denied”權限報錯擦囊,表示docker可以正常使用
1.4 安裝next_cloud
進入正題了违霞,安裝next_cloud之前,首先要安裝數據庫(當然瞬场,簡單使用的話也可以不用)买鸽,我們可以再在docker中進行,先拉適合的鏡像
docker pull hypriot/rpi-mysql
創(chuàng)建名稱為mysql的容器
docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密碼 -d hypriot/rpi-mysql
-p 表示端口映射
-d 剛才拉取的鏡像
然后泌类,拉取nextcloud的鏡像
docker pull nextcloud
創(chuàng)建名稱為nextcloud的容器
docker run -it -d --name nextcloud --link mysql:db -p xxxx:80 -v /nextcloud:/var/www/html/data -d nextcloud
這里注意幾點:
--link 關聯了mysql數據庫
-p xxxx 是nextcloud映射出來的端口號癞谒,自行設定底燎,比如8123
-v?/nextcloud:/var/www/html/data 是nextcloud在docker中的掛載目錄
啟動了mysql和nextcloud的docker后刃榨,可以使用命令 docker ps 查看已經啟動的服務
另外,如果需要每次樹莓派重啟都自己重啟docker服務的話双仍,一種可以在容器創(chuàng)建時指定 --restart=always 枢希,另一種可通過update 命令:docker update --restart=always xxx
確保nextcloud和mysql啟動的情況下,在電腦瀏覽器中輸入網址:樹莓派內網地址:剛才自行設定的端口號朱沃,比如:192.168.31.90:8123苞轿,則可以打開nextcloud的登陸界面,如下:
需要說明的是:數據目錄 /var/www/html/data 指的是docker容器里的路徑逗物,這里不需要管它搬卒。只需要管好docker run語句的掛載目錄即可。
這里提示不建議使用sqlite翎卓,我選擇的是使用mysql(當然也可以使用sqlite)
進入到mysql的配置契邀,由于自己做的時候沒有截屏,這里借用網上的截圖
配置數據庫選擇mysql失暴,然后用戶名和密碼就是剛才創(chuàng)建mysql容器時候的設置(用戶名為root坯门,密碼為之前自己設置的密碼),第三行隨便填逗扒,第四行填db是因為之前創(chuàng)建nextcloud容器時候作了link設置(mysql:db)
補充一點可能碰到的坑古戴,如果打開頁面碰到諸如:“nextcloud 通過不被信任的域名訪問 請聯系您的管理員”的提示,可以使用如下命令:
docker exec -it $nextcloud容器ID bash?
vim /config/config.php
然后在
'trusted_domains' =>
? array (
? ? 0 => '192.168.xx.xx',? ## IP地址? 修改這3行就可以了
? ? 1 => 'xxx.com', ## 域名矩肩,注意O帜铡!!不要帶www
? ? 2 => '192.168.xx.xx',? ## IP地址
? ? 3 => '[fe80::xx:xx]',
? ),
新增下可信賴地址即可
至此述暂,nextcloud基礎部分搭建完畢痹升,手動分界線
2. nextcloud拓展使用
下面介紹如何掛載外部存儲以及內網穿透
2.1 linux硬盤掛載
單用樹莓派自己的sd卡當硬盤確實有點捉急,除非你的sd卡足夠大畦韭,于是考慮是否可以外部掛載額外的移動硬盤疼蛾,這樣就有足夠的拓展空間。首先進行l(wèi)inux硬盤掛載
1)找一塊可用的移動硬盤艺配,插入樹莓派察郁,查看已有的分區(qū)狀態(tài):df -l,應該暫時沒有看到新的硬盤
2)查看服務器安裝的硬盤狀態(tài)(包括格式化和未格式化):fdisk -l转唉,應該可以看到插入的移動硬盤了皮钠,比如/dev/sda,只是沒有分區(qū)
3)添加新分區(qū):fdisk /dev/sda赠法,按照以下紅框輸入
依次是:n 回車麦轰,p或e 回車,1(如果沒有1砖织,說明數字已經被占用款侵,就用可選的最小數字)兩次回車 w
4)使用以下命令查看分區(qū):fdisk -l,可以看到已經多了一個分區(qū)侧纯,只是可能還沒有格式化
5)格式化分區(qū):mkfs.ext4 -c /dev/sda2新锈,其中,-c 是在建立文件系統(tǒng)前檢查壞道眶熬,可能會很費時間妹笆,新硬盤一般不需要
6)掛載硬盤:
mkdir /new_folder
mount /dev/sda2 /new_folder
7)讓系統(tǒng)開機自動掛載,或者使用vim /etc/fstab 編輯分區(qū)配置
?echo "/dev/sda2 /new_folder ext4 defaults 0 0">>/etc/fstab
2.2 nextcloud外部存儲配置
Nextcloud默認是沒有開啟外部存儲功能的娜氏,需在手動啟用插件:
然后設置Nextcloud所有用戶都能使用外部存儲
使用docker部署可能會碰到如下問題:
這時候拳缠,可以進入nextcloud容器,使用apt安裝然后重啟即可贸弥,命令如下:
docker exec -it nextcloud bash
apt install smbclient libsmbclient-dev
pecl install smbclient
docker-php-ext-enable smbclient
然后在nextcloud外部存儲配置頁面窟坐,目錄名稱隨便填,外部存儲選擇本地茂腥,“配置”一欄需要注意:
首先狸涌,2.1中第六步linux掛載硬盤的路徑要放到nextcloud下,筆者的是這樣:
mkdir /nextcloud/WD500G
mount /dev/sda2 ?/nextcloud/WD500G
然后最岗,在網頁配置欄中帕胆,填寫之前創(chuàng)建容器時候的路徑拼上放在nextcloud下的外部存儲的名字,筆者的如下:/var/www/html/data/WD500G般渡,“可用于”一欄填寫需要使用外部掛載的管理員或者具體賬戶懒豹,點擊最右邊的勾芙盘,看到最左側出現綠底白勾,如圖:
注意:掛載完后脸秽,發(fā)現無法往其中添加文件的情況儒老,可能是權限問題,進入nextcloud容器:docker exec -it $CONTAINER bash后记餐,找到掛載的文件夾驮樊,筆者是在/var/www/html/data中,使用ls-la 查看掛載文件夾的權限片酝,然后使用 chown -R www-data:www-data /WD500G 改下權限就可以開心使用新硬盤存儲了囚衔。
2.3 內網穿透
以上完成了在家庭局域網的nextcloud搭建,如果想在外網使用的話雕沿,其實有好幾種方案练湿,比如公網ip,動態(tài)DDNS等等审轮,依照個人的經濟承受能力選擇不同的方案肥哎,筆者對太多流量等的配置沒什么硬需求,就暫時找了個免費的工具簡易實現了疾渣,用的網云穿(非打廣告)篡诽,具體好不好有待驗證,放上筆者自己的代碼
# 下載arm版
wget?http://xiaomy.net/download/linux/wyc_linux_arm
# 賦權
chmod -R 777 ./wyc_linux_64
# 樹莓派中后臺運行稳衬,否在在windows中跑的話霞捡,關機了就沒有了
nohup ./wyc_linux_arm -token=令牌 &? (令牌是網云穿開通服務后生成的坐漏,網頁上可查)
# 查看內網穿透服務是否開啟
tail -f nohup.out
以上就是筆者個人的搭建全程薄疚,目前已經跑了幾天,只要在有網絡的地方赊琳,親測可以正常使用街夭,另外手機端可以安裝nextcloud應用,輸入內網穿透的鏈接即可登錄躏筏,還是挺方便的板丽,如果以上搭建過程有什么不對的地方,還請各位看官及時糾正趁尼。
參考:
http://www.reibang.com/p/a730755577a3
https://docker_practice.gitee.io/install/raspberry-pi.html
https://www.cnblogs.com/steinven/p/11357295.html
https://blog.csdn.net/anaitudou/article/details/80830955
https://www.wangzhengzhen.com/3157.html
https://blog.csdn.net/weixin_44968234/article/details/109553700