本帖最後由 eden0521 於 2018-8-24 01:16 編輯
〈本文為下篇,上篇的連結為:使用 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 指令之結果。
〔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 的人能有更進一步的認識。 |