สร้างเซิร์ฟเวอร์ Minecraft (Java) บน DigitalOcean Droplet ด้วย Paper: เลือก RAM ติดตั้ง ตั้งค่า และดูแลต่อ
คู่มือสร้างเซิร์ฟเวอร์ Minecraft Java Edition บน Droplet Ubuntu ด้วย Paper, เลือกขนาดเครื่องตามจำนวนผู้เล่น, ติดตั้ง Java, systemd, ไฟร์วอลล์, whitelist, backup และเคล็ดลับลดแลค
เหมาะกับใคร
เซิร์ฟเวอร์เกมที่เช่าเป็นแพ็กเกจสำเร็จรูปสะดวกแต่ปรับแต่งจำกัด ส่วนการเช่า VPS อย่าง DigitalOcean ให้คุณคุมได้เต็มที่ ทั้งปลั๊กอิน เวอร์ชัน จำนวนผู้เล่น และแปลงโลก เหมาะกับกลุ่มเพื่อน ชุมชนเล็ก หรือคนที่อยากเรียนรู้การดูแลเซิร์ฟเวอร์ บทความนี้ใช้ Paper (เซิร์ฟเวอร์ Java Edition ที่ปรับประสิทธิภาพและรองรับปลั๊กอิน Bukkit/Spigot)
เลือกขนาด Droplet
Minecraft ใช้ RAM มากและ CPU ต่อเธรดเดี่ยวสำคัญ (ตัวเกมหลักรันบนเธรดเดียวเป็นหลัก) ตัวเลขด้านล่างเป็นแนวทางทั่วไป ขึ้นกับปลั๊กอิน ม็อด ขนาดโลก และพฤติกรรมผู้เล่น
| ผู้เล่นพร้อมกัน | RAM แนะนำ | ตัวอย่างราคา/เดือน* |
|---|---|---|
| 2–5 คน เล่นกับเพื่อน vanilla | 2 GiB | $12 |
| 5–15 คน มีปลั๊กอินไม่กี่ตัว | 4 GiB | $24 |
| 15–40 คน ปลั๊กอินหลายตัว | 8 GiB | $48 |
| ม็อดหนัก (modpack) | 8 GiB ขึ้นไป | ขึ้นกับ modpack |
*ราคา ณ 3 พ.ย. 2569 ดูตารางเต็มและแบบ CPU-Optimized/Premium ที่ ราคา DigitalOcean ทุกบริการ เลือกภูมิภาคที่ใกล้ผู้เล่นที่สุด (สำหรับผู้เล่นในไทย โดยทั่วไปคือสิงคโปร์) เพื่อลด ping
ขั้นที่ 1: เตรียมเครื่อง
สร้าง Droplet Ubuntu LTS ตั้งผู้ใช้ปกติและไฟร์วอลล์ตาม สอนสร้าง Droplet แรก และ คู่มือความปลอดภัยเซิร์ฟเวอร์ แล้วอัปเดตระบบ
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-21-jre-headless screen curl jq
java -version
เวอร์ชัน Java ที่ต้องใช้ขึ้นกับเวอร์ชัน Minecraft (เกมรุ่นใหม่ต้อง Java 21 ขึ้นไป รุ่นเก่าใช้ 17 หรือ 8) ตรวจที่หน้าเอกสารของ Paper หรือ Minecraft Wiki ก่อนติดตั้ง
ขั้นที่ 2: ดาวน์โหลด Paper
สร้างผู้ใช้เฉพาะและโฟลเดอร์
sudo adduser --system --group --home /opt/minecraft mc
sudo -u mc mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
ไปที่หน้าดาวน์โหลดของ Paper (papermc.io) เลือกเวอร์ชัน Minecraft ที่ต้องการแล้วคัดลอกลิงก์ไฟล์ .jar ล่าสุด
sudo -u mc curl -o paper.jar "ลิงก์ดาวน์โหลดจาก papermc.io"
ตั้ง EULA ตามที่ยอมรับได้ด้วยตนเองหลังอ่านเงื่อนไข
sudo -u mc java -Xms1G -Xmx1G -jar paper.jar --nogui
ครั้งแรกจะสร้างไฟล์แล้วหยุด เพราะต้องแก้ eula.txt เป็น eula=true หลังอ่านและยอมรับเอง
sudo -u mc nano eula.txt
ขั้นที่ 3: รันเป็น service ด้วย systemd
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=mc
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms3G -Xmx3G -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
[Install]
WantedBy=multi-user.target
ปรับ -Xms/-Xmx ให้เป็นประมาณ 70–75% ของ RAM เครื่อง (เครื่อง 4 GiB ใช้ราว 3G) และให้ Xms เท่ากับ Xmx
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -f
เมื่อเห็นข้อความ Done แปลว่าเซิร์ฟเวอร์พร้อม
สั่งงานคอนโซล
วิธีง่ายคือรันใน screen หรือใช้ RCON (ตั้งใน server.properties) การเข้า console ผ่าน systemd ตรงๆ ทำไม่ได้ ถ้าต้องการคอนโซลแบบโต้ตอบให้รันด้วย screen/tmux แทน systemd หรือใช้ RCON client และกำหนดรหัสผ่านที่แข็งแรง ห้ามเปิดพอร์ต RCON สู่สาธารณะ
ขั้นที่ 4: เปิดพอร์ตและไฟร์วอลล์
Minecraft Java ใช้ TCP 25565
sudo ufw allow 25565/tcp
sudo ufw status
และเพิ่มกฎ inbound TCP 25565 ใน Cloud Firewall ด้วย ดู Cloud Firewall และ VPC (Bedrock Edition ใช้ UDP 19132 ต่างกัน และต้องใช้ซอฟต์แวร์เซิร์ฟเวอร์ Bedrock หรือปลั๊กอินสะพาน เช่น Geyser)
ผู้เล่นเชื่อมต่อด้วย IP-ของ-Droplet หรือโดเมน เมื่อตั้ง A record ชี้ไว้ ดู ตั้งค่า DNS บน DigitalOcean ถ้าต้องการใช้พอร์ตอื่นนอกจาก 25565 ให้ใช้เรคคอร์ด SRV
ขั้นที่ 5: ตั้งค่าความปลอดภัยและกติกา
แก้ server.properties
white-list=true
enforce-whitelist=true
online-mode=true
max-players=20
view-distance=8
simulation-distance=6
motd=Welcome
online-mode=trueให้ตรวจบัญชี Mojang/Microsoft จริง อย่าปิด เว้นแต่รู้ผลที่ตามมา เพราะเปิดช่องให้ปลอมตัวเป็นแอดมินได้- ใช้
whitelist add ชื่อผู้เล่นในคอนโซลเพื่อเพิ่มคนเข้า - ตั้ง
opให้เฉพาะคนที่ไว้ใจ - ปลั๊กอินให้โหลดเฉพาะจากแหล่งที่เชื่อถือได้ ปลั๊กอินที่ไม่ปลอดภัยเป็นช่องทางที่ถูกเจาะบ่อย
ลดแลคและใช้ทรัพยากรให้คุ้ม
- ลด view-distance / simulation-distance ลดภาระ CPU ได้มาก
- Pre-generate โลก ด้วยปลั๊กอินสร้างแผนที่ล่วงหน้า ช่วยลดการค้างตอนผู้เล่นสำรวจ
- ใช้ SSD ของ Droplet ที่เป็นค่าเริ่มต้น ดิสก์เร็วช่วยตอนโหลดชังก์
- ใช้ Aikar's flags (ชุด JVM flags ยอดนิยมสำหรับ Paper) ตามคู่มือของ Paper ในกรณี RAM 4 GiB ขึ้นไป
- ติดตามด้วย
/tpsและปลั๊กอินโปรไฟล์ (เช่น spark) เพื่อหาสาเหตุแลค - ตั้ง alert CPU/RAM ดู Monitoring และ Alerts
สำรองข้อมูลโลก
สคริปต์สำรองรายวัน (หยุดการเขียนชั่วคราวก่อนบีบอัด)
#!/bin/bash
cd /opt/minecraft
# ผ่าน RCON หรือคอนโซล: save-off, save-all
tar czf /var/backups/mc-world-$(date +%F).tar.gz server/world server/world_nether server/world_the_end
find /var/backups -name 'mc-world-*.tar.gz' -mtime +7 -delete
# save-on
ตั้งเวลาด้วย cron และส่งสำเนาไป Spaces เพิ่มเติม รวมกับ Droplet Backups และ Snapshots ตาม Backups และ Snapshots เพราะโลกที่เสียหายกู้ย้อนหลังไม่ได้ถ้าไม่มีสำเนา
ค่าใช้จ่ายที่ควรรู้
- ค่า Droplet รายเดือนตามขนาด (เครื่อง 4 GiB อยู่ที่ราว $24 ตามตารางด้านบน)
- ค่าสำรองข้อมูลถ้าเปิด Backups
- Transfer มีโควตารวมตามขนาดเครื่อง ผู้เล่นทั่วไปไม่น่าใช้เกิน
- เครดิต $200 สำหรับผู้ใช้ใหม่ ใช้ทดลองได้ 60 วันตามเงื่อนไข ดู วิธีรับเครดิตฟรี $200 DigitalOcean
- เคล็ดลับประหยัดเพิ่มที่ 15 วิธีลดค่าใช้จ่าย DigitalOcean (เช่น snapshot แล้วลบเครื่องเมื่อไม่เล่นนาน)
แก้ปัญหาเบื้องต้น
| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| ผู้เล่นเข้าไม่ได้ | ไฟร์วอลล์ปิดพอร์ต 25565 | เปิดทั้ง UFW และ Cloud Firewall |
| "Can't keep up!" | CPU ไม่พอ/ชังก์เยอะ | ลดระยะมองเห็น เพิ่ม CPU |
| เซิร์ฟเวอร์ถูกฆ่า (OOM) | -Xmx สูงกว่า RAM จริง | ลดค่า -Xmx หรือเพิ่ม RAM |
| ไม่ขึ้นหลังรีบูต | ยังไม่ enable service | systemctl enable minecraft |
| เวอร์ชันไม่ตรง | Java เวอร์ชันผิด | ติดตั้ง Java ตามที่เกมต้องการ |
คำถามที่พบบ่อย
ใช้ Docker รันได้ไหม
ได้ มี image ที่ดูแลโดยชุมชนจำนวนมาก ดูพื้นฐาน Docker ที่ ติดตั้ง Docker บน Droplet แต่ควรเข้าใจแบบติดตั้งตรงก่อน เพื่อแก้ปัญหาได้เอง
เซิร์ฟเวอร์สำหรับเพื่อน 5 คนควรใช้ขนาดไหน
เริ่มที่ 2 GiB สำหรับ vanilla ถ้ามีปลั๊กอินหลายตัวหรือโลกใหญ่ให้ขยับเป็น 4 GiB ปรับขนาด Droplet ได้ภายหลัง
Bedrock Edition (มือถือ/คอนโซล) เล่นได้ไหม
เซิร์ฟเวอร์ Bedrock เป็นซอฟต์แวร์ต่างกัน ใช้ UDP 19132 หรือใช้ Geyser เป็นสะพานให้ผู้เล่น Bedrock เข้า Java server ได้ ตั้งค่าตามเอกสารของโปรเจกต์นั้น
ปิดเครื่องช่วงไม่เล่นแล้วประหยัดได้ไหม
Droplet ที่ปิดเครื่องยังคิดค่าเมื่อยังเก็บดิสก์ไว้ วิธีประหยัดจริงคือสร้าง snapshot แล้วลบ Droplet และสร้างใหม่จาก snapshot เมื่อจะเล่น ดูรายละเอียดต้นทุนที่ 15 วิธีลดค่าใช้จ่าย DigitalOcean