SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor

วิธีติดตั้ง FiveM Server บน VPS ด้วยตนเองแบบละเอียด

เรียนรู้วิธีติดตั้ง FXServer บน Ubuntu ตั้งค่า artifact build และใส่ Cfx.re license key เปิดพอร์ต 30120 ทั้ง TCP และ UDP พร้อมคำแนะนำการตั้งค่า txAdmin ให้ปลอดภัยจากอินเทอร์เน็ต

สิ่งที่เซิร์ฟเวอร์ FiveM บน VPS จำเป็นต้องมี

เซิร์ฟเวอร์ FiveM บน VPS ประกอบด้วยผู้ใช้ Linux ที่ไม่มีสิทธิ์ระดับ root หนึ่งบัญชี, artifact build หนึ่งชุดจาก Cfx.re, licence key หนึ่งชุด และพอร์ตที่เปิดใช้งานทั้ง TCP และ UDP การติดตั้งใช้เวลาประมาณสิบนาที ส่วนที่เหลือของคู่มือนี้จะครอบคลุมปัจจัยที่ตัดสินว่าเซิร์ฟเวอร์จะสามารถเล่นได้หรือไม่ ได้แก่ ความเร็วของ CPU core เดียว, หน่วยความจำที่ทรัพยากรของคุณต้องการ และแผงควบคุมการจัดการที่ไม่ควรเปิดทิ้งไว้บนที่อยู่สาธารณะโดยเด็ดขาด

ข้อกำหนดเบื้องต้นสามประการนั้นตายตัว ไฟล์ไบนารีของเซิร์ฟเวอร์ที่เรียกว่า artifacts มาจากรายการ build อย่างเป็นทางการของ Cfx.re ส่วน licence key มาจากพอร์ทัลของ Cfx.re ที่ portal.cfx.re ซึ่งคู่มือเก่าๆ มักเรียกว่า keymaster โดย key จะถูกผูกไว้กับที่อยู่ IP ของเครื่องที่ใช้งาน ผู้เล่นทุกคนที่เชื่อมต่อจำเป็นต้องมีสำเนาเกม GTA V (Grand Theft Auto V) ที่ถูกกฎหมายบน Steam, Rockstar Games Launcher หรือ Epic Games รวมถึงบัญชี Cfx.re ฟรี ไคลเอนต์จะตรวจสอบความเป็นเจ้าของเกมเมื่อเริ่มทำงาน ดังนั้นเซิร์ฟเวอร์ที่สร้างขึ้นด้วยวิธีอื่นจะไม่สามารถใช้งานได้ และคู่มือนี้จะไม่ครอบคลุมเนื้อหาเกี่ยวกับการหลีกเลี่ยงเงื่อนไขดังกล่าวในทุกรูปแบบ

การโฮสต์เซิร์ฟเวอร์เป็นงานที่แตกต่างจากการเล่นเกมบนเครื่องนั้นๆ ซึ่งเป็นเรื่องของ ว่าคุณสามารถรันตัวเกมบน VPS ได้หรือไม่ และเป็นคำถามแยกต่างหากที่มีคำตอบแตกต่างกัน

เหตุผลที่ความเร็วต่อคอร์มีผลต่อความลื่นไหลของเซิร์ฟเวอร์ FiveM

FXServer ซึ่งเป็นไฟล์ binary ของเซิร์ฟเวอร์ FiveM จะประมวลผลตรรกะของเกมบนเธรดหลักเพียงเธรดเดียว สคริปต์ของทรัพยากร (resource) ทุกตัว ตัวจัดการเหตุการณ์ (event handler) และการอัปเดตสถานะทั้งหมดจะถูกประมวลผลผ่านลูปเดี่ยวนี้ การเพิ่มจำนวนคอร์ช่วยได้เพียงงานของ kernel, ฐานข้อมูล และ network stack เท่านั้น แต่ไม่สามารถแบ่งลูปของเกมออกเป็นส่วนๆ ได้ ดังนั้นเซิร์ฟเวอร์แบบ 4 vCPU ที่ใช้คอร์ความเร็วต่ำจึงเกิดอาการกระตุกเมื่อมีโหลดสูง ในขณะที่เซิร์ฟเวอร์แบบ 2 vCPU ที่ใช้คอร์ความเร็วสูงยังคงทำงานได้อย่างราบรื่น

ปัจจัยนี้ทำให้พฤติกรรมการเลือกซื้อ VPS แบบเดิมที่เน้นจำนวนคอร์เป็นหลักต้องเปลี่ยนไป คุณควรตรวจสอบความเร็วต่อคอร์ก่อนตัดสินใจจ่ายเงิน โดยเริ่มจากรุ่นของ CPU:

lscpu | grep -E 'Model name|MHz'

จากนั้นให้ตรวจสอบคะแนน single thread ของรุ่นนั้นๆ คะแนน PassMark single thread rating และคะแนน Geekbench single-core เป็นข้อมูลสาธารณะที่วัดประสิทธิภาพการทำงานของคอร์เดียว ซึ่งเป็นตัวเลขที่สำคัญที่สุดในกรณีนี้ หลังจากนั้นให้วัดประสิทธิภาพของเครื่องที่คุณได้รับจริง:

sudo apt update && sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

อ่านบรรทัด events per second ให้รันคำสั่งเดียวกันนี้บนผู้ให้บริการสองรายที่คุณกำลังพิจารณา เพื่อเปรียบเทียบประสิทธิภาพอย่างตรงไปตรงมา เนื่องจากภาระงานนั้นเหมือนกันและถูกจำกัดอยู่เพียงคอร์เดียว การทำ benchmark บน VPS ที่ทำซ้ำได้ จะแสดงวิธีรักษาค่าตัวเลขเหล่านี้ให้เปรียบเทียบกันได้ระหว่างเครื่อง

จากนั้นตรวจสอบว่าคอร์นั้นเป็นของคุณจริงหรือไม่:

vmstat 1 5

คอลัมน์สุดท้าย st คือ steal time ซึ่งหมายถึงสัดส่วนเวลาที่ virtual CPU ของคุณพร้อมทำงานแต่ hypervisor ทำให้ต้องรอ หากค่านี้สูงกว่า 1 หรือ 2 อย่างต่อเนื่อง แสดงว่าคุณกำลังแชร์คอร์จริงกับเพื่อนบ้านที่ใช้งานหนัก ซึ่งจะส่งผลให้เกิดอาการ rubber banding ในลูปของเกมทันที Steal time จากเพื่อนบ้านที่ใช้งานหนัก จะอธิบายวิธีอ่านค่าในคอลัมน์นี้และแนวทางแก้ไข

หน่วยความจำจะแปรผันตามทรัพยากรที่คุณใช้งาน ไม่ใช่แค่จำนวนช่องผู้เล่น ข้อมูลเซิร์ฟเวอร์พื้นฐานจาก Cfx.re ใช้หน่วยความจำเพียงไม่กี่ร้อยเมกะไบต์ แต่หากเป็น framework สำหรับ roleplay ที่มีทรัพยากร 40 ถึง 50 รายการและรันฐานข้อมูล MariaDB บนเครื่องเดียวกัน ความต้องการจะเปลี่ยนไปทันที โดย 4 GB คือค่าเริ่มต้นที่เหมาะสม และ 8 GB คือระดับที่เพียงพอสำหรับ 32 ถึง 64 ช่องผู้เล่น ตัวเลขเหล่านี้เป็นค่ามาตรฐานที่ชุมชนผู้ใช้งานทั่วไปใช้กัน ดังนั้นให้ถือเป็นจุดเริ่มต้นและคอยเฝ้าดู free -m ในขณะที่มีผู้เล่นใช้งานจริง

สร้างผู้ใช้และติดตั้ง dependencies

ให้รันเซิร์ฟเวอร์ด้วยผู้ใช้ทั่วไป ห้ามรันด้วย root โดยเด็ดขาด มีเหตุผลสองประการคือ การใช้ root เป็นนิสัยที่ไม่ดีสำหรับบริการที่เชื่อมต่อกับอินเทอร์เน็ต และตัว artifact ของ Linux ทำงานอยู่ภายใน root filesystem ของ Alpine Linux ที่รวมมาให้ ดังนั้นไฟล์ที่ถูกแตกโดย root จะไม่สามารถถูกเรียกใช้งานโดยผู้อื่นได้ ซึ่งเป็นสาเหตุที่พบบ่อยที่สุดที่ทำให้การติดตั้งใหม่ไม่ยอมเริ่มทำงาน

sudo adduser --disabled-password --gecos "" fivem
sudo apt update
sudo apt install -y git xz-utils curl tcpdump
sudo -iu fivem

ทุกขั้นตอนด้านล่างนี้จะดำเนินการโดยผู้ใช้ fivem จำเป็นต้องใช้ xz-utils เนื่องจากไฟล์ที่ดาวน์โหลดมาเป็นไฟล์บีบอัดแบบ .tar.xz และใช้ git ในการโคลนข้อมูลพื้นฐานของเซิร์ฟเวอร์

ดาวน์โหลด artifact build แบบระบุเวอร์ชัน

Linux build อยู่ในช่องทาง build_proot_linux ของเซิร์ฟเวอร์ Cfx.re artifact รายการจะระบุ build หนึ่งว่าเป็นรุ่นแนะนำล่าสุด ซึ่งป้ายกำกับนี้จะเปลี่ยนไปยัง build ใหม่ทุกสองสามสัปดาห์ ให้คุณเลือกปักหมุดที่โฟลเดอร์หมายเลขแทน การสร้างเซิร์ฟเวอร์ใหม่ในเดือนถัดไปจะทำให้คุณได้รับ binary ตัวเดิมที่คุณทดสอบในเดือนนี้ และการอัปเกรดจะกลายเป็นสิ่งที่คุณตัดสินใจทำด้วยตนเอง

mkdir -p ~/FXServer/server
cd ~/FXServer/server
curl -fLO https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/25770-8ddccd4e4dfd6a760ce18651656463f961cc4761/fx.tar.xz
tar xf fx.tar.xz
ls

Build 25770 มีป้ายกำกับแนะนำตอนที่ผมดูรายการในเดือนสิงหาคม 2026 ให้เปิด ไดเรกทอรีเดียวกัน ในเบราว์เซอร์เพื่อดูรุ่นปัจจุบัน จากนั้นคัดลอกชื่อโฟลเดอร์นั้น ซึ่งประกอบด้วยหมายเลข build และ commit hash ไปวางใน URL

ls ควรแสดง run.sh และไดเรกทอรี alpine ไดเรกทอรีนั้นคือหัวใจสำคัญ: Linux artifact จะมาพร้อมกับ Alpine root filesystem ขนาดเล็กของตัวเอง และเริ่มการทำงานของเซิร์ฟเวอร์ภายในนั้นโดยใช้ proot ซึ่งเป็นเครื่องมือระดับ userspace ที่จำลอง chroot โดยไม่ต้องใช้สิทธิ์ root นี่คือเหตุผลที่การดาวน์โหลดเพียงครั้งเดียวสามารถรันบน Ubuntu, Debian และ Rocky ได้โดยไม่ต้องติดตั้งแพ็กเกจเฉพาะของแต่ละ distribution

ตอนนี้ให้ clone ข้อมูลเซิร์ฟเวอร์พื้นฐาน ซึ่งเก็บทรัพยากรเริ่มต้นที่ server.cfg ของคุณจะเรียกใช้งาน:

git clone https://github.com/citizenfx/cfx-server-data.git ~/FXServer/server-data

รับ License key และเขียนไฟล์ server.cfg

ลงชื่อเข้าใช้ที่ portal.cfx.re ด้วยบัญชี Cfx.re ของคุณแล้วสร้าง server key พอร์ทัลจะถามหาที่อยู่ IP ของเครื่องที่จะใช้งาน และ key จะถูกผูกไว้กับที่อยู่นั้น การย้ายไปยัง VPS ใหม่หมายถึงการแก้ไข key ในพอร์ทัล ไม่ใช่การสร้าง key ใหม่ การแก้ไขจะมีผลทันที แต่ FXServer จะตรวจสอบความถูกต้องใหม่เมื่อรีสตาร์ทเท่านั้น

เขียนไฟล์ ~/FXServer/server-data/server.cfg:

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"

ensure mapmanager
ensure chat
ensure spawnmanager
ensure sessionmanager
ensure basic-gamemode
ensure hardcap

sv_hostname "My FiveM server"
sv_maxclients 48
set onesync on
sv_scriptHookAllowed false

sv_licenseKey ChangeMe

add_ace group.admin command allow
add_principal identifier.fivem:1 group.admin

sv_maxclients ยอมรับค่าตั้งแต่ 1 ถึง 2048 ค่าตั้งแต่ 32 ขึ้นไปจำเป็นต้องตั้งค่า onesync เป็น on หรือ legacy และค่าที่มากกว่า 64 จำเป็นต้องใช้ on โดย OneSync คือโหมดการรับรู้สถานะของเซิร์ฟเวอร์ ซึ่งช่วยให้เซิร์ฟเวอร์รองรับผู้เล่นได้มากกว่าจำนวนสล็อตพื้นฐานของตัวเกม การตั้งค่า 128 สล็อตโดยปิด OneSync จะไม่ทำให้คุณได้ 128 สล็อต แต่จะได้การตั้งค่าที่เซิร์ฟเวอร์ปฏิเสธการทำงาน

sv_licenseKey ให้ใส่ key โดยไม่มีเครื่องหมายคำพูดและไม่มีช่องว่างต่อท้าย FXServer จะแยกบรรทัดนั้นด้วยช่องว่าง ดังนั้นอักขระเพียงตัวเดียวที่เกินมาจะทำให้การตรวจสอบความถูกต้องล้มเหลวและเซิร์ฟเวอร์จะไม่ยอมเริ่มทำงาน

rcon_password ถูกละไว้ในไฟล์นั้นโดยเจตนา RCON (remote console) จะเปิดใช้งานก็ต่อเมื่อมีการตั้งค่าตัวแปรนี้เท่านั้น และมันจะฟังบนพอร์ต UDP เดียวกับตัวเกม รหัสผ่าน RCON บนพอร์ตสาธารณะคือช่องทางสั่งการระยะไกลเข้าสู่เซิร์ฟเวอร์ของคุณ อย่าตั้งค่าทิ้งไว้เว้นแต่คุณจะมีความจำเป็นเฉพาะเจาะจง และหากจำเป็นต้องใช้ ให้ตั้งรหัสผ่านให้ยาวและสุ่ม

sv_scriptHookAllowed ให้คงไว้เป็น false เอกสารอย่างเป็นทางการระบุว่าไม่แนะนำให้ใช้ เนื่องจากอนุญาตให้ไคลเอนต์ Script Hook V เข้ามา ซึ่งเปิดช่องให้เกิดการละเมิดจากฝั่งไคลเอนต์ได้

add_principal identifier.fivem:1 เป็นการมอบสิทธิ์ผู้ดูแลระบบให้กับบัญชี Cfx.re ID 1 ให้แทนที่ 1 ด้วย ID ตัวเลขของคุณเอง มิฉะนั้นคุณจะมอบสิทธิ์ผู้ดูแลระบบให้กับบัญชีของผู้อื่นและไม่มีสิทธิ์สำหรับตัวคุณเอง

เริ่มการทำงานด้วยตนเองหนึ่งครั้ง:

cd ~/FXServer/server-data
bash ~/FXServer/server/run.sh +exec server.cfg

จากเซสชัน SSH ที่สอง ให้สอบถามข้อมูลเกี่ยวกับเซิร์ฟเวอร์:

curl -s http://127.0.0.1:30120/info.json | head -c 200

หากได้รับ JSON ที่ระบุชื่อตัวแปรและทรัพยากรของเซิร์ฟเวอร์ แสดงว่า FXServer ผูกพอร์ตและตอบสนองแล้ว หากได้รับ Connection refused แสดงว่าเซิร์ฟเวอร์ไม่สามารถผูกพอร์ตได้ ให้ตรวจสอบผลลัพธ์ในคอนโซลแทนการคาดเดา

เซิร์ฟเวอร์ที่ไม่มี key จะแสดงข้อความนี้แล้วหยุดทำงาน:

This server does not have a license key specified. Please set the sv_licenseKey console variable to a key from https://keymaster.fivem.net/.

ข้อความดังกล่าวยังคงระบุที่อยู่ keymaster เดิม ซึ่งที่อยู่นั้นจะนำไปสู่พอร์ทัล Cfx.re เดียวกัน หากตั้งค่า key แล้วแต่เซิร์ฟเวอร์ยังไม่ยอมทำงาน สาเหตุทั่วไปคือ IP ที่ลงทะเบียนไว้กับ key ไม่ตรงกับเครื่องนี้อีกต่อไป

พอร์ตใดบ้างที่เซิร์ฟเวอร์ FiveM จำเป็นต้องเปิด?

พอร์ต 30120 ทั้งบนโปรโตคอล TCP (transmission control protocol) และ UDP (user datagram protocol) FiveM ใช้หมายเลขพอร์ตเดียวสำหรับสองโปรโตคอลและจำเป็นต้องเปิดใช้งานทั้งคู่ หากเปิดเฉพาะ TCP จะเกิดอาการที่น่าสับสนคือ http://your.ip:30120/info.json จะตอบสนองในเบราว์เซอร์ ทำให้ดูเหมือนเซิร์ฟเวอร์ทำงานปกติ แต่ไคลเอนต์เกมจะค้างอยู่ที่ Failed to get info from server และไม่สามารถเข้าสู่เซิร์ฟเวอร์ได้ เนื่องจากทั้งการสอบถามข้อมูลของไคลเอนต์และการรับส่งข้อมูลของเกมทำงานผ่าน UDP

sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbose

ให้เปิดเซสชัน SSH ทิ้งไว้อีกหนึ่งหน้าต่างในขณะที่คุณเปิดใช้งานไฟร์วอลล์ พื้นฐานการใช้งาน ufw สำหรับ VPS อธิบายถึงนโยบาย default deny ซึ่งทำให้กฎข้างต้นเพียงพอต่อการใช้งานด้วยตัวมันเอง

ผู้ให้บริการส่วนใหญ่จะมีไฟร์วอลล์เครือข่ายภายนอก guest ซึ่งควบคุมผ่านแผงควบคุม (panel) แทนที่จะเป็น shell กฎ ufw ไม่สามารถยืนยันสถานะของเลเยอร์นั้นได้ หาก TCP ตอบสนองจากภายนอกแล้วแต่ผู้เล่นยังไม่สามารถเชื่อมต่อได้ ให้ตรวจสอบการรับส่งข้อมูลบนเครือข่ายในขณะที่มีคนพยายามเชื่อมต่อ:

sudo tcpdump -ni any udp port 30120

หากมีแพ็กเก็ตเข้ามาแสดงว่าไฟร์วอลล์ภายนอกทำงานปกติและปัญหาอยู่ที่ภายในเซิร์ฟเวอร์ หากไม่มีการตอบสนองแสดงว่ามีบางอย่างที่อยู่หน้าเครื่องกำลังดรอปแพ็กเก็ตเหล่านั้น ดังนั้นให้ตรวจสอบแผงควบคุมของผู้ให้บริการเป็นลำดับถัดไป

จัดการเซิร์ฟเวอร์ด้วย txAdmin โดยไม่เปิดเผยสู่สาธารณะ

txAdmin ถูกรวมมาใน artifact ที่คุณดาวน์โหลดมาแล้ว ให้เริ่มทำงาน run.sh โดยไม่ต้องใส่ argument +exec แล้วระบบจะเปิดแผงควบคุมบนเว็บผ่าน TCP พอร์ต 40120 จากนั้นจะแสดง URL ของแผงควบคุมและ PIN ที่มีอายุการใช้งานสั้นบนคอนโซล คุณต้องใช้ PIN นั้นเพื่อเชื่อมโยงบัญชี Cfx.re ของคุณเพียงครั้งเดียว หลังจากนั้นคุณจะเข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบที่สร้างขึ้น

txAdmin ไม่มีรหัสผ่านเริ่มต้น ดังนั้นความเสี่ยงจึงไม่ใช่เรื่องรหัสผ่านที่คุณลืมเปลี่ยน แต่ความเสี่ยงอยู่ที่ตัวแผงควบคุมเอง ซึ่งทำหน้าที่เป็นคอนโซลระยะไกล มันสามารถรีสตาร์ทเซิร์ฟเวอร์ แก้ไข server.cfg ติดตั้งข้อมูลเซิร์ฟเวอร์ และรันคำสั่งในฐานะผู้ใช้เซิร์ฟเวอร์ของคุณ การปล่อยให้พอร์ต 40120 เข้าถึงได้จากอินเทอร์เน็ตจะทำให้หน้าล็อกอินของฟังก์ชันทั้งหมดนี้ปรากฏบนที่อยู่สาธารณะ และเครื่องมือสแกนจะพบพอร์ตแผงควบคุมที่เปิดอยู่ภายในเวลาไม่กี่ชั่วโมง ห้ามเปิดพอร์ต 40120 ในไฟร์วอลล์ ให้เข้าถึงผ่าน SSH tunnel จากเครื่องของคุณแทน:

ssh -N -L 40120:127.0.0.1:40120 fivem@YOUR_SERVER_IP

จากนั้นเปิด http://127.0.0.1:40120 ในเบราว์เซอร์ของคุณ ทราฟฟิกของแผงควบคุมจะวิ่งผ่านการเชื่อมต่อ SSH และพอร์ตจะยังคงปิดอยู่สำหรับบุคคลอื่น

มีกับดักหนึ่งอย่างที่ควรทราบก่อนที่คุณจะพยายามแก้ไขด้วยวิธีอื่น txAdmin จะอ่าน TXHOST_INTERFACE (ค่าเริ่มต้นคือ 0.0.0.0) เพื่อตัดสินใจว่าจะผูกกับอินเทอร์เฟซใด และเอกสารระบุชัดเจนว่าค่าเดียวกันนี้จะถูกบังคับใช้กับ FXServer หากคุณตั้งค่าเป็น 127.0.0.1 เพื่อซ่อนแผงควบคุม คุณจะผูกเซิร์ฟเวอร์เกมเข้ากับ loopback ด้วย ทำให้ไม่มีผู้เล่นคนใดสามารถเข้าถึงเซิร์ฟเวอร์ได้เลย ให้ปิดพอร์ตแผงควบคุมด้วยไฟร์วอลล์ ไม่ใช่ด้วยตัวแปรดังกล่าว หากต้องการย้ายแผงควบคุมไปยังพอร์ตอื่น ให้ตั้งค่า TXHOST_TXA_PORT ซึ่งรองรับค่าใดก็ได้ยกเว้น 30120 ส่วน convar รุ่นเก่าอย่าง +set txAdminPort ปรากฏอยู่ในคู่มือหลายฉบับ แต่เอกสารของ txAdmin เองระบุว่ามันถูกเลิกใช้งานแล้วและจะหยุดทำงานในรุ่นถัดไป

การทำให้เซิร์ฟเวอร์ทำงานต่อเนื่องหลังจากออกจากระบบ

bash run.sh จะยุติการทำงานพร้อมกับเซสชัน SSH ของคุณ tmux เป็นทางเลือกที่ดีในระหว่างการทดสอบ: ให้รัน tmux new -s fivem, เริ่มการทำงานของเซิร์ฟเวอร์, กด Ctrl-b แล้วตามด้วย d เพื่อแยกเซสชันออกมา และใช้ tmux attach -t fivem เพื่อกลับเข้าไปใหม่ เซสชันของ tmux จะไม่คงอยู่หลังจากการรีบูต ดังนั้นสิ่งใดก็ตามที่คุณต้องการให้ทำงานตลอดเวลาควรอยู่ใน systemd unit

เขียนไฟล์ /etc/systemd/system/fivem.service:

[Unit]
Description=FiveM FXServer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=fivem
Environment=HOME=/home/fivem
WorkingDirectory=/home/fivem/FXServer/server-data
ExecStart=/bin/bash /home/fivem/FXServer/server/run.sh +exec server.cfg
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now fivem
systemctl status fivem
journalctl -u fivem -f

enable --now ทำหน้าที่สองอย่างคือ เริ่มการทำงานของบริการทันที และทำให้บริการกลับมาทำงานใหม่หลังจากรีบูต เซิร์ฟเวอร์ที่เริ่มด้วยตนเองจะหยุดทำงานหลังจากมีการอัปเดต kernel ครั้งถัดไป journalctl -u fivem -f คือคอนโซลของคุณในตอนนี้ เนื่องจากบริการของ systemd ไม่มีเทอร์มินัลที่คุณจะพิมพ์คำสั่งเข้าไปได้ หากคุณจัดการเซิร์ฟเวอร์ผ่าน txAdmin แทน ให้ลบ +exec server.cfg ออกจาก ExecStart และชี้ WorkingDirectory ไปที่ /home/fivem/FXServer/server เนื่องจาก txAdmin จะเริ่มการทำงานของเซิร์ฟเวอร์เกมด้วยตัวเองและเก็บโฟลเดอร์ข้อมูลไว้ข้างๆ run.sh

สิ่งที่ควรสำรองข้อมูลและตำแหน่งที่จัดเก็บ

ไม่จำเป็นต้องสำรองข้อมูลตัว artifacts เนื่องจากคุณสามารถดาวน์โหลด build ที่ระบุเวอร์ชันไว้กลับมาใหม่ได้ภายในเวลาไม่กี่นาที แต่มี 4 สิ่งที่เป็นของคุณเพียงผู้เดียว:

  • ~/FXServer/server-data/resources: ทรัพยากรทุกอย่างที่คุณติดตั้ง ซื้อ หรือเขียนขึ้นเอง
  • server.cfg ไม่ว่าจะอยู่ที่ใด: การตั้งค่าเซิร์ฟเวอร์ทั้งหมด รวมถึงข้อมูลผู้ดูแลระบบ (admin principals) ของคุณ
  • ~/FXServer/server/txData: การตั้งค่า รายชื่อผู้ดูแลระบบ และ log ของ txAdmin สำหรับ Linux artifact โฟลเดอร์นี้จะถูกสร้างขึ้นถัดจาก run.sh
  • ฐานข้อมูล MariaDB หรือ MySQL หาก framework ของคุณมีการใช้งาน ข้อมูลตัวละคร เงิน ยานพาหนะ และคลังไอเทมจะถูกเก็บไว้ที่นั่นเท่านั้น ดังนั้นการสำรองข้อมูลทรัพยากรโดยไม่มีการ dump ฐานข้อมูล จะทำให้คุณได้โลกที่ว่างเปล่าเมื่อกู้คืนข้อมูล
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

การเก็บไฟล์ dump ไว้ในดิสก์ลูกเดียวกับเซิร์ฟเวอร์ไม่ใช่การสำรองข้อมูล เพราะดิสก์คืออุปกรณ์ที่อาจเกิดความเสียหายได้ คุณควรส่งข้อมูลออกไปภายนอกเซิร์ฟเวอร์ตามกำหนดเวลา ซึ่งเป็นสิ่งที่ การสำรองข้อมูลด้วย restic จาก VPS มีไว้เพื่อการนี้

รูปแบบความล้มเหลวและข้อความที่คุณจะพบ

Permission denied ในขณะโหลด เซิร์ฟเวอร์จะหยุดทำงานทันทีพร้อมแสดงข้อความในลักษณะนี้:

run.sh: line 8: /home/fivem/FXServer/server/alpine/opt/cfx-server/ld-musl-x86_64.so.1: Permission denied

เหตุการณ์นี้เกิดขึ้นเนื่องจากไฟล์ถูกแตกออกมาด้วย sudo ทำให้ทุกไฟล์ภายใต้ alpine/ มีเจ้าของเป็น root และผู้ใช้ fivem ไม่สามารถรันตัวโหลดภายในนั้นได้ ให้แก้ไขความเป็นเจ้าของด้วย sudo chown -R fivem:fivem /home/fivem/FXServer หรือลบโฟลเดอร์ดังกล่าวแล้วแตกไฟล์ใหม่อีกครั้งในฐานะผู้ใช้ fivem

tar ปฏิเสธที่จะเปิดไฟล์ที่ดาวน์โหลดมา tar (child): xz: Cannot exec: No such file or directory หมายความว่าแพ็กเกจ xz-utils ขาดหายไป ทำให้ tar ไม่สามารถแตกไฟล์ประเภท .tar.xz ได้ ให้ติดตั้งแพ็กเกจดังกล่าวแล้วลองแตกไฟล์ใหม่อีกครั้ง หากการดาวน์โหลดเสร็จสิ้นเร็วเกินไป มักจะเป็นเพราะไฟล์ที่ได้คือหน้าเว็บแจ้งข้อผิดพลาด HTML ที่ถูกบันทึกเป็น fx.tar.xz และ tar จะรายงานว่าไฟล์นั้นเสียหาย

เซิร์ฟเวอร์รันอยู่แต่ไม่มีใครเชื่อมต่อได้ ให้ตรวจสอบพอร์ตก่อนตามลำดับนี้: กฎ ufw สำหรับทั้ง TCP และ UDP บนพอร์ต 30120, จากนั้นตรวจสอบ network firewall ของผู้ให้บริการ และสุดท้ายตรวจสอบ IP ที่ลงทะเบียนไว้กับ licence key การใช้คำสั่ง curl ไปยัง info.json จากภายนอกเซิร์ฟเวอร์จะช่วยแยกแยะได้ทันทีว่าปัญหาเกิดจากเครือข่ายหรือตัวเซิร์ฟเวอร์เอง

ค่า Tick time เพิ่มสูงขึ้นเมื่อมีผู้เล่นเข้ามา แผงควบคุมประสิทธิภาพของ txAdmin จะแสดงค่า tick time ของเซิร์ฟเวอร์ เมื่อค่านี้เพิ่มขึ้นตามจำนวนผู้เล่นในขณะที่การใช้งาน CPU โดยรวมยังดูต่ำ แสดงว่ามี resource ตัวใดตัวหนึ่งกำลังใช้งาน main thread จนเต็ม โปรดจำหลักการคำนวณไว้ว่า: บนเครื่องที่มี 4 vCPU การที่ core หนึ่งทำงานเต็มประสิทธิภาพจะแสดงผลเป็นประมาณ 25 เปอร์เซ็นต์ของการใช้งาน CPU ทั้งหมดใน top ซึ่งดูเหมือนเครื่องยังว่างอยู่ทั้งที่ความจริงไม่ใช่ ให้หยุดการทำงานของ resource ทีละตัวแล้วสังเกตค่า tick time เพื่อหาว่าตัวใดเป็นสาเหตุที่ทำให้เกิดภาระงานสูง

การประเมินขนาดเมื่อเทียบกับเซิร์ฟเวอร์เกมอื่น

เซิร์ฟเวอร์ FiveM ที่เล่นได้ลื่นไหลต้องอาศัยความเร็วของ single core ที่สูงประกอบกับหน่วยความจำที่เพียงพอสำหรับรายการ resource ที่คุณใช้งานจริง จำนวน slot ผู้เล่นจะขึ้นอยู่กับปัจจัยทั้งสองนี้ และการเพิ่มจำนวน vCPU ไม่สามารถช่วยแก้ปัญหา core ที่ทำงานช้าได้ การเลือก VPS สำหรับเซิร์ฟเวอร์เกม จะอธิบายถึงการแลกเปลี่ยนทรัพยากรเหล่านี้สำหรับกลุ่มเซิร์ฟเวอร์ที่หลากหลาย และ การรันเซิร์ฟเวอร์ Minecraft บน VPS ก็มีลักษณะพื้นฐานเดียวกัน คือมี main tick loop เพียงตัวเดียว ดังนั้นความเร็วต่อ core จึงเป็นตัวกำหนดขีดจำกัดสูงสุดในกรณีนั้นเช่นกัน

FAQ

เซิร์ฟเวอร์ FiveM ต้องการ CPU และ RAM เท่าใด

CPU ที่มีคอร์ความเร็วสูงหนึ่งคอร์มีความสำคัญมากกว่าการมีหลายคอร์ที่ความเร็วต่ำ เนื่องจาก FXServer ประมวลผลตรรกะของเกมบนเธรดหลักเพียงเธรดเดียว ให้เปรียบเทียบคะแนน single thread ของรุ่น CPU นั้นๆ จากนั้นตรวจสอบบนเครื่องด้วย sysbench cpu --threads=1 run และตรวจสอบว่า vmstat แสดงค่า steal time ใกล้ศูนย์ สำหรับหน่วยความจำ ข้อมูลเซิร์ฟเวอร์ Cfx.re พื้นฐานใช้พื้นที่เพียงไม่กี่ร้อยเมกะไบต์ ในขณะที่เฟรมเวิร์กสำหรับ roleplay ที่มีทรัพยากร (resources) ประมาณ 40 ถึง 50 รายการรวมถึงฐานข้อมูลในเครื่อง จะทำงานได้ดีที่ 8 GB และจะเริ่มติดขัดหากต่ำกว่า 4 GB ตัวเลขเหล่านี้เป็นค่าทั่วไปของชุมชน ดังนั้นควรตรวจสอบ free -m ในช่วงที่มีผู้เล่นสูงสุดแทนการเชื่อตัวเลขเหล่านี้เพียงอย่างเดียว

ผู้เล่นจำเป็นต้องมี GTA V เพื่อเข้าเซิร์ฟเวอร์ FiveM ของฉันหรือไม่

ใช่ ผู้เล่นทุกคนที่เชื่อมต่อจำเป็นต้องมีสำเนา GTA V ที่ถูกลิขสิทธิ์และถูกต้องบน Steam, Rockstar Games Launcher หรือ Epic Games รวมถึงบัญชี Cfx.re ฟรี ไคลเอนต์ FiveM จะตรวจสอบความเป็นเจ้าของเกมก่อนที่จะอนุญาตให้เชื่อมต่อ ไม่มีวิธีใดที่ได้รับการสนับสนุนในการหลีกเลี่ยงข้อกำหนดนี้ และการรันเซิร์ฟเวอร์ที่พยายามหลีกเลี่ยงเงื่อนไขดังกล่าวถือว่าอยู่นอกเหนือสิ่งที่ Cfx.re อนุญาต

เซิร์ฟเวอร์ FiveM ต้องเปิดพอร์ตใดบ้าง

ต้องเปิดพอร์ต 30120 ทั้ง TCP และ UDP จุดเชื่อมต่อ HTTP เช่น info.json และการดาวน์โหลดทรัพยากรจะใช้ TCP ส่วนทราฟฟิกของเกมจากไคลเอนต์จะใช้ UDP การเปิดเฉพาะ TCP จะทำให้เกิดกรณีที่น่าสับสนคือเซิร์ฟเวอร์ตอบสนองต่อเบราว์เซอร์ได้ แต่ผู้เล่นจะพบกับ Failed to get info from server สำหรับ txAdmin ต้องใช้ TCP 40120 และพอร์ตนี้ควรปิดไม่ให้เข้าถึงได้จากอินเทอร์เน็ต

การเปิด txAdmin ไว้ที่พอร์ต 40120 ปลอดภัยหรือไม่

ไม่ปลอดภัย txAdmin เป็นคอนโซลระยะไกลที่สามารถรีสตาร์ทเซิร์ฟเวอร์ แก้ไขการตั้งค่า และรันคำสั่งได้ ดังนั้นการเปิดแผงควบคุมทิ้งไว้จึงเท่ากับการเปิดช่องทางควบคุมเซิร์ฟเวอร์เกมทั้งหมด ไม่มีรหัสผ่านเริ่มต้น แต่หน้าล็อกอินที่เปิดสาธารณะจะเชิญชวนให้เกิดการโจมตีเพื่อเดารหัสผ่านที่คุณอาจมองไม่เห็น ควรปิดพอร์ต 40120 ในไฟร์วอลล์และเข้าถึงแผงควบคุมผ่าน SSH tunnel ด้วย ssh -N -L 40120:127.0.0.1:40120 user@server จากนั้นจึงเข้าใช้งานที่ http://127.0.0.1:40120 ห้ามผูก txAdmin ไว้กับ 127.0.0.1 โดยใช้ TXHOST_INTERFACE เพราะการตั้งค่าดังกล่าวจะบังคับให้เซิร์ฟเวอร์เกมทำงานบน loopback และจะไม่มีผู้เล่นคนใดสามารถเชื่อมต่อได้

ฉันควรล็อกเวอร์ชัน artifact หรือใช้เวอร์ชันล่าสุดที่แนะนำเสมอ

ควรล็อกโฟลเดอร์ build ที่ระบุหมายเลขไว้ ป้ายกำกับที่แนะนำ (recommended) จะเปลี่ยนไปยัง build ใหม่เป็นประจำ ดังนั้นสคริปต์ที่ดึงเวอร์ชันแนะนำอาจทำให้คุณได้ไบนารีที่ต่างออกไปในการติดตั้งใหม่แต่ละครั้ง และเซิร์ฟเวอร์ที่เคยทำงานได้เมื่อวานอาจพังได้เมื่อติดตั้งใหม่ด้วยเหตุผลที่ไม่เกี่ยวข้องกับการเปลี่ยนแปลงของคุณ ให้บันทึกหมายเลข build และ commit hash ที่คุณทดสอบแล้วไว้ อัปเกรดอย่างตั้งใจ และเก็บโฟลเดอร์เดิมไว้ในดิสก์เพื่อให้คุณสามารถสลับกลับได้โดยการแก้ไข path เพียงจุดเดียวใน systemd unit ของคุณ

#fivem#game-server#txadmin#single-thread#vps