Optimization

VPS đặt máy chủ game riêng: cấu hình và lưu ý năm 2026

Bạn vừa cài xong một máy chủ game tư nhân để chơi cùng nhóm bạn, nhưng ping của người chơi cứ nhảy loạn và server thỉnh thoảng bị rớt giữa trận. Vấn đề thường không nằm ở game mà nằm ở việc VPS đặt máy chủ game riêng chưa được cấu hình đúng. Bài này sẽ hướng dẫn bạn từ khâu chọn cấu hình, cài đặt, tối ưu kernel cho đến bảo mật để có một game server ổn định, chạy trên VPS Linux có IPv4 riêng đặt tại Việt Nam, phù hợp cho game thủ trong nước.

Yêu cầu trước khi bắt đầu

  • Một VPS chạy Ubuntu 24.04 LTS hoặc Debian 12, quyền root hoặc user sudo. Bạn có thể thuê VPS Linux với full root để toàn quyền cấu hình.
  • Ít nhất 4 GB RAM nếu chạy Minecraft hoặc Palworld, 8 GB trở lên nếu chạy nhiều instance Counter-Strike 2 (SRCDS).
  • Một IPv4 tĩnh riêng (VPS thường có sẵn), cổng UDP cần mở cho game.
  • Kiến thức cơ bản về SSH, systemd và firewall (ufw hoặc firewalld).

Vì sao nên dùng VPS thay vì máy chủ tại nhà?

Chạy game server tại nhà đối mặt với hai vấn đề: đường truyền upload thường thấp (chỉ 10-20 Mbps với cáp quang gia đình) và địa chỉ IP động dễ bị đổi, khiến người chơi không kết nối được. VPS đặt máy chủ game riêng giải quyết cả hai: băng thông trong nước mặc định 100 Mbps trên port 1 Gbps, đủ cho vài chục người chơi, và IPv4 tĩnh thuộc dải Việt Nam giúp ping trung bình thấp hơn rõ rệt so với thuê server ở Singapore hay Nhật Bản.

Chi phí cũng là điểm cộng. Một VPS 4 GB RAM giá khoảng vài trăm nghìn mỗi tháng, rẻ hơn nhiều so với việc đầu tư một bộ máy tính để bàn chạy trong giờ hành chính cùng hóa đơn điện tăng vọt. Bạn cũng không phải lo mất điện, mất mạng hay nhiệt độ phòng. Trong khi đó, thuê server riêng là lựa chọn khi bạn cần hiệu năng CPU cao và nhiều RAM hơn 32 GB cho cộng đồng lớn.

Bước 1 - Chọn cấu hình VPS phù hợp với từng loại game

Mỗi game server có nhu cầu tài nguyên khác nhau. Quan trọng nhất là RAM, sau đó đến tốc độ CPU đơn nhân (single-core), vì hầu hết game server không tận dụng được nhiều nhân.

Loại game serverRAM tối thiểuRAM khuyến nghịCPU cần
Minecraft (vanilla, 10-20 người)2 GB4 GB2 vCPU, xung nhịp cao
Minecraft (modded, 20-50 người)4 GB8 GB4 vCPU
Counter-Strike 2 (SRCDS, 1 instance 10 slots)2 GB4 GB2 vCPU
Palworld / Rust / ARK8 GB16 GB4-8 vCPU
Terraria / Valheim (nhóm nhỏ)1 GB2 GB1-2 vCPU

Ví dụ, với một server Minecraft chơi cùng 5-10 người bạn, gói VPS 4 GB RAM, 2 vCPU là đủ. Nếu bạn tính mở server Palworld cho 20 người, hãy chọn 8 GB trở lên, vì game này nổi tiếng ngốn RAM do leak memory khi chạy lâu. Các gói VPS NVMe giá rẻ với ổ cứng NVMe giúp giảm thời gian load thế giới game đáng kể so với SSD SATA.

Bước 2 - Cài đặt game server bằng systemd

Thay vì chạy lệnh thủ công trong terminal rồi đóng SSH là server tắt, hãy tạo một systemd service để game server chạy nền và tự khởi động lại khi crash. Cách này áp dụng chung cho mọi loại game server.

Đầu tiên, tạo user riêng để chạy game, không dùng root. Lý do an toàn: nếu game server bị khai thác lỗ hổng, attacker chỉ chiếm được user hạn chế chứ không phải root.

sudo useradd -r -m -d /opt/gameserver gameserver
sudo -u gameserver mkdir -p /opt/gameserver/minecraft
cd /opt/gameserver/minecraft

Tải file server jar (ví dụ với Minecraft Paper 1.21.x) rồi tạo file service:

sudo nano /etc/systemd/system/minecraft.service

Nội dung file:

[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=gameserver
WorkingDirectory=/opt/gameserver/minecraft
ExecStart=/usr/bin/java -Xmx3G -Xms3G -jar paper.jar nogui
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Kích hoạt và khởi động service:

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft

Output mong đợi hiển thị Active: active (running). Kiểm tra log xem server đã bind đúng cổng chưa:

sudo journalctl -u minecraft -f

Với Counter-Strike 2, bạn dùng lệnh SRCDS tương tự, chỉ khác ExecStart là đường dẫn tới binary srcds_run với các tham số map, game mode và số slot. Cách đặt trong systemd giúp server tự sống lại nếu bị crash, đây là điểm khác biệt lớn so với chạy bằng screen hoặc tmux thủ công.

Bước 3 - Mở cổng firewall đúng cách

Game server thường dùng UDP, không phải TCP. Nhiều người mở nhầm cổng TCP nên người chơi không vào được. Kiểm tra cổng mặc định theo game: Minecraft dùng 25565 TCP, CS2 dùng 27015 UDP/TCP, Palworld dùng 8211 UDP.

Với Ubuntu 24.04, dùng ufw:

sudo ufw allow 25565/tcp
sudo ufw allow 27015/udp
sudo ufw allow 8211/udp
sudo ufw enable
sudo ufw status

Verify: cổng đang listen bằng ss:

sudo ss -ulpn | grep 8211

Bạn sẽ thấy dòng udp UNCONN 0 0 0.0.0.0:8211. Nếu dùng VPS Linux của thueVPS, bạn cũng cần kiểm tra xem có lớp firewall nào khác ở hạ tầng hay không. Thông thường VPS KVM để default mở toàn bộ port, tường lửa là do bạn tự cấu hình trên OS.

Một lưu ý: không mở cổng SSH (22) ra public với password yếu. Bài bảo mật SSH cho VPS Linux có hướng dẫn chi tiết để chống brute-force, rất đáng đọc trước khi mở máy chủ game cho công chúng.

Bước 4 - Tối ưu kernel và network cho ping thấp

Ping cao thường do buffer trong kernel xử lý gói UDP không kịp. Một vài tham số sysctl giúp cải thiện đáng kể độ ổn định, đặc biệt khi server có 20 người chơi cùng lúc.

Tạo file cấu hình sysctl:

sudo nano /etc/sysctl.d/99-gameserver.conf

Nội dung:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_fastopen = 3
net.core.netdev_max_backlog = 4096

Áp dụng cấu hình:

sudo sysctl --system

Giải thích ngắn: rmem_maxwmem_max tăng bộ nhớ đệm tối đa cho socket, giúp chịu được burst packet khi nhiều người chơi cùng di chuyển. tcp_fastopen giảm một vòng handshake cho kết nối TCP, hữu ích với game dùng TCP cho phần voice hoặc chat.

Nếu game server của bạn là Minecraft, hãy thêm flag JVM tối ưu trong file service. Thay ExecStart bằng:

ExecStart=/usr/bin/java -Xmx3G -Xms3G -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -jar paper.jar nogui

G1GC giúp giảm pause dài do garbage collection, nguyên nhân khiến server bị "lag" định kỳ vài giây mỗi phút. Đây là một trong những mẹo quan trọng nhất khi VPS đặt máy chủ game riêng chạy Java game.

Bước 5 - Giám sát tài nguyên và xử lý sự cố

Một game server chạy trong giờ hành chính sẽ gặp sự cố: đầy RAM, leak memory, hoặc CPU bị đẩy lên rất cao do plugin lỗi. Cần theo dõi thường xuyên.

Cài nhanh một script giám sát bằng systemd timer hoặc cron. Đầu tiên kiểm tra thủ công:

free -h
htop
df -h /

Nếu RAM đầy, kiểm tra process game đang chiếm bao nhiêu:

ps aux --sort=-%mem | head -10

Với Minecraft, nếu thấy RAM tăng dần không giảm, đó là dấu hiệu leak do plugin. Hãy thử tắt từng plugin để tìm thủ phạm. Với Palworld, cách xử lý triệt để là đặt Restart=always trong systemd và lên lịch restart server mỗi 6 tiếng bằng systemd timer.

Khi VPS bị đầy disk do log hoặc world file phình to, bài xử lý VPS full disk có các lệnh dọn dẹp cụ thể. Đừng để disk đầy rất cao, game server sẽ ghi file lỗi và crash liên tục.

Nên tạo snapshot trước mỗi lần cập nhật lớn (thêm plugin, nâng version). Snapshot trên VPS giúp bạn rollback trong 5 phút nếu bản cập nhật làm hỏng thế giới game. Hướng dẫn chi tiết trong bài tạo snapshot và khôi phục VPS an toàn.

Xử lý lỗi thường gặp

Người chơi không vào được server, timeout

Kiểm tra theo thứ tự: firewall đã mở đúng cổng UDP chưa (sudo ufw status), process game có đang listen không (sudo ss -ulpn), và IPv4 của VPS có đúng như người chơi nhập không. Nếu dùng SRCDS, hãy thêm +sv_lan 0-nomaster nếu không muốn server xuất hiện trên master list.

Ping ổn định nhưng game bị giật (rubber-banding)

Nguyên nhân thường là CPU single-core bị nghẽn, không phải do mạng. Kiểm tra bằng htop xem core nào đạt rất cao. Nếu đúng, giảm số lượng người chơi tối đa, tắt bớt plugin nặng, hoặc nâng cấp gói VPS có CPU xung nhịp cao hơn.

Server tự crash sau vài giờ chạy

Kiểm tra log: sudo journalctl -u ten-service -e. Nếu thấy OutOfMemoryError, hãy giảm -Xmx xuống còn 70% RAM vật lý để chừa cho OS và các tiến trình khác. Ví dụ VPS 4 GB RAM, đặt -Xmx3G là an toàn, không nên đặt 3.5G.

Câu hỏi thường gặp

VPS đặt máy chủ game riêng cần tối thiểu bao nhiêu RAM?

Với Minecraft vanilla cho 10 người, 2 GB RAM là đủ. Với game hiện đại như Palworld, tối thiểu 8 GB. Nguyên tắc chung: RAM là yếu tố quyết định trước tiên, thiếu RAM sẽ khiến server crash hoặc lag nặng hơn thiếu CPU.

Nên chọn VPS Linux hay Windows cho game server?

Hầu hết game server chạy tốt trên Linux và tốn ít RAM hơn Windows khoảng 20-30%. Chỉ chọn Windows khi game bắt buộc dùng .NET Framework mà bản Linux chưa hỗ trợ tốt. Với các game phổ biến như Minecraft, CS2, Palworld, hãy dùng Ubuntu 24.04.

Chơi game server ở Việt Nam, nên đặt VPS ở đâu?

Đặt tại Việt Nam cho ping thấp nhất với game thủ trong nước. Một VPS đặt tại Hà Nội hoặc TP.HCM với IPv4 thuộc dải Việt Nam sẽ có ping 5-15ms cho người chơi cùng thành phố, trong khi server Singapore thường 40-80ms.

VPS có đủ băng thông cho 20 người chơi không?

Đủ. Một game server như Minecraft chỉ tiêu thụ khoảng 1-3 Mbps cho 20 người chơi. Băng thông trong nước 100 Mbps của VPS Việt Nam dư sức đáp ứng, kể cả khi có vài người tải map lớn cùng lúc.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.