Dựng Minecraft Server giải trí

Dựng Minecraft Server giải trí
Photo by Connor Gan / Unsplash

Hôm nay tôi đổi gió một chút, không viết về startup hay công nghệ nghiêm túc nữa mà làm bài hướng dẫn giải trí. Dành cho bạn nào muốn dựng một server Minecraft riêng để chơi với bạn bè, nhưng tất cả đều kết nối qua VPN để đảm bảo an toàn, ổn định và riêng tư.

Cấu hình này hơi đặc biệt một chút: tất cả client dùng chung một file cấu hình OpenVPN, nhưng mỗi người sẽ được cấp một địa chỉ IP riêng khi kết nối. Nghĩa là không cần phát từng file .ovpn cho từng máy, cực kỳ tiện.


1. Chuẩn bị OpenVPN Server

Đầu tiên, bạn cần có một con VPS hoặc cloud instance để cài OpenVPN.
Cài xong, trong file /etc/openvpn/server.conf nhớ kiểm tra hoặc chỉnh các dòng sau:

port 1194
proto udp
dev tun
server 10.8.0.0 255.255.255.0
# ifconfig-pool-persist ipp.txt // nhớ tắt cái này
client-to-client
keepalive 10 120
persist-key
persist-tun
user nobody
group nogroup
duplicate-cn

Ở đây, client-to-client cho phép các máy cùng mạng VPN ping được nhau (cần cho Minecraft).
duplicate-cn cho phép nhiều người cùng dùng chung một file .ovpn.

Khởi động lại OpenVPN:

systemctl restart openvpn@server

Sau đó test thử kết nối bằng một máy client. Mỗi client sẽ tự động nhận một IP khác nhau (kiểu 10.8.0.2, 10.8.0.3...).

2. Chuẩn bị máy host

Máy này sẽ chạy Minecraft Server trong Docker.
Cài Docker và Screen:

apt update && apt install -y docker.io screen

Tạo thư mục lưu dữ liệu Minecraft:

mkdir -p /space/minecraft /space/backups

3. Tạo session screen

Để server chạy nền ngay cả khi bạn tắt terminal:

screen -S minecraft

4. Chạy container Docker có hỗ trợ OpenVPN

docker run -itd \
  --name minecraft \
  --cap-add=NET_ADMIN \
  --device /dev/net/tun:/dev/net/tun \
  -p 25565:25565 \
  -p 24454:24453 \
  -p 8123:8123 \
  -v /space/minecraft:/space/minecraft \
  ubuntu:22.04

--cap-add=NET_ADMIN--device /dev/net/tun là bắt buộc để container có thể kết nối VPN.

Port 25565 là port chính của Minecraft, 24454 là voice chat, 8123 là Dynmap. Nếu bạn có sài thêm Plugin nâng cao gì thì khai báo thêm.

5. Cài đặt môi trường trong container

Vào container:

docker exec -it minecraft bash

Cài Java, OpenVPN và các công cụ cần thiết:

apt update
apt install -y openjdk-21-jre-headless openvpn curl

Kiểm tra:

java -version
openvpn --version

6. Cài Minecraft Server

Vào thư mục làm việc:

cd /space/minecraft

Tải bản PaperMC mới nhất (1.21.10):

curl -o paper.jar https://api.papermc.io/v2/projects/paper/versions/1.21.10/builds/latest/downloads/paper-1.21.10.jar

Chấp nhận EULA:

echo "eula=true" > eula.txt

Khởi động server:

java -Xmx6G -Xms2G -jar paper.jar nogui

7. Kết nối OpenVPN trong container

Copy file .ovpn vào container:

docker cp TCU_OpenVPN.ovpn minecraft:/space/minecraft/

Kết nối VPN:

openvpn --config /space/minecraft/TCU_OpenVPN.ovpn --daemon

Kiểm tra IP:

ip addr show tun0

Nếu thấy dòng inet 10.8.x.x, nghĩa là bạn đã kết nối thành công.


8. Kiểm tra kết nối

Trên một máy client khác, kết nối cùng file .ovpn, sau đó ping thử IP của server Minecraft (ví dụ 10.8.0.6). Nếu ping được thì mở Minecraft và connect bằng IP đó qua port 25565.

9. Backup tự động (khuyến khích)

Tạo cron job để backup mỗi ngày:

crontab -e

Thêm dòng:

0 2 * * * tar czf /space/backups/minecraft-$(date +\%F).tar.gz /space/minecraft

10. Một vài lưu ý

  • Tất cả client dùng chung file .ovpn, nhưng OpenVPN sẽ cấp IP khác nhau nên không sợ trùng.
  • Đảm bảo bạn mở đúng port trong Docker (25565 cho Minecraft, 8123 cho DynMap nếu có).
  • Nếu muốn ổn định hơn, bạn có thể chuyển sang dùng docker-compose và quản lý bằng service manager, nhưng cách thủ công như trên đã đủ để chơi rồi.

Cách setup này hơi thủ công nhưng dễ hiểu và ổn định. Ưu điểm là bạn có thể dựng server chơi riêng, không lo lag hay bị người ngoài vào phá. Cả đám cùng chơi qua VPN, mỗi người một IP, nhìn map DynMap thấy như Google Map.

Nếu bạn làm theo hướng dẫn này, chỉ cần một con VPS nhỏ là đủ để host 4–6 người chơi ổn định.