===================================================
NOTE: 這是我的私人記錄, 不是教學!
環境:
1. Synology DS214Play+ DSM 5.2-5592 版
2. 有實體 IP 11.22.33.44 (此為亂寫)
How to setup a GIT Server on a Synology NAS
-------------------------------------------
1. 先啟動 SSH 功能
DSM-> 控制台 -> 進階模式 -> 終端機 & SNMP -> [v] 啟動 SSH 功能
P.S. 安全起見建議你自訂連接埠!
2. 安裝 Git Server 套件
DSM-> 套件中心 -> 收尋 "git" -> 找到 [Git Server] -> 點 [安裝套件]
P.S. 要等待一下下安裝完成...
3. 啟動 Git Server 套件
DSM -> 套件中心 -> 已安裝 -> 找到 [Git Server], 點選 -> 點 [動作] -> 啟動
4. 建立 git 庫(repository) 的位置, 假定 "git-repo"
DSM -> 控制台 -> 共用資料夾 -> [新增] -> 名稱 "git-repo"
P.S. 以上名稱可以自訂.
5. 建立 git server 使用者, 假定 "git.user", "blabla"...
DSM -> 控制台 -> 使用者帳號 -> [新增] -> 名稱 "git.user", 密碼 "xxx" ->
指定群組, 勾 "Users" (*) -> 在 "指派共用資料夾權限" 頁面, 在 "git-repo" 的 "可讀寫"
打勾
P.S. (*)可以把全部使用 git server 的使用者, 放在一個專用的群組.
P.S. 以上名稱可以自訂.
6. 設置 Git Server 使用者
DSM -> 主選單 -> Git Server -> "git.user" 的 "允許存取" 打勾
7. 建立 git 庫(repository), 假定 "test"
[方法1] Only for Windows (or Mac?)
前提:
1. NAS 能位於 PC 相同的區域網域(**), PC 能連線 NAS 為網路磁碟(或資料夾)
P.S: (**)實際上我的 NAS 都是放在區(內)網 192.168.0.x, 由 router 映射一個
外部 ip:port 給 NAS 需要開放的服務, like
11.22.33.44:1234 -> 192.168.0.x:22 (your SSH port in NAS)
2. PC 有安裝 TortoiseGit, 或其他 Git clients.
步驟:
1. 啟動 NAS 的 Windows 檔案服務
DSM -> 控制台 -> 檔案服務 -> [Windows 檔案服務] -> 啟動, 注意下面有寫 PC
檔案總管如何存取...預設為 \\Diskstation
2. PC -> 檔案總管 -> 選單, 連線網路磁碟機 -> 指定磁碟機代號, 資料夾輸入
\\Diskstation\git-repo -> 輸入 DSM 的(管理員或 git.user)的登入名字與密碼
或
PC -> 檔案總管 -> 頁籤, 電腦 -> 滑鼠在 [網路位置] 上按右鍵選單 -> 新增一個網路
位置 ->選擇自訂網路位置 -> 輸入 \\RICHSTATION\git-repo -> ...
3. 如果你已經是 TortoiseGit 的能力者, 剩下就簡單並直覺了...
a) 在 NAS 上新建 GIT 專案庫:
直接打開網路資料夾 git-repo -> 裡面新建一個資料夾 "test" ->
滑鼠在 "test" 資料夾上按右鍵選單 -> Git Create repository here... ->
勾 'Make It Bare' (***) -> OK.
P.S: (***)這裡還蠻重要的, 因為是遠端庫, 不在庫目錄上直接工作, 不勾會導致每次本
地 push 遠端時都發一個警告...
b) 轉移既有(或備份)的 GIT 專案庫到 NAS:
不用多說了把既有的 GIT 專案庫(bared)複製到網路資料夾 git-repo 裡面!
[方法2] SSH 登入 NAS
步驟:
1. PC 執行 SSH client(!), Host Name: 11.22.33.44, Port: 22 (或自訂過)
P.S. (!) 我是用 PuTTY
2. Login as: admin
Password: (NAS 網頁管理頁面(admin)用的密碼)
NOTE: 這裡登入名字建議不要用 'root', root 登入後若不切換帳號, 可能會導致後面建
立的 test 資料夾權限只限 root 用戶可存取, 此時還要用 chmod 修改...
NOTE: 如果密碼沒錯卻拒絕登入, 可以檢查:
1. ip:port 是否正確, 路由 ip(router):port -> NAS:port 都正確?
2. 是否被 router(firewall) 封鎖 IP or port?
3. 是否被 NAS 封鎖 IP or port?
4. NAS 的 SSH 服務已經已啟動?
3. 接下來操作 shell commands
Diskstation> cd /volume1/git-repo/
Diskstation> pwd
(確認一下目前目錄為上面嗎)
/volume1/git-repo
Diskstation> mkdir test
(建立新的資料夾擺放 test 專案的 Git 庫)
Diskstation> ls -l
(確認一下目錄的權限)
...
drwxrwxrwx 7 admin users 4096 Aug 12 15:26 test
^^^^^^^^^ ^^^^^
123456789
-> 123:admin 可讀寫執行, 456:users 可寫執行, 789:其他人也可
NOTE: 權限不對, 會導致 git.user 在本地無法存取 /volume1/git-repo/test, 此時可
用 chmod 修改, 或直接換用 git.user 身份建立資料夾...
參見 如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2)
Diskstation> cd test
Diskstation> pwd
(確認一下目前目錄為上面嗎)
/volume1/git-repo/test
Diskstation> git --bare init
(建立初始 git 空庫)
Initialized empty Git repository in /volume1/git-repo/test/
8. Clone Git 庫
以步驟 7 的 test Git 庫, 其遠端的存取位置(URL)為
ssh://git.user@11.22.33.44:22/volume1/git-repo/test
NOTE: 1. git.user 為步驟 5 的建立的 git 使用者名字. 請替換為你的名字.
NOTE: 2. :22 為預設 SSH 連接埠, 或是你有自訂其他的數值...
操作 Git client 的 clone, 連線後會問 git.user 的密碼, 輸入後, 如正確無誤, 就開始複製
檔案到本地, Git 的使用方法此處不多說了...
參考: Synology Git 套件說明
Q1: 每次本地操作 remote git 時都會出現 "Could not chdir to home directory /var/services/homes/git.user: No such file or directory"?
A1: 這是因為 DSM 操作新增 git.user 時並沒有建立其家目錄, 這只是警告不妨礙 Git 操作, 如果不愛, 可以用 SSH 登入 NAS, 操作 shell 指令方式, 重新指定 git.user 的家目錄, 參見
如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2) 中, 步驟 15 有說明修改(改家目錄, shell 應該不用改).
沒有留言:
張貼留言