跳到主要內容

舊電腦變自架雲端儲存 nextcloud + samba 最詳細教學 帶你一步一步走 (Part6)


 目錄:


Part6

前言:
終於來到最後一章了。一般人弄cloud 最大的困難就是從外網連進來,因為家用一般都不是使用外網固定 IP,也不想因為弄cloud 而花錢弄個外網固定 IP。 

(直接用固定IP當然是最快最方便的,或者你用別人的現成 NAS,別人也會有 DDNS 這種服務來解決類似的問題,但我們沒有那種高科技,只有勤勞的雙手 T^T  ) 。

從外網連回家中的nextcloud,原則上只要在主路由路上設置 "通訊埠轉發/Port Forwarding" 就可以了。設置 Nextcloud 的時候,我們已經預設了 SSL 使用 4433 port,所以設置好  "通訊埠轉發/Port Forwarding" 時,只要把 port 4433 轉發到我們 home nas 的 IP 就可以了。之後,如果從外網的瀏覽器輸入自己的外網IP 加上 port ;如: https://43.249.64.214:4433 ,那麼瀏覽器會依照 43.249.64.214 找到你家的主路由,然後你家主路由會依照後方的4433 port 轉發給home nas ,這樣就可以跟 home nas 連上了。同時,nextcloud 需要把外網登記 trust domain ,才會充許連接(訪問)。


如何知道自己的外網IP? google: what is my ip (如果你是用固定IP 請盡量不要公開給別人,筆者用的是流動 IP 當你看到這篇文章時,筆者的 IP 都不知道改第幾回了。

可是,使用外網流動 IP 下,外網 IP 有時候是會改變的 (特別是主路由重新開機後),比如筆者家裡長輩有個習慣,就是每天晚上睡前都要把家電關掉,包括路由路,這樣就很囧,畢竟每次手動設置是一件不設實際的事;不過電腦有個好處,就是 你 可 以 教 他 自 己 做

所以我們今天要做的事,分成三個部分:
(一)
安裝發e-mail 的軟件

(二)
寫一個 script (指令碼) ,這個 script 的內容就是:
1. 找到自己的外網IP
2. 把外網IP 加到 nextcloud 的 trust domain
3. 把新的 nextcloud 網址發 e-mail 給用戶

(三)
設置linux service 讓電腦開機時自動執行我們寫的 script。


寫到這裡,相信聰明的各位已經舉一反三,不必筆者多說了吧,那我們下次再見,bye~ bye~

















什麼? 你說很享受閱讀筆者的文章,希望筆者多說一點? 好吧。 那麼筆者邀請你幫 影遊樂園的FB 粉專 按個讚和分享不過份吧。 嗯? 你說很樂意? 太好了,接下來我們開始正文囉。
 



正文:
今天的部分需要用 SSH 連線到 home nas 主機,主要是文字介面操作。SSH 連線主機的部分,在  Part 3 安裝 OMV  extra 的時候已經有做過一次,本文會再重複一下。


開始前,請先把你的 home nas 開機,並使用SSH 連接。現在請你打開 win10 的 "開始" 並輸入cmd ,之後開啟 cmd (命令提示字元)。

請你打開 win10 的 開始 並輸入cmd ,之後開啟 cmd (命令提示字元)。


接下來會跳出一個視窗,我們接下來的操作,需要在上面輸入文字。操作方式是輸入指令,再按enter 發送。就像是跟電腦聊天,你輸入指令再發送,電腦就會做一些事情。文字介面操作不能錯字,錯字不會弄壞什麼,但因為電腦讀不懂,自然無法執行,要注意。



現在輸入以下指令,之後按下enter。這樣就可以 ssh 連線到你的 home nas 上。

ssh root@你為OMV設定的固定IP


如果你是第一次使用ssh 連接到這組IP 通常還會跳出一些文字,要你輸入 yes 才可以進行下去。
接下來,你要輸入在文章 Part1 安裝時輸入的系統密碼,同樣輸入時不會顯示密碼文字。


 
成功登入後會看到以上畫面,輸入位置前方變成 root@omv2:~#,這樣你就是在操作你的 home nas 了。(omv2 的位置是你在 Part1 為 home nas 取的名字)



(一) 第一步  安裝發 E-mail  的軟件 -- MSMTP :

接下來我們要讓系統發 e-mail,需要用到 gmail。
接下來輸入以下指令,再按下enter。會開始跑文字,等他跑完。

sudo apt update && sudo apt -y install msmtp ca-certificates && apt -y install dnsutils && apt -y install nano


接下來輸入以下指令,再按下enter。現在我們要設置發e-mail 的軟件,我們需要讓他使用我們gmail 的郵件服務。nano /etc/msmtprc 就是用 nano 文字編輯打開 etc 路徑下的 msmtprc,目前這個文檔是空白的。

nano /etc/msmtprc

接下來會出現畫面會換成空白的文檔。以在輸入以下文字:(直接複製貼上,免得打錯字)


 # set default walues for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

#gmail 1
account gmail1
host smtp.gmail.com
port 587
from {hostEmail}
user {MSTPuser}
password {MSTPpassword}

#Set a default account
account default : gmail1


紅字的地方我們需要修改:
{hostEmail} = 你的email ,如:ABCD@gmail.com
{MSTPuser}  = email 前段的帳戶名:,如:ABCD
{MSTPpassword} = 見下文



{MSTPpassword}  需要你到自己的帳號去申請,馬上就能申請,這是專門給這種軟件用的特殊密碼,先登入你的google 帳號。

1. 點選右上角的用戶 logo
2. 點選 "管理你的 google  帳戶" (接下來會跳到上圖的頁面)
3. 點選左邊的"安全性"



點選"應用程式密碼"


如圖點選郵件


1.再幫這組密碼的用途取個名字
2. 按 "產生"


接下來會跳出個小視窗,我們要的就是那組16個字元的密碼,專門供發email的軟件用,輸入時不用空白鍵,這組密碼最好記下來,找個記事本存起來之類的。如果丟失了也是可以重新申請就是了。(筆者這組密碼只是申請來示範)


現在你的文字檔應該類似這樣:

 # set default walues for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

#gmail 1
account gmail1
host smtp.gmail.com
port 587
from ABCD@gmail.com
user ABCD
password jbchfchayhqwerty

#Set a default account
account default : gmail1


格式要一樣。接下來按 CTRL + X 離開,之後下方會跳出指示,問你是否儲存修改,按 Y ,再按 Enter。現在 MSMTP 軟件可以使用你的 Google E-mail發 e-mail了。現在測試一下,在SSH  輸入以下指令發 e-mail 給自己, 把紅字改成你的 e-mail。按 enter。

printf "Subject: test" | msmtp -a gmail1 {clientEmail}



按 enter 之後可以要等數秒。接下來你應該會收到一個 "test" 的 e-mail。


這個就是我們自己發給自己的 e-mail 。那麼第一部分就完成了。





(二) 建立 dynamicNCIP  script :
接下來主要是文字介面操作。

輸入以下指令,在 home 資料夾下生成 Program  資料夾。

mkdir /home/Program

接下來輸以下指令,就會在  /home/Program/ 下生成 dynamicNCIP.sh 這個文檔,並同時打開這個文檔。

P.S. 當然名字是我們自己取的,這是筆者取的名字,接下來的設置 service 功能需有同樣的檔案路徑及名字,為了方便各位複製貼上,不建議改動。

nano /home/Program/dynamicNCIP.sh


接下來畫面會換成我們剛建立的 dynamicNCIP.sh,內容是空白的。




這個 script 是筆者寫的,反正給大家用,請直接複製貼上,接下來會有解釋。


#! /usr/bin/bash
myip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
containername=nc1-app-1


until [ "`/usr/bin/docker inspect -f {{.State.Running}} ${containername}`" == "true" ]
do
   sleep 5
done

sleep 10

docker exec -i -u www-data ${containername} php /var/www/html/occ config:system:set trusted_domains 3 --value=${myip}
printf "Subject: NextCloud Server New IP\n\n\n\nhttps://${myip}:4433" | msmtp {clientEmail}
docker restart ${containername}

紅字部分請修改:
nc1-app-1 = 你nextcloud container 的名稱
{clientEmail} = 你的 e-mail,建議一樣先用自己的E-mail,先發給自己測試看看。


內容解釋:
-------------------------------------------------------------------------------------------
#! /usr/bin/bash
#號後面的東西不會執行,這個是告訴大家要用bash 來執行這個 script

myip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
找外網IP,並把找到的外網 IP 代入myip

containername=nc1-app-1
代入 container name ,因為不想在下面重複輸入。

until [ "`/usr/bin/docker inspect -f {{.State.Running}} ${containername}`" == "true" ]
do
   sleep 5
done
先去檢查 nextcloud container 是否正在運行,否則等5秒後再確認一次。這句很重要,因為如果container  沒有運行,就無法成功修改 trust domain。

sleep 10
上面一句有通過後再等10秒

docker exec -i -u www-data ${containername} php /var/www/html/occ config:system:set trusted_domains 3 --value=${myip}
把找到的 外網IP 加進 trust domain 3 

printf "Subject: NextCloud Server New IP\n\n\n\nhttps://${myip}:4433" | msmtp {clientEmail}
發 E-mail 到{clientEmail} ,如果你的cloud 不只一個人使用,可以把這句重複,把發送E-mail的對象換成其他人就可以了。

docker restart ${containername}
重啟 nextcloud container
-----------------------------------------------------------------------------------------------

接下來按 CTRL + X 離開,之後下方會跳出指示,問你是否儲存修改,按 Y ,再按 Enter。




接下來輸入以下指令,執行我們剛剛寫的 script 測試一下,按enter之後要等一下,幾十秒左右。

bash /home/Program/dynamicNCIP.sh

然後會看到把外網IP 加到 trust domain 了,接下來也會收到外網連接的 e-mail。

直接收到從外網連接的網址,點一下就可以連到我們的 nextcloud了(要先弄好"通訊埠轉發/Port Forwarding")。


接下來又會看到不是私人連線,我們在 Part 5 有看過了,按 "進階" > "繼續前住" 。



現在可以看到我們由外網IP連進來,大成功。



(三).啟用 service 服務:
service 服務的目的的簡單,就是開機後自動執行我們建立的 dynamicNCIP.sh 。


接下來輸入以下指令,又會打開空白的文檔。

nano /etc/systemd/system/dynamicNCIP.service


接下來輸入以下文字,複製貼上即可。重要內容就是 ExecStart=/home/Program/dynamicNCIP.sh start  叫他執行我們寫的script,其他都是格式等等的東西,不一一說明,想了解的自行google: linux service。

#file location /etc/systemd/system/ mod 664

[Unit]
Description=dynamic NC IP script
After=network-online.target
After=docker.service
Requires=docker.service

[Service]
ExecStart=/home/Program/dynamicNCIP.sh start

[Install]
WantedBy=multi-user.target


同樣,接下來按 CTRL + X 離開,之後下方會跳出指示,問你是否儲存修改,按 Y ,再按 Enter。


現在分別輸入以下指令,啟動我們剛剛建立的 dynamicNCIP service

sudo systemctl daemon-reload

sudo systemctl enable dynamicNCIP.service

下面一句輸入完後應該會出現,這代表有成功啟動 dynamicNCIP service :
Created symlink /etc/systemd/system/multi-user.target.wants/dynamicNCIP.service → /etc/systemd/system/dynamicNCIP.service.



接下來,再分別輸入以下指令,這兩個是用來修改檔案權限,好讓service 有權限執行 dynamicNCIP.sh 這個 script。輸入後默認完成,沒有文字輸出。

sudo chmod 744 /home/Program/dynamicNCIP.sh

sudo chmod 664 /etc/systemd/system/dynamicNCIP.service


接下來重新啟動 home nas 電腦,重啟後自動會收到包括IP的e-mail,這樣我們這篇的目的就完成了啦~


總結:
首先恭喜各位,跟筆者一起完成 6 篇文章,ya~

完成 Part 6 之後,開機時會自動更新外網 IP ,實在很方便;雖然當伺服路的路由跟電腦都不應該經常開關,但也總有難免的時候。通過E-mail 點一下連結就可以回到自家的 Nextcloud 實在是很棒的事情,而且發 e-mail 的對象也沒有數量限制,如果你是小型工作室,也可以把e-mail 發給所有員工。 dynamicNCIP script 需要時亦可以用bash 手動執行,例不必一定要開關機。

從預想的3篇文章內容加到6篇文章,為了讓一般讀者也跟得上實在不是容易的事,花費無數時間,希望對大家有幫助。

如果覺得文章有幫助,請幫忙分享,讓更多人可以一起學習一起進步哦,謝謝各位耐心閱讀~












留言

  1. myip="$(dig +short myip.opendns.com @resolver1.opendns.com)"
    找外網IP,並把找到的外網 IP 代入myip
    上面的語法有2個myip,都要代入嗎?收到mail,內容是https://4433…

    回覆刪除
    回覆
    1. “找外網IP,並把找到的外網 IP 代入myip“ 是說明這個指令的功能,並不需要手動代入任何東西,他會自己做,直接複製點上整段文字 myip="$(dig +short myip.opendns.com @resolver1.opendns.com)" 就可以了,不用修改任何東西。

      刪除

張貼留言

這個網誌中的熱門文章

Fan Control 超好用的風扇控制軟件

前言:  今天來跟大家分享一下超好用的風扇控制軟件 Fan Control,功能精簡好用,介面直觀好操作。 Fan Control 是由 Github 一個小團隊開發的免費軟件, Github 有很好的官方使用說明和資料: https://github.com/Rem0o/FanControl.Releases 不過筆者還是打算不厭其煩在這邊用中文跟大家分享一下。 Fan Control 可以讓你高自由度設定風扇,例如對指定系統溫度作反應等等。比如筆者的顯卡很熱,但機箱風扇都針對CPU熱的時候才有反應,導致顯卡的熱力累積在機箱內部,結果顯卡又只能拿已經很熱的機箱空氣來用。那裡如果設置成顯卡熱時,機箱風扇一起反應就好了,用 Fan Control 達成就很 EASY!

Nikon FE 底片機 開箱 評測 用後感

  前言: 近年,底片機又有點微熱,也有人來問筆者怎麼選。當中 FM2 的價格被拉得滿高的,其中一個原因是知名度比較高,但其實Nikon 還有很多很棒的傳統底片機可以考濾。當中 FE 是筆者最推薦的,cp值高,性能又整全,這篇就來好好介紹一下,讓大家認識 Nikon FE !

Fujifilm XF 27mm f2.8 開箱 評測 用後感

簡介: Fujifilm XF 27mm f2.8 於 2013 年推出的餅乾鏡,到目前(2020)還是Fujifilm X系統 最小巧的鏡頭(沒有之一)。只有 23mm厚,重78g,鏡頭的小巧程度,可比隨拍機的鏡頭,而且整體表現都不錯。比起其他Fujifilm XF系的鏡頭,拿掉了光圈環,光圈會改由機身轉盤操作。7片光圈葉片。使用39mm濾鏡。鏡片設計 7片 5組,沒錯,薄薄的鏡頭就有7片鏡片。最近對焦 0.36m,提供 1:10 的放大率。