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

วิธีติดตั้งเซิร์ฟเวอร์ FiveM บน 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 อย่างละหนึ่งพอร์ต การติดตั้งใช้เวลาประมาณ 10 นาที ส่วนที่เหลือของคู่มือนี้จะครอบคลุมปัจจัยที่ตัดสินว่าเซิร์ฟเวอร์จะเล่นได้หรือไม่ ได้แก่ ความเร็วของ CPU แบบ single core, หน่วยความจำที่ทรัพยากรของคุณต้องการ และแผงควบคุมการจัดการ (management panel) ซึ่งไม่ควรเปิดทิ้งไว้บนที่อยู่สาธารณะโดยเด็ดขาด

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

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

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

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

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

lscpu | grep -E 'Model name|MHz'

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

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

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

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

vmstat 1 5

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

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

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

ให้รันเซิร์ฟเวอร์ด้วยผู้ใช้ทั่วไป ห้ามรันด้วย root โดยเด็ดขาด ด้วยเหตุผลสองประการ ประการแรก การใช้ root เป็นนิสัยที่ไม่ดีสำหรับบริการใดก็ตามที่เชื่อมต่อกับอินเทอร์เน็ต ประการที่สอง Linux artifact ทำงานอยู่ภายใน Alpine Linux root filesystem ที่รวมมาให้ ดังนั้นไฟล์ที่ถูกแตกโดย 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 ในการ clone ข้อมูลพื้นฐานของเซิร์ฟเวอร์

ดาวน์โหลด build ของ artifact แบบระบุเวอร์ชัน (pinned)

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

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

Build 35245 มีป้ายกำกับ Recommended ในขณะที่ผมตรวจสอบ หน้าดาวน์โหลดเซิร์ฟเวอร์ของ Cfx.re เมื่อวันที่ 9 ตุลาคม 2026 ให้เปิดหน้านั้น เลือก Linux แล้วคัดลอกชื่อโฟลเดอร์จากลิงก์ fx.tar.xz ปัจจุบัน ซึ่งประกอบด้วยหมายเลข build และ commit hash ไปใส่ใน URL รายการไดเรกทอรี artifact แบบเก่าที่คู่มือหลายฉบับยังคงลิงก์ไปหานั้น ปัจจุบันจะถูกเปลี่ยนเส้นทางไปยังหน้านี้แทน

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

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

ตอนนี้ให้ clone ข้อมูลเซิร์ฟเวอร์พื้นฐาน ซึ่งเก็บ resource เริ่มต้นที่ 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 จะถูกผูกไว้กับที่อยู่ IP นั้น การย้ายไปยัง 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 session สำรองไว้ในขณะที่คุณเปิดใช้งาน firewall ใดๆ พื้นฐาน ufw สำหรับ VPS ได้อธิบายถึงนโยบาย default deny ซึ่งทำให้กฎข้างต้นเพียงพอต่อการใช้งานด้วยตัวมันเอง

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

sudo tcpdump -ni any udp port 30120

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

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

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

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

  • ~/FXServer/server-data/resources: ทรัพยากรทั้งหมดที่คุณติดตั้ง ซื้อ หรือเขียนขึ้นเอง
  • server.cfg: ไม่ว่าจะอยู่ที่ใดก็ตาม คือการตั้งค่าทั้งหมดของเซิร์ฟเวอร์ รวมถึงบัญชีผู้ดูแลระบบของคุณ
  • ~/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 จากนั้นตรวจสอบไฟร์วอลล์เครือข่ายของผู้ให้บริการ และสุดท้ายคือ 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 ก็มีลักษณะพื้นฐานเดียวกัน คือมี tick loop หลักเพียงหนึ่งเดียว ดังนั้นความเร็วต่อ core จึงเป็นตัวกำหนดขีดจำกัดสูงสุดในกรณีนั้นเช่นกัน

FAQ

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

CPU ที่มีคอร์ความเร็วสูงหนึ่งคอร์มีความสำคัญมากกว่าการมีหลายคอร์ที่ความเร็วต่ำ เนื่องจาก FXServer รันตรรกะของเกมบนเธรดหลักเพียงเธรดเดียว ให้เปรียบเทียบคะแนน single thread ของรุ่น CPU นั้นๆ จากนั้นตรวจสอบบนเครื่องด้วย sysbench cpu --threads=1 run และตรวจสอบให้แน่ใจว่า vmstat แสดงค่า steal time ใกล้ศูนย์ สำหรับหน่วยความจำ ข้อมูลเซิร์ฟเวอร์ Cfx.re พื้นฐานใช้พื้นที่เพียงไม่กี่ร้อยเมกะไบต์ ในขณะที่เฟรมเวิร์กสำหรับ roleplay ที่มีทรัพยากร 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 ที่ระบุหมายเลขเวอร์ชันไว้ ป้ายกำกับที่แนะนำจะเปลี่ยนไปยัง build ใหม่เป็นประจำ ดังนั้นสคริปต์ที่ดึงเวอร์ชันแนะนำอาจทำให้คุณได้รับไบนารีที่ต่างออกไปในการติดตั้งใหม่แต่ละครั้ง และเซิร์ฟเวอร์ที่เคยทำงานได้เมื่อวานอาจพังได้ในการติดตั้งใหม่ด้วยเหตุผลที่ไม่เกี่ยวข้องกับการเปลี่ยนแปลงของคุณ ให้บันทึกหมายเลข build และ commit hash ที่คุณทดสอบแล้ว อัปเกรดอย่างตั้งใจ และเก็บโฟลเดอร์ก่อนหน้าไว้ในดิสก์เพื่อให้คุณสามารถสลับกลับได้โดยการแก้ไข path ใน systemd unit ของคุณ อย่างไรก็ตาม อย่าปล่อยให้เวอร์ชันที่ล็อกไว้เก่าเกินไป เนื่องจากนโยบายของ Cfx.re ระบุว่า artifact ที่ไม่ได้รับการสนับสนุนและเก่ากว่า 3 เดือนจะไม่สามารถปรากฏในรายการเซิร์ฟเวอร์ได้ ดังนั้นควรทำการอัปเกรดภายในระยะเวลาที่กำหนด

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