a8505212005 發表於 2018-8-24 16:00:27

Synology NAS Docker 應用 (下):架設 Minecraft 伺服器

https://cdn1-t17.techbang.com/system/attached_images/2018/08/243064/original/b62d2b32817a9e6a43913849189f8965.gif〈本文為下篇,上篇的連結為:Synology NAS Docker 應用 (上):使用 youtube-dl 下載各大影音網站的影片〉https://cdn1-t17.techbang.com/system/attached_images/2018/08/242267/original/0b18d5cb577830847a6e12a04c4f9a5c.gif〔上篇〕★ Synology NAS 進階應用:Docker 套件 ★〔上篇〕★ Docker 套件應用一:使用 youtube-dl 下載各大影音網站的影片 ★
〔上篇〕└ 架設動機與使用情境
〔上篇〕└ youtube-dl 設置教學
〔上篇〕└ 應用展示★ Docker 套件應用二:架設 Minecraft 伺服器 ★
└ 架設動機與使用情境
└ Minecraft 伺服器設置教學
└ 應用展示★ 總結與心得 ★

https://cdn1-t17.techbang.com/system/attached_images/2018/08/242528/original/1c84268549bdbefda632addbabf76a78.gif


 架設動機與使用情境 

前一篇文章:使用 youtube-dl 下載各大影音網站的影片 是一個比較簡單的 Docker 應用;接著就要介紹一款非常受歡迎的沙盒遊戲 - Minecraft,也就是我們要利用 Synology NAS 的 Docker 套件來架設 Minecraft 伺服器。Minecraft 的遊戲特色包括了探索世界、採集資源、合成物品及生存冒險等等,只要架設伺服器,就能和朋友一同遊玩。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242502/original/1d16f5498ec221413cb90654698f89b4.jpg雖說桌上型電腦也能架設 Minecraft 伺服器,不過這裡列舉了幾點用 Docker 架設 Minecraft 的優點所在:〔使用 Docker 架設 Minecraft Server 原因之一:使用桌機架設十分耗電〕由於家中的電腦也能開 Minecraft 伺服器,但不太可能 24 小時都開著,且電腦耗電量也比 NAS 高上許多。
〔使用 Docker 架設 Minecraft Server 原因之二:過去的教學已不適用,且管理不易〕以前 Synology 若要架設 Minecraft 伺服器,以往的做法是去套件中心新增一個叫"社群"的套件來源,接著就能安裝並下載 Minecraft 伺服器的套件了。不過目前在 DSM 6.2 版已經找不到此套件,而且缺點是開啟後 Minecraft 伺服器運行極度不穩定,且更改遊戲檔案等動作都要透過 SSH 進入 NAS 系統內部來設定,十分不便。簡單來說,目前網路上提供的"利用 Synology 架設 Minecraft 伺服器"等教學大多都是 3 年以上的文章,除了過時不適用,這種方法在管理和維護上也非常麻煩。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242503/original/4e132b706115340a0e84f7119e9116ea.png
〔使用 Docker 架設 Minecraft Server 原因之三:專屬資料夾直接管理遊戲檔案〕使用者能自訂目標資料夾來存放 Minecraft 伺服器的檔案,除了管理方便,甚至可以直接透過《文字編輯器》,線上更改遊戲參數。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242504/original/733e11522deef3889c7a75edbb010fdd.png
〔使用 Docker 架設 Minecraft Server 原因之四:日誌查看記錄、終端機直接下指令〕過去筆者認為別家的 NAS 廠商在架設 Minecraft 是比較方便的(因為別家可能有提供專用 Minecraft 伺服器套件),但缺點仍然是不好管理。因此使用 Docker 來架設的話,日誌能查看系統記錄,而終端機還能直接下遊戲指令。PS. 下圖為終端機頁面,並輸入 /help 指令之結果。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242505/original/a3953086e2bae7d119f26197a04d7c52.png


 Minecraft 伺服器設置教學 

〔Step 1:打開《Docker》套件 → “倉庫伺服器”頁面搜尋”minecraft”,找到 itzg/minecraft-server 並下載〕搜尋 minecraft 後會出現許多不同人製作的映像檔,我們下載擁有最多星星數的 itzg/minecraft-server。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242506/original/fe25d1e27485ee31fb5afa3449b99387.png〔Step 2:打開映像檔的官方頁面,來查看有什麼變數需要額外設定。〕https://cdn1-t17.techbang.com/system/attached_images/2018/08/242507/original/8af822faeb252c4b55288e9adb7c71bb.png點開映像檔名稱旁的藍色箭頭圖示,並進入“Dockerfile”分頁後,會看到許多指令及參數,我們一樣先觀察 EXPOSE 和 VOLUME 這兩個指令參數即可。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242508/original/798b88b02b2937edb9823dc99bab3d2c.png不過 Dockerfile 無法看到明確的設定方式,要至“Dockerfile”分頁來查看更詳細的資訊。如下圖所示,我們要設定一個 EULA = TURE 的參數,以及設定容器存放資料的路徑 /data。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242509/original/35eaa4d160044c0da197972a87a12e5b.png另外,光給容器設定參數不夠,還要給它足夠的權限來讀取寫入檔案,官方說明檔能發現它預設的 user ID (UID) 和 group ID (GID) 都是預設 1000。而 Synology NAS 群組"users"的 GID 為 100、群組"administrators"的 GID 為 101;因此我們也要為容器更改 UID 或 GID 參數,像是把 GID 更改為 101(administrators群組),或是更改 UID 為 1024(admin 帳號)。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242510/original/a1a9ef94bffe81aa3c50791e60bcb7e3.png想知道 UID 或 GID 是多少的使用者,可以先到 DSM 的"控制台" → "終端機 & SNMP"頁面,把"啟動 Telnet 功能"和"啟動 SSH 功能"打勾,然後按下套用。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242531/original/314edd15a237c1b50b49c98334de6d99.png接著下載 PUTTY 軟體,打開後,在 Session 頁面輸入 NAS 的區網 IP(192.168.XXX.XXX),然後輸入管理員帳號密碼。成功登入後,只要在指令的地方輸入"id",就會看到自己的 UID 和 GID 了。PS. 查看完之後,務必到控制台把"Telnet 功能"和"SSH 功能"關閉。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242512/original/1f9f8902ac0ee2d72fb7e7370a0f168c.png〔Step 3:佈署 Minecraft Server 映像檔,並輸入相關設定〕回到《Docker》中,已下載的映像檔會在”映像檔”頁面,我們按一下 itzg/minecraft-server,並按下”佈署”按鈕。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242513/original/9bdb391664cb506359cad8af120467ec.png打開後,按下”進階設定”,在”進階設定”分頁中按下”新增捷徑至桌面”並選擇"狀態頁面",如此一來以後在 DSM 主畫面就能直接開啟 Minecraft 伺服器的詳細資訊頁面。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242514/original/7d5270528bdcc77975161b1edad86cf6.png接著到”儲存空間”分頁,這邊就是要設定 Minecraft 伺服器的資料存放路徑,我們選擇 /docker/minecraft 路徑(使用者自訂);而掛載路徑請輸入 /data。PS. 掛載路徑所要輸入的 /data,也就是前面文件提到 "to map a directory on your host machine to the container's /data directory"。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242515/original/db37025d55485cf55497add01e8df728.png再來看到”連接埠設定”,這邊都幫我們事先設定好了,不過這裡將 本機連接埠 裡的”自動設定”,分別手動更改為”25565″和”25575” Port(或是自訂的 Port),如下左圖。PS. Port 25565 是連線 Minecraft 伺服器預設的連接埠,Port 25575 是 Minecraft Server RCON,也就是可遠端控制 Minecraft 伺服器的程式 Port。而”環境設定”分頁中我們要新增兩個參數,分別是前面提到的 EULA = TRUE 和給予容器讀寫的權限:GID = 101(或設定 UID = 1024),如下右圖。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242516/original/9f07613e7c03be6eec5f9d0c341220bc.png另外,”環境設定”分頁還有許多關於 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 檔也能再度更改遊戲參數;設定完按下套用。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242517/original/26330ba6dc0208452982f0886d3f76c9.png進階設定完成,按下”下一步”,再按下”套用”,就會在精靈完成後立刻啟動容器。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242518/original/9d41906b4d6ccbec3a1ecc4f59ee9cf6.png最後記得到路由器設定頁面新增 25565 Port(Minecraft 伺服器的連線),以及 25575 Port(Minecraft Server RCON 程式),否則從外網無法連線到自架的 Minecraft 伺服器。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242519/original/bd309dcc0f2129e4772c88e0efaa174d.gif


 應用展示 

佈署完的同時,打開DSM主畫面 itzg-minecraft-server 的 Docker 圖示,進入終端機頁面會看到"Done!"開服完成的訊息(終端機畫面倒數第三列),這時候只要打開 Minecraft 並輸入 IP,就能開始遊玩。PS. 過太久才進去終端機頁面的話會沒有東西,顯示的訊息會移動到日誌頁面。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242520/original/3810f0505160ed88ad686db81148befe.png而在打開伺服器的瞬間,CPU 使用率大約會來到 70 %,之後才會慢慢掉到 5 % 以下。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242532/original/d5b60f7f960bd90054afe9749fcfe4ea.png接著去官網下載安裝最新版本的 Minecraft(目前最新版本為 1.13)。成功開啟後,按下"多人遊戲",新增伺服器並輸入 NAS 的 IP(如果當初設定的是自訂 Port,則輸入"IP:Port",例如 tw.yahoo.com:23456),按下"完成"後就會看到剛架設好的 Minecraft 伺服器。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242522/original/10cd3dcb546ce9c5999908ec6619a467.gif加入伺服器後,就可以開始遊玩了;整體來說遊玩還算非常順暢,只不過玩家移動太快的話,就有回溯的可能。而筆者也邀請朋友進來伺服器,如果"連接埠轉傳"有正確地被設定(Port 25565),從外網就可以進去自架的 Minecraft 伺服器。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242523/original/b99ad52dd7529c9489fb480254c06f68.png不過上面都只是預設的設定,若使用者要更改伺服器設定(像是更改遊戲難度、模式、最大玩家人數等)和更改地圖(world 資料夾),透過《File Station》並打開當初設定的資料夾路徑即可更改。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242524/original/1f0e13fc4c32af5eae6bcf1e98da78d4.png而修改伺服器設定也非常方便,有開過服的人都知道更改伺服器設定是透過 server.properties 檔案,我們不用將檔案下載、編輯,然後再重新上傳;只要打開《文字編輯器》套件,把 server.properties 拉進去就能編輯檔案了。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242533/original/cc5b9c34e70691988d3f2f0c05d63e01.png最後,筆者統整使用 Synology Docker 架設 Minecraft 伺服器的優點:1. 雖然用電腦也能架設,但 24 小時開著電腦不僅耗電也耗費資源。2. 原先用套件直接架設的方法已不適用,且管理上非常不易。3. 具有終端機介面,使用者可以直接在終端機下伺服器指令,例如給予某人 OP 權限、BAN 某個玩家等。4. 具有日誌畫面,可查看伺服器過去的事件記錄,例如誰登入過遊戲、哪個玩家達成什麼成就等。5. 《文字編輯器》能直接在 DSM 輕易地更改 Minecraft 伺服器參數,以往我們可能需將"設定檔下載" → "電腦中編輯" → "重新上傳" 才能更改設定檔,十分的不便利。

https://cdn1-t17.techbang.com/system/attached_images/2018/08/242529/original/ef7b19ef8258a4e339a50a2c293ece7f.gifDocker 應用非常廣泛,同時運作多個容器也沒問題;也因為每個容器都是獨立建立並執行,如果發生了什麼很嚴重的問題,頂多就是把該容器停止然後刪除就行了,使用者不太需要擔心。另外,容器在佈署上如果沒有正確地設定參數,在啟動的當下就會停止運作了。可能也會有人好奇想問:「在建立 Minecraft 伺服器的時候,我怎麼知道只需要額外設定 EULA 和 UID 兩個參數呀?」當時筆者在測試的時候也失敗了很多次,這時候就要到"日誌"的地方來查看有沒有什麼錯誤訊息:https://cdn1-t17.techbang.com/system/attached_images/2018/08/242530/original/41758ef78995665bb3a07ccf454e7759.png從上圖可以發現,如果參數什麼都沒設定就佈署,第一次會出現 Permission denied 的錯誤訊息,代表無法將資料寫入 /data 資料夾(所以我們要設定 UID 或 GID 來更改權限);設定完權限後,第二次佈署出現 Please accept the Minecraft EULA 的錯誤訊息,代表我們要設定一個 EULA = TRUE 的參數。一方面也是要到官方文件來尋找資訊,才能佈署成功。而 Synology 中的部分套件也是利用 Docker 來運作的,像是程式開發團隊最常使用的協作版本控制軟體:GitLab,使用者在 Synology NAS 上安裝《GitLab》後,經過簡單的設定後,就會被自動佈署到 Docker 上運作。https://cdn1-t17.techbang.com/system/attached_images/2018/08/242643/original/6095f520c7a8af14a3ad74560fd95935.png最後筆者再提一個 Docker 比較有趣的應用,舉例來說,常玩遊戲的人可能都會使用 Discord 這個語音軟體來和隊友溝通,而 Discord 也有很多"Bot(機器人)"能豐富自己聊天群的功能,像是音樂機器人、群管理機器人,或是查遊戲戰績的機器人等等;不過部分的 Bot 除非要你付費,不然功能限制就蠻多。這時候不妨到 Docker 上找相關應用,透過自己架設的 Discord Bot,功能就不必受限制!https://cdn1-t17.techbang.com/system/attached_images/2018/08/242527/original/ff53a354a193e21495e4aa30c8efd887.png這邊附上網路上的教學文件【Docker —— 從入門到實踐】,讓想瞭解 Docker 的人能有更進一步的認識。
頁: [1]
查看完整版本: Synology NAS Docker 應用 (下):架設 Minecraft 伺服器