〈本文為下篇,上篇的連結為:Synology NAS Docker 應用 (上):使用 youtube-dl 下載各大影音網站的影片

上篇〕★ Synology NAS 進階應用:Docker 套件 ★

上篇〕★ Docker 套件應用一:使用 youtube-dl 下載各大影音網站的影片 ★
上篇〕└ 架設動機與使用情境
上篇〕└ youtube-dl 設置教學
上篇〕└ 應用展示

★ Docker 套件應用二:架設 Minecraft 伺服器 ★
架設動機與使用情境
Minecraft 伺服器設置教學
應用展示

★ 總結與心得 ★





 架設動機與使用情境 

前一篇文章:使用 youtube-dl 下載各大影音網站的影片 是一個比較簡單的 Docker 應用;接著就要介紹一款非常受歡迎的沙盒遊戲 - Minecraft,也就是我們要利用 Synology NAS 的 Docker 套件來架設 Minecraft 伺服器。Minecraft 的遊戲特色包括了探索世界、採集資源、合成物品及生存冒險等等,只要架設伺服器,就能和朋友一同遊玩。

雖說桌上型電腦也能架設 Minecraft 伺服器,不過這裡列舉了幾點用 Docker 架設 Minecraft 的優點所在:

〔使用 Docker 架設 Minecraft Server 原因之一:使用桌機架設十分耗電〕

由於家中的電腦也能開 Minecraft 伺服器,但不太可能 24 小時都開著,且電腦耗電量也比 NAS 高上許多。


〔使用 Docker 架設 Minecraft Server 原因之二:過去的教學已不適用,且管理不易〕

以前 Synology 若要架設 Minecraft 伺服器,以往的做法是去套件中心新增一個叫"社群"的套件來源,接著就能安裝並下載 Minecraft 伺服器的套件了。不過目前在 DSM 6.2 版已經找不到此套件,而且缺點是開啟後 Minecraft 伺服器運行極度不穩定,且更改遊戲檔案等動作都要透過 SSH 進入 NAS 系統內部來設定,十分不便。

簡單來說,目前網路上提供的"利用 Synology 架設 Minecraft 伺服器"等教學大多都是 3 年以上的文章,除了過時不適用,這種方法在管理和維護上也非常麻煩。


〔使用 Docker 架設 Minecraft Server 原因之三:專屬資料夾直接管理遊戲檔案〕

使用者能自訂目標資料夾來存放 Minecraft 伺服器的檔案,除了管理方便,甚至可以直接透過《文字編輯器》,線上更改遊戲參數。


〔使用 Docker 架設 Minecraft Server 原因之四:日誌查看記錄、終端機直接下指令〕

過去筆者認為別家的 NAS 廠商在架設 Minecraft 是比較方便的(因為別家可能有提供專用 Minecraft 伺服器套件),但缺點仍然是不好管理。因此使用 Docker 來架設的話,日誌能查看系統記錄,而終端機還能直接下遊戲指令。

PS. 下圖為終端機頁面,並輸入 /help 指令之結果。



 Minecraft 伺服器設置教學 

〔Step 1:打開《Docker》套件 → “倉庫伺服器”頁面搜尋”minecraft”,找到 itzg/minecraft-server 並下載〕

搜尋 minecraft 後會出現許多不同人製作的映像檔,我們下載擁有最多星星數的 itzg/minecraft-server。

〔Step 2:打開映像檔的官方頁面,來查看有什麼變數需要額外設定。〕

點開映像檔名稱旁的藍色箭頭圖示,並進入“Dockerfile”分頁後,會看到許多指令及參數,我們一樣先觀察 EXPOSE 和 VOLUME 這兩個指令參數即可。

不過 Dockerfile 無法看到明確的設定方式,要至“Dockerfile”分頁來查看更詳細的資訊。如下圖所示,我們要設定一個 EULA = TURE 的參數,以及設定容器存放資料的路徑 /data。

另外,光給容器設定參數不夠,還要給它足夠的權限來讀取寫入檔案官方說明檔能發現它預設的 user ID (UID) 和 group ID (GID) 都是預設 1000。而 Synology NAS 群組"users"的 GID 為 100、群組"administrators"的 GID 為 101;因此我們也要為容器更改 UID 或 GID 參數,像是把 GID 更改為 101(administrators群組),或是更改 UID 為 1024(admin 帳號)。

想知道 UID 或 GID 是多少的使用者,可以先到 DSM 的"控制台" → "終端機 & SNMP"頁面,把"啟動 Telnet 功能"和"啟動 SSH 功能"打勾,然後按下套用。

接著下載 PUTTY 軟體,打開後,在 Session 頁面輸入 NAS 的區網 IP(192.168.XXX.XXX),然後輸入管理員帳號密碼。成功登入後,只要在指令的地方輸入"id",就會看到自己的 UID 和 GID 了。

PS. 查看完之後,務必到控制台把"Telnet 功能"和"SSH 功能"關閉。

〔Step 3:佈署 Minecraft Server 映像檔,並輸入相關設定〕

回到《Docker》中,已下載的映像檔會在”映像檔”頁面,我們按一下 itzg/minecraft-server,並按下”佈署”按鈕。

打開後,按下”進階設定”,在”進階設定”分頁中按下”新增捷徑至桌面”並選擇"狀態頁面",如此一來以後在 DSM 主畫面就能直接開啟 Minecraft 伺服器的詳細資訊頁面。

接著到”儲存空間”分頁,這邊就是要設定 Minecraft 伺服器的資料存放路徑,我們選擇 /docker/minecraft 路徑(使用者自訂);而掛載路徑請輸入 /data。

PS. 掛載路徑所要輸入的 /data,也就是前面文件提到 "to map a directory on your host machine to the container's /data directory"。

再來看到”連接埠設定”,這邊都幫我們事先設定好了,不過這裡將 本機連接埠 裡的”自動設定”,分別手動更改為”25565″和”25575” Port(或是自訂的 Port),如下左圖。

PS. Port 25565 是連線 Minecraft 伺服器預設的連接埠,Port 25575 是 Minecraft Server RCON,也就是可遠端控制 Minecraft 伺服器的程式 Port。

而”環境設定”分頁中我們要新增兩個參數,分別是前面提到的 EULA = TRUE 和給予容器讀寫的權限:GID = 101(或設定 UID = 1024),如下右圖。

另外,”環境設定”分頁還有許多關於 Minecraft 伺服器的初始設定,比較重要的是 MEMORY 的地方,預設是設定 1G,不過這邊筆者建議是至少設定"NAS 所擁有 RAM "的一半;例如我的 DS916+ 有 8GB RAM,因此 MEMORY 參數設定就可提高到 4G,這樣 Minecraft 伺服器也會跑得比較順。

而其他參數如:PVP(true 或 false)、DIFFICULTY(easy 或 hard 或 normal 或 peaceful)、ONLINE_MODE(true 或 false)等,使用者可以在開服前先行設定;當然,之後在 server.properties 檔也能再度更改遊戲參數;設定完按下套用。

進階設定完成,按下”下一步”,再按下”套用”,就會在精靈完成後立刻啟動容器。

最後記得到路由器設定頁面新增 25565 Port(Minecraft 伺服器的連線),以及 25575 Port(Minecraft Server RCON 程式),否則從外網無法連線到自架的 Minecraft 伺服器。



 應用展示 

佈署完的同時,打開DSM主畫面 itzg-minecraft-server 的 Docker 圖示,進入終端機頁面會看到"Done!"開服完成的訊息(終端機畫面倒數第三列),這時候只要打開 Minecraft 並輸入 IP,就能開始遊玩。

PS. 過太久才進去終端機頁面的話會沒有東西,顯示的訊息會移動到日誌頁面。

而在打開伺服器的瞬間,CPU 使用率大約會來到 70 %,之後才會慢慢掉到 5 % 以下。

接著去官網下載安裝最新版本的 Minecraft(目前最新版本為 1.13)。成功開啟後,按下"多人遊戲",新增伺服器並輸入 NAS 的 IP(如果當初設定的是自訂 Port,則輸入"IP:Port",例如 tw.yahoo.com:23456),按下"完成"後就會看到剛架設好的 Minecraft 伺服器。

加入伺服器後,就可以開始遊玩了;整體來說遊玩還算非常順暢,只不過玩家移動太快的話,就有回溯的可能。而筆者也邀請朋友進來伺服器,如果"連接埠轉傳"有正確地被設定(Port 25565),從外網就可以進去自架的 Minecraft 伺服器。

不過上面都只是預設的設定,若使用者要更改伺服器設定(像是更改遊戲難度、模式、最大玩家人數等)和更改地圖(world 資料夾),透過《File Station》並打開當初設定的資料夾路徑即可更改。

而修改伺服器設定也非常方便,有開過服的人都知道更改伺服器設定是透過 server.properties 檔案,我們不用將檔案下載、編輯,然後再重新上傳;只要打開《文字編輯器》套件,把 server.properties 拉進去就能編輯檔案了。

最後,筆者統整使用 Synology Docker 架設 Minecraft 伺服器的優點:

1. 雖然用電腦也能架設,但 24 小時開著電腦不僅耗電也耗費資源。

2. 原先用套件直接架設的方法已不適用,且管理上非常不易。

3. 具有終端機介面,使用者可以直接在終端機下伺服器指令,例如給予某人 OP 權限、BAN 某個玩家等。

4. 具有日誌畫面,可查看伺服器過去的事件記錄,例如誰登入過遊戲、哪個玩家達成什麼成就等。

5. 《文字編輯器》能直接在 DSM 輕易地更改 Minecraft 伺服器參數,以往我們可能需將"設定檔下載" → "電腦中編輯" → "重新上傳" 才能更改設定檔,十分的不便利。



Docker 應用非常廣泛,同時運作多個容器也沒問題;也因為每個容器都是獨立建立並執行,如果發生了什麼很嚴重的問題,頂多就是把該容器停止然後刪除就行了,使用者不太需要擔心。

另外,容器在佈署上如果沒有正確地設定參數,在啟動的當下就會停止運作了。可能也會有人好奇想問:「在建立 Minecraft 伺服器的時候,我怎麼知道只需要額外設定 EULA 和 UID 兩個參數呀?」當時筆者在測試的時候也失敗了很多次,這時候就要到"日誌"的地方來查看有沒有什麼錯誤訊息

從上圖可以發現,如果參數什麼都沒設定就佈署,第一次會出現 Permission denied 的錯誤訊息,代表無法將資料寫入 /data 資料夾(所以我們要設定 UID 或 GID 來更改權限);設定完權限後,第二次佈署出現 Please accept the Minecraft EULA 的錯誤訊息,代表我們要設定一個 EULA = TRUE 的參數。一方面也是要到官方文件來尋找資訊,才能佈署成功。

而 Synology 中的部分套件也是利用 Docker 來運作的,像是程式開發團隊最常使用的協作版本控制軟體:GitLab,使用者在 Synology NAS 上安裝《GitLab》後,經過簡單的設定後,就會被自動佈署到 Docker 上運作。

最後筆者再提一個 Docker 比較有趣的應用,舉例來說,常玩遊戲的人可能都會使用 Discord 這個語音軟體來和隊友溝通,而 Discord 也有很多"Bot(機器人)"能豐富自己聊天群的功能,像是音樂機器人、群管理機器人,或是查遊戲戰績的機器人等等;不過部分的 Bot 除非要你付費,不然功能限制就蠻多。這時候不妨到 Docker 上找相關應用,透過自己架設的 Discord Bot,功能就不必受限制!

這邊附上網路上的教學文件【Docker —— 從入門到實踐】,讓想瞭解 Docker 的人能有更進一步的認識。

本文章同步分享至:(包括上篇與下篇的連結)
1. Facebook
2. Google+ ()()
3. Twitter ()()
4. Plurk ()()
5. LinkedIn ()()
6. mobile01 ()()
7. 巴哈姆特 ()()
8. 痞客邦 ()()
9. Blogger ()()
10. SOGO論壇 ()()
11. 天空部落TIAN ()()
12. 捷克論壇JKF ()()
13. P2P101論壇 ()()
14. udn部落格 ()()
15. 卡提諾論壇 ()()
16. 點部落 ()()
17. 隨意窩Xuite ()()
18. MyChat數位男女論壇 ()()
19. XFastest ()()
20. NOTP部落格 ()()
21. ED Blog ()()


共 1 則回應

1 樓 · 靖岳 · 發表於 2018-08-28 21:52 · 檢舉

正煩惱要如何使用群暉NAS架麥快的...感謝分享