วิธีเปิด Minecraft Server บน AWS (แบบละเอียด)
วิธีเปิด Minecraft Server บน AWS แบบละเอียดพร้อมภาพประกอบ ถึงไม่ใช้ AWS ก็อ่านได้
Minecraft Server ใน Blog นี้จะใช้เปิดสำหรับ Minecraft Java Edition Version 1.21.1 เป็นตัวอย่าง
มาเริ่มกันเลย
อย่างแรกคงเป็นอะไรไปไม่ได้นอกจากไปสมัคร AWS ก่อน กดที่ลิงก์นี้ได้เลย https://aws.amazon.com/ (ถ้าสมัครแล้วก็ข้ามขั้นตอนนี้ไปเลย)
พอเรา Login เข้ามาแล้ว ก็จะเจอหน้า Console ของ AWS ที่มีเมนูเยอะพอสมควร แต่ไม่ต้องตกใจ เดี๋ยวผมพาไปทีละขั้นตอน

ก่อนจะสร้างอะไร เราต้องเลือก Region ที่จะใช้งานก่อน ซึ่ง Region ก็คือที่ตั้งของ Data Center ที่เราจะใช้บริการนั่นเองครับ ถ้าไม่รู้จะเลือกอันไหนดี แนะนำให้เลือกที่ใกล้ผู้เล่น Minecraft ของเรามากที่สุด ในตัวอย่างนี้ผมเลือก Asia Pacific (Thailand)

ถ้าไม่เจอ Region ที่ต้องการ ลองกด Manage Regions ดูครับ บาง Region อาจถูกปิดไว้

ในการสร้าง Minecraft Server บน Cloud เราจะใช้ VM ซึ่งใน AWS เขาเรียกว่า EC2 (Elastic Compute Cloud)
กดที่ช่องค้นหาแล้วพิมพ์ว่า “EC2” จากนั้นกดเลือก EC2 ได้เลย

จะเจอหน้า EC2 Dashboard

ดูที่แถบด้านซ้ายมือ แล้วกดที่ Instances จากนั้นกด Launch instances เพื่อสร้าง VM ตัวใหม่

กรอกชื่อ Instance ของเราได้ตามใจชอบเลย ตรงนี้เปลี่ยนทีหลังได้เหมือนกัน

ต่อมาเลือก OS ที่จะใช้รัน Minecraft Server ของเรา ในที่นี้ผมเลือก Ubuntu Server 24.04 LTS (HVM), SSD Volume Type นะครับ และให้สังเกต Username เอาไว้ด้วย เพราะเดี๋ยวต้องใช้ตอน Login เข้า VM

ต่อมาเลือก Instance Type หรือ Spec ของ VM ที่จะใช้ มีผลกับราคาที่ต้องจ่ายด้วย สำหรับ Minecraft Server แนะนำ Ram ขั้นต่ำ 2 GB นะ เพราะ OS ก็กิน Ram ไปเกือบ 0.5 GB แล้ว ส่วน Minecraft Server ก็ใช้ Ram อีกประมาณ 1 GB (มากกว่าหรือน้อยกว่านี้ค่อยปรับได้)
ผมจะเลือกเป็น t3.small นะครับ เป็น Spec ที่เหมาะกับ Minecraft Server ขนาดเล็ก ๆ และราคาไม่แรงมาก

ต่อมาเลือก Key pair (login) เพื่อใช้ Login เข้า VM แบบปลอดภัย แต่ถ้าอธิบายเรื่องนี้ตอนนี้คงยาวไป เลยขอเลือก Proceed without a key pair ไปก่อนนะครับ (แต่ไม่แนะนำให้ทำแบบนี้ใน Production นะครับ)

ต่อมาจะเป็นเรื่อง Network แล้วครับ ตรงนี้เราจะสร้าง Security Group ซึ่งทำหน้าที่คล้าย Firewall เพื่อคุมการเข้าถึง VM ของเรา เราจะต้องเปิด Port ที่ Minecraft Server ใช้งานด้วย เดี๋ยวมาดูกัน
กดที่ Edit เพื่อเข้าไปตั้งค่า Security Group ให้ละเอียดขึ้น

ตั้งชื่อ Security Group ของเราได้ตามใจชอบเลยครับ ในที่นี้ผมตั้งว่า “Minecraft Server SG”

เขียน Description ให้กับ Security Group ของเราได้เลย เพื่อให้รู้ว่าใช้สำหรับอะไร

ต่อมาเราจะจัดการ Inbound Security Group Rules เพื่อเปิด Port ที่ Minecraft Server ใช้งานครับ ตอนนี้ AWS ตั้งค่า SSH (TCP 22) แบบ Anywhere มาให้แล้ว เพื่อให้ Login เข้า VM ได้จากทุกที่ (แต่ถ้าจะปลอดภัยกว่านี้แนะนำให้ระบุ IP ที่รู้จักแทน)

เดี๋ยวมาเพิ่ม SSH Rule อีกอัน เพื่อให้เรา Login เข้า VM ผ่านหน้าเว็บ AWS ได้ด้วย กดที่ Add security group rule

เลือก Type เป็น SSH, Source type เป็น Custom, แล้ว Source ค้นหาว่า “ec2” จากนั้นเลือก com.amazonaws.<region>.ec2-instance-connect

ต่อมาเป็น Rule ของ Minecraft Server เอง กดที่ Add security group rule อีกครั้ง เลือก Type เป็น Custom TCP, Port range เป็น 25565, Source type เป็น Anywhere เพื่อให้ผู้เล่น Minecraft เชื่อมต่อเข้ามาเล่นได้จากทุกที่

สำหรับ Security Group Rules พวกนี้เรากลับมาแก้ทีหลังได้ตลอด ถ้าจะเพิ่มหรือลด Port ที่เปิดก็ทำได้เลยจากเมนูด้านซ้าย

กลับมาตั้งค่า Storage กันต่อครับ ในที่นี้ผมใช้ 20 GB ซึ่งพอสำหรับ Minecraft Server ขนาดเล็ก ๆ แล้ว แต่ถ้าใครอยากเพิ่มก็ปรับได้เลย

ครบแล้วครับส่วนหลัก ๆ ที่ต้องสนใจ กด Launch instance ได้เลย

รอมันสร้างแป๊บนึงนะครับ

สร้างเสร็จแล้ว กด Instance ID เพื่อเข้าไปดูรายละเอียดของ Instance เราได้เลย

จะเห็นว่า Instance state ตอนนี้เป็น Running แล้ว แปลว่า VM ของเราพร้อมใช้งานแล้ว ต่อไปเราจะเข้าไปติดตั้ง Minecraft Server กัน กดที่ Connect ได้เลย

เลือกแท็บ EC2 Instance Connect แล้วกด Connect เพื่อเข้าไปใน VM ของเราได้เลย

Login เข้ามาได้แล้ว

ให้เราติดตั้ง Software Package ที่ต้องใช้ก่อน โดยใช้คำสั่งนี้ แล้วเขาจะบอกว่า “Press [Enter] to continue” เราก็กด Enter ไป จากนั้นรอไม่นานก็จะขึ้นว่า Done
sudo add-apt-repository ppa:openjdk-r/ppa

จากนั้น Update รายการ Software Package ด้วยคำสั่งนี้
sudo apt update

เอาล่ะ มาติดตั้ง OpenJDK + JRE เพื่อให้รัน Minecraft Server ได้
เราจะติดตั้ง OpenJDK Version 21 + JRE เพราะใช้กับ Minecraft Server Version 1.21.1 ด้วยคำสั่งนี้ (จะมีให้พิมพ์ยืนยันนิดนึง ก็พิมพ์ Y แล้วกด Enter ไปได้เลย)
sudo apt install openjdk-21-jre-headless

ติดตั้งเสร็จแล้ว

ทีนี้เราจะมาติดตั้ง Software อีกตัวชื่อ Screen เอาไว้สร้าง Session ให้รันอยู่เบื้องหลังได้ เพราะถ้าเรา Start Minecraft Server แล้ว ปิด Terminal ไปมันจะได้ไม่ Stop ตามไปด้วย
sudo apt install screen

ทีนี้แวะสร้าง Directory นิดนึง จะได้เก็บไฟล์เป็นระเบียบ
mkdir app
cd app
ต่อมาเราจะ Download Minecraft Server Version 1.21.1 มาลงเครื่องด้วยคำสั่งนี้ (ลิงก์ Download ก็เอามาจากเว็บของ Minecraft นั่นแหละ https://www.minecraft.net/en-us/download/server)
wget https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar
และก็เปลี่ยนชื่อไฟล์ Server นิดนึง
mv server.jar minecraft_server.1.21.1.jar

ต่อมาเราจะเปิด Screen Session ไว้ก่อน เพราะเตรียมรัน Minecraft Server แล้ว
พิมพ์คำสั่งนี้ แล้วกด Enter
screen
จะได้หน้าตาแบบนี้

ให้กด Space Bar หรือ Enter แล้วมันจะกลับมาหน้าปกติของ Terminal
เอาล่ะ และแล้วก็มาถึงเวลาที่รอคอย Start Minecraft Server นั่นเอง
พิมพ์คำสั่งนี้แล้ว Enter เลย
java -Xmx1024M -Xms1024M -jar minecraft_server.1.21.1.jar nogui
แล้วเราจะเจอว่ามัน Error อ้าว แต่ไม่ต้องตกใจนะ เป็นเรื่องปกติ

มันให้เราไปยอมรับ EULA (End-User License Agreement) ก่อน โดยการเปิดไฟล์ eula.txt ใน Text Editor ที่ถนัดได้เลย ผมขอใช้ Nano ละกัน
nano eula.txt
เปลี่ยนค่าของ eula ให้เป็น true

กด Ctrl + O แล้ว Enter เพื่อ Save ไฟล์ จากนั้นกด Ctrl + X เพื่อออกจาก Nano
ต่อมาเราจะมาตั้งค่า Server กันนิดนึง อันนี้แล้วแต่ว่าอยากเปลี่ยนค่าหรือเปล่า โดยใช้คำสั่ง
nano server.properties
ที่ผมจะเปลี่ยนจะมีความยากของเกม (difficulty) เป็น normal และแก้ข้อความที่จะแสดงใต้ชื่อ Server (motd) ด้วย จริง ๆ มันมีอะไรให้ปรับได้เยอะมาก ลองไปศึกษาดูว่าแต่ละ Property คืออะไร

แก้เสร็จแล้วก็ Save แล้วก็ออกจาก Text Editor
ทีนี้ให้เรา Start Minecraft Server อีกรอบ
java -Xmx1024M -Xms1024M -jar minecraft_server.1.21.1.jar nogui
และก็รอมัน Generate World นิดนึง จนเจอข้อความว่า Done (xx.xxxs)! For help, type "help" อันนี้ถือว่า Start Minecraft Server สำเร็จแล้ว

ทีนี้เรามาลองเข้าไป Join Minecraft Server ของเรากัน
เปิดเกม Minecraft ขึ้นมาเลย แล้วกดไปที่ Multiplayer

กด Add Server

จะเห็นเป็นแบบนี้ ตรง Server Name จะกรอกอะไรก็ได้ตามใจ

ส่วนตรง Server Address ให้กรอกเป็นเลข IP ของ VM เรานะครับ ซึ่งดูได้จากหน้า Instance summary ตรง Public IPv4 address หรือจะใช้ Public DNS ก็ได้เหมือนกัน
(แต่ต้องบอกเพิ่มนิดนึงว่า IP/DNS ของ VM มันจะเปลี่ยนทุกครั้งที่เราปิดแล้วเปิดใหม่ ถ้าใครอยากให้คงที่ก็ต้องไปตั้งค่า Elastic IP เพิ่มเติมนะครับ)
แล้วกด Done ถ้าจะให้เพื่อนเข้ามาเล่นด้วยก็ส่งเลข IP หรือ DNS ให้เพื่อนไปได้เลย


ถ้าทุกอย่างถูกต้อง เราก็จะเห็นว่า Minecraft Server พร้อมให้เข้าไปเล่นแล้ว
ปล. เห็นข้อความใต้ชื่อ Server ไหม มาจากที่เราแก้ใน server.properties นั่นแหละ

ไหนลองเข้าไปเล่นดูหน่อย

เล่นได้แล้วววววว
เดี๋ยวก่อนจะจบ Blog นี้ ยังมีอีกเรื่องที่ขาดไม่ได้ คือการปล่อยให้ Minecraft Server ทำงานตลอดเวลา เราจะมาเรียนรู้วิธีใช้งาน Screen สำหรับจัดการ Session กันนิดนึง
คือตอนแรกก่อนที่จะ Start Minecraft Server เราได้สร้าง Screen Session ไปแล้วด้วยคำสั่ง screen แล้วเนอะ ทีนี้เราจะลองออกจาก Session กัน (แต่ไม่ได้ปิด Session นะ ระบบยังทำงานอยู่เบื้องหลัง) โดยการกด Ctrl + A + D จะได้ผลลัพธ์ประมาณนี้

ทีนี้ลอง List Screen Session มาดูว่าเปิด Session อะไรไว้อยู่บ้าง ด้วย screen -list จะเห็นว่าตอนนี้มีอยู่ 1 Session ที่ทำงานอยู่เบื้องหลัง

จากภาพด้านบน จำเลขที่ชี้ไว้นะ เราจะเอาไว้ใช้เวลาจะกลับไปทำงานกับ Session นั้น โดยใช้คำสั่ง screen -r <เลข Session> เช่น screen -r 19667 พอพิมพ์แล้ว Enter ก็จะเห็นว่าเรากลับมาที่หน้า Minecraft Server เหมือนเดิม

อีกนิดนึง ที่ Minecraft Server ที่กำลังทำงานอยู่ เราสามารถพิมพ์ Command ของ Minecraft ได้ เช่น ให้สิทธิ์ OP, เสกของ หรือเตะคนออกจาก Server
ถ้าอยากรู้ว่าใช้ Command อะไรได้บ้าง ลองพิมพ์ help แล้วกด Enter ดู มันจะแสดงรายงานของ Command ที่ใช้งานได้

จบของจริง
วิธีที่สอนไปจริง ๆ ไม่ได้จำกัดอยู่แค่กับ AWS นะ สามารถใช้วิธีนี้กับ VM บน Cloud เจ้าอื่น ๆ ได้ด้วยเหมือนกัน ต่างกันแค่ราคาและวิธีการสร้าง VM เท่านั้นเอง ส่วนตอนเปิด Minecraft Server ที่ทำผ่าน Terminal ก็ทำเหมือนกันทุก VM
หวังว่า Blog นี้จะเป็นประโยชน์สำหรับคนที่ต้องการเปิด Minecraft Server ทุกคน อย่างน้อยก็ตัวผมเองนี่แหละที่ถ้าลืมวิธีเปิดก็คงได้กลับมาอ่าน Blog ตัวเอง