在 armv7 的 Synology NAS 上裝 Gogs 來作為 git server

前陣子實驗室買了 DS216,原本除了當作工作資料儲存外,也想架一個 git server 給大家管理專案。不過因為沒做好功課的關係,買來才發現 Synology 官方支援的 GitLab 套件需要 Docker,而 Docker 需要在 x64 的裝置才可以執行(也就是至少要 DS216+ 才可以),於是開始找了解決方案...

雖然說 DS216 也是支援 git server,不過純粹的 git server 是全部都用指令的,並沒有 web server 跟簡單易用的 GUI。經過一些搜尋之後,找到了 Gogs 這個用 Go 語言寫成的替代方案。雖然說是用 Go 語言,但是 NAS 本身並不需要裝跟 Go 相關的東西,只要在編譯端(以下為 Mac)安裝就好了。

在開始之前,你需要先把 NAS 做一些基本的軟體修改,而以下操作都要用到 SSH,所以先去把 SSH 打開。接著我們要獲得 root 權限(admin 不行,一定要 root),教學可以參考這邊。快速貼過來如下(DSM 6.0):

  1. 先用 admin 權限的帳號登入 ssh
  2. 輸入 sudo -s
  3. synouser -–setpw root NEW_PASSWORD

這樣就可以設定 root 密碼了,之後用 root 登入。

此外,先裝 ipkg 跟一些基本文字編輯工具如 vim、nano 等,以方便接下來編輯設定檔用。

接著進入 DSM 網頁後台,安裝 git server 跟 Maria DB 兩個套件,Maria DB 之後需要 root 密碼,所以先設定好密碼供後續使用。然後我們要製作 Gogs 的 spk 安裝檔,如果你想自己編譯的話,就安裝 Go (在 Mac 可以用 homebrew 安裝),安裝完之後輸入這個指令:

之後最新版的 bianry 就會編譯完畢了。編譯完畢之後用 gogs-spk 工具打包,要注意的是不只 binary,public、scripts、templates 三個資料夾也要包進去,這三個資料夾可以在 gogs 原始碼專案中找到。

如果你懶得編譯,可以在這邊下載舊版已經打包好的 Gogs spk。

總之接下來就是安裝 Gogs,這邊應該都不會有什麼問題,安裝之後輸入你的 NAS IP ,後面加 port 3000。

gogs_settings

接下來請按照我上面的填寫,port 3000 可以換成你喜歡的,如果你自己有買域名可以設定 domain。如果沒有 domain 的話就用 IP 吧。要注意的是 Repository Root Path 一定要改掉,因為原本那個位置會在 Gogs 移除或者升級時被刪除。我建議是在 FileStation 開一個新的共用資料夾叫做 Gogs,然後控制台設定讓 users 群組禁止存取,這樣會比較安全。假設你跟我一樣開了一個叫做 Gogs 的共享資料夾,就在 SSH 裡面輸入

看看是否成功,如果成功代表位置沒錯,然後把 Repository Root Path 改為 /volume1/Gogs 即可。最後,如果你有 domain 的話,可以去控制台 -> 應用程式入口 裡面設定反向代理伺服器,這樣就不用每次都輸入 port 了。


到上面是基本 HTTP 設定,如果你要用 HTTPS 的話要更麻煩一點。首先先到控制台 -> 安全性 -> 憑證裡面,去生一個不是自己簽名的憑證(例如用 Let's Encrypt)

設定完畢之後儲存,接下來到 SSH 裡面,輸入

 

把 PROTOCOL 改成 HTTPS,ROOT_URL 前面如果是 http 改成 https。接著新增兩個項目:CERT_FILE 跟 KEY_FILE。CERT_FILE 輸入 /usr/syno/etc/certificate/_archive/亂數/cert.pem,KEY_FILE  輸入 /usr/syno/etc/certificate/_archive/亂數/privkey.pem。亂數要你自己去 cd 找一下確切名稱。確認之後存檔,之後到套件工具裡面把 Gogs 關閉重開就好了。

 

後記:這個教學看起來很簡單,但是實際上我搞了大半天,因為要弄 custom domain 跟 HTTPS 讓教學難度又提升一個層級...如果有問題再問吧。

發佈留言