SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

如何在 VPS 上架設 FiveM 伺服器

在 Ubuntu 安裝 FXServer、固定 artifact build,加入 Cfx.re 授權金鑰,開放 TCP 與 UDP 的 30120,並避免將 txAdmin 暴露於公用網際網路。

VPS 上的 FiveM 伺服器需求

VPS 上的 FiveM 伺服器需要 1 個未具特殊權限的 Linux 使用者、1 個來自 Cfx.re 的 artifact build、1 組授權金鑰,以及在 TCP 和 UDP 上都開放的 1 個連接埠。安裝約需 10 分鐘。本指南其餘內容說明決定伺服器是否能順暢遊玩的因素:單一 CPU 核心的效能、資源所需的記憶體,以及不應暴露在公用位址上的管理面板。

有 3 項先決條件是固定的。伺服器二進位檔稱為 artifacts,來源是官方 Cfx.re build 清單。授權金鑰來自 Cfx.re 入口網站 portal.cfx.re,這就是舊版指南所稱的 keymaster。金鑰會綁定至使用該金鑰之機器的位址。每位連線的玩家都需要在 Steam、Rockstar Games Launcher 或 Epic Games 上擁有 GTA V(Grand Theft Auto V)的合法副本,並且需要免費的 Cfx.re 帳戶。用戶端啟動時會檢查遊戲擁有權,因此使用其他方式建立的伺服器無法運作。本指南不涵蓋任何形式的替代內容。

在該主機上託管伺服器,與在主機上遊玩是不同的工作。至於是否能在 VPS 上執行遊戲本身,則是另一個問題,答案也不同。

單核心速度決定 FiveM 伺服器的運作感受

FXServer 是 FiveM 的伺服器二進位檔,會在單一主執行緒上執行遊戲邏輯。每個 resource 腳本、每個事件處理常式及每次狀態更新,都會經過這個單一迴圈。額外的核心可協助 kernel、資料庫與網路堆疊,但無法分割遊戲迴圈。因此,慢核心上的 4 vCPU 主機在負載下會出現卡頓,快核心上的 2 vCPU 主機反而能維持流暢。

這與一般 VPS 選購習慣相反,因為一般選購時通常把核心數量當成主要指標。購買前先確認每核心速度。先查看 CPU 型號:

lscpu | grep -E 'Model name|MHz'

接著查詢該型號公布的單執行緒分數。PassMark single thread rating 與 Geekbench single-core score 都是公開資料,且都測量單一核心執行工作,這正是此處重要的數值。之後,再測量你實際取得的主機:

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

查看 events per second 那一行。在兩家候選供應商上執行相同指令,即可進行公平比較,因為工作負載相同,且會限制在單一核心上。可重複執行的 VPS 基準測試說明如何讓不同主機的數值保持可比性。

接著確認該核心確實由你使用:

vmstat 1 5

最後一欄 st 是 steal time,表示虛擬 CPU 已準備執行,但 hypervisor 使其等待的時間比例。穩定高於 1 或 2 的數值,代表你與忙碌的鄰近租戶共用實體核心;遊戲迴圈會立即受到影響,表現為橡皮筋效應。來自吵雜鄰近租戶的 Steal time說明如何讀取該欄,以及如何處理這個問題。

記憶體用量取決於執行的 resources,而不只是 slots 數量。Cfx.re 提供的基礎伺服器資料只需幾百 MB。若同一台主機執行包含 40 或 50 個 resources 的角色扮演框架,以及 MariaDB 資料庫,需求就不同了:4 GB 是合理的最低值,32 到 64 slots 使用 8 GB 會較為寬裕。這些是社群部署常公布的典型數值,應將其視為起點,並在實際玩家負載下監控 free -m。

建立使用者並安裝相依套件

請以一般使用者執行伺服器,絕不要使用 root。原因有兩個。對任何面向網際網路的服務而言,使用 root 都是不良習慣。此外,Linux artifact 會在內嵌的 Alpine Linux root 檔案系統中執行。因此,由 root 解開的檔案無法由其他使用者執行。這是全新安裝後無法啟動最常見的原因。

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

以下所有操作都會以 fivem 使用者執行。下載檔案是 .tar.xz archive,因此需要 xz-utils;複製基礎伺服器資料則使用 git。

下載固定版本的成品

Linux 建置版本位於 Cfx.re artifact server 的 build_proot_linux channel。Cfx.re server download page 會將一個建置版本標示為 Recommended,將較新的版本標示為 Latest;發布新版本後,這兩個標籤都會移至新的建置版本。請改為固定編號資料夾。下個月重新建置伺服器時,就能取得與本月測試過的相同二進位檔,升級也會成為明確的決策。

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

我在 9 October 2026 檢查 Cfx.re server download page 時,Build 35245 帶有 Recommended 標籤。開啟該頁面,選擇 Linux,並從目前的 fx.tar.xz 連結複製資料夾名稱,再將它加入 URL。許多指南仍連結的舊 artifacts 目錄清單,現在會重新導向至同一頁面。

固定版本仍有使用期限。Cfx.re 會支援 Recommended artifact,直到下一個版本發布後 6 weeks;其政策也指出,超過 3 months 的不受支援 server artifacts 將無法從 server browser 加入。過時的建置版本仍可執行,但玩家無法再從 browser 加入,因此請將升級排入行事曆,不要永久固定版本。

ls 現在應顯示 run.sh 和 alpine 目錄。該目錄就是關鍵:Linux artifact 內含自己的精簡 Alpine root filesystem,並使用 proot 在其中啟動伺服器。proot 是不需要 root 權限即可模擬 chroot 的 userspace 工具。因此,單一下載檔即可在 Ubuntu、Debian 和 Rocky 上執行,不需要安裝特定發行版的套件。

現在複製 base server data,其中包含 server.cfg 啟動時使用的預設資源:

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

取得授權金鑰並撰寫 server.cfg

登入 portal.cfx.re 的 Cfx.re 帳戶,建立伺服器金鑰。入口網站會要求輸入要使用該金鑰之機器的 IP 位址,且金鑰會綁定至該位址。搬遷至新的 VPS 時,應在入口網站編輯金鑰,而不是建立第二組金鑰。編輯會立即生效,但 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 是伺服器的狀態感知模式,可讓伺服器超過基礎遊戲原本較少的玩家連線數。若在關閉 OneSync 的情況下設定 128 個連線數,並不會得到 128 個連線數,而是得到一份伺服器會拒絕的設定。

sv_licenseKey 的值不得加引號,也不得包含結尾空格。FXServer 會以空白字元分割該行,因此多出的任何字元都會使驗證失敗,導致伺服器無法啟動。

rcon_password 刻意未放在該檔案中。只有設定此變數時,才會啟用 RCON(遠端主控台),而且 RCON 會監聽與遊戲相同的 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 表示伺服器從未繫結該埠,因此應查看主控台輸出,而不是自行猜測原因。

沒有金鑰的伺服器會顯示以下訊息,然後停止:

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 入口網站。若已設定金鑰,但伺服器仍拒絕執行,通常是因為金鑰登錄的 IP 位址已不再符合這台機器的 IP 位址。

FiveM 伺服器需要開放哪些連接埠?

連接埠 30120 必須同時開放 TCP(傳輸控制協定)與 UDP(使用者資料包協定)。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 工作階段開啟。VPS 的 ufw 基礎說明預設拒絕政策;採用該政策後,上述規則本身就已足夠。

大多數供應商也會在 guest 外部配置網路防火牆,並從管理面板控制,而不是透過 shell 控制。ufw 規則無法證明外部防火牆層已允許流量。當外部可以取得 TCP 回應,但玩家仍然無法連線時,請在有人嘗試連線期間監看網路封包:

sudo tcpdump -ni any udp port 30120

封包能夠抵達表示外部防火牆正常,問題位於伺服器內部。完全沒有封包則表示伺服器前方的設備正在丟棄封包,下一步請檢查供應商的管理面板。

在不公開連接埠的情況下使用 txAdmin 管理伺服器

txAdmin 已包含在你先前下載的 artifact 中。啟動 run.sh 時不要加入 +exec 引數,服務會在 TCP port 40120 啟動 Web 面板,然後在主控台輸出面板 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 可隱藏面板,但也會讓遊戲伺服器繫結至迴送介面,因此玩家將完全無法連線到伺服器。請使用防火牆關閉面板埠,不要使用該變數。若要將面板移至其他連接埠,請設定 TXHOST_TXA_PORT;此設定接受除 30120 以外的任何值。較舊的 +set txAdminPort convar 出現在許多指南中,但 txAdmin 官方文件已將其標示為 deprecated,並說明未來版本將停止支援。

登出後讓伺服器持續執行

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 service 沒有可供輸入的終端機。若改用 txAdmin 管理伺服器,請從 ExecStart移除 +exec server.cfg,並將 WorkingDirectory指向 /home/fivem/FXServer/server,因為 txAdmin 會自行啟動遊戲伺服器,並將其資料資料夾放在 run.sh旁。

備份哪些內容,以及其所在位置

無須備份 artifacts,因為您可以在幾分鐘內重新下載固定版本的 build。以下 4 項內容只有您擁有。

  • ~/FXServer/server-data/resources:您安裝、購買或撰寫的每項 resource。
  • server.cfg,無論位於何處:整台伺服器的設定,包括您的管理員 principals。
  • ~/FXServer/server/txData:txAdmin 的設定、管理員清單與 logs。使用 Linux artifact 時,此資料夾會建立在 run.sh 旁邊。
  • MariaDB 或 MySQL 資料庫,前提是您的 framework 使用其中之一。角色、金錢、車輛與 inventory 都儲存在資料庫中,除此之外沒有其他位置。因此,只備份 resource 而不匯出資料庫,還原後會得到空白世界。
mkdir -p ~/backups
mysqldump -u fivem -p --single-transaction fivem_db > ~/backups/fivem-$(date +%F).sql

與伺服器位於同一磁碟上的 dump 不算備份,因為可能故障的正是該磁碟。請依排程將備份移出這台伺服器,這正是 從 VPS 執行 restic 備份 的用途。

錯誤模式與您會看到的字串

Loader 權限遭拒。 伺服器會立即結束,並顯示類似以下的訊息:

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

這是因為封存檔使用 sudo 解壓縮,導致 alpine/ 下的所有內容都屬於 root,而 fivem 使用者無法執行其中的 loader。請使用 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 會將此情況回報為損毀的封存檔。

伺服器正在執行,但沒有人能加入。 先依序檢查連接埠:30120 上 TCP 與 UDP 的 ufw 規則、供應商自有的網路防火牆,以及授權金鑰登記的 IP。從伺服器外部以 info.json 檢查 curl,即可透過一個命令區分網路問題與伺服器問題。

玩家加入後 tick time 持續升高。 txAdmin 的效能面板會顯示伺服器的 tick time。若 tick time 隨玩家人數上升,但整體 CPU 使用率看起來很低,表示某個 resource 正占滿主執行緒。請記住計算方式:在 4 vCPU 的伺服器上,單一核心滿載時,在 top 中會顯示約 25 percent 的總 CPU 使用率,看起來像是閒置,實際上並非如此。逐一停止 resource,並監看 tick time,以找出耗用資源的項目。

與其他遊戲伺服器比較規格

可正常遊玩的 FiveM 伺服器,需要高效能的單核心,以及足以執行實際資源清單的記憶體。玩家人數上限取決於這兩項條件;核心速度不足時,增加多少 vCPU 都無法補救。為遊戲伺服器挑選 VPS 會針對混合型伺服器群組分析這項取捨;在 VPS 上執行 Minecraft 伺服器 的原理也相同:底層都有一個主要 tick 迴圈,因此單核心速度同樣決定可達到的上限。

FAQ

FiveM 伺服器需要多少 CPU 和 RAM?

單一高效能核心比多個低效能核心更重要,因為 FXServer 會在單一主執行緒上處理遊戲邏輯。先比較 CPU 型號公布的單執行緒分數,再在伺服器上使用 sysbench cpu --threads=1 run 確認,並檢查 vmstat 顯示的 steal time 是否接近零。記憶體方面,基礎的 Cfx.re 伺服器資料只需數百 MB;若使用包含 forty 或 fifty 個資源及本機資料庫的 roleplay framework,8 GB 會較為充裕,低於 4 GB 則會顯得不足。這些只是社群常見數值,因此應在尖峰時段監控 free -m,不要只依賴這些數字。

玩家需要擁有 GTA V 才能加入我的 FiveM 伺服器嗎?

需要。每位連線玩家都必須在 Steam、Rockstar Games Launcher 或 Epic Games 上擁有合法授權的 GTA V,並具備免費的 Cfx.re 帳戶。FiveM client 會在建立連線前檢查遊戲所有權。沒有受支援的繞過方式;執行試圖規避這項檢查的伺服器,也不在 Cfx.re 允許的範圍內。

FiveM 伺服器需要開放哪些連接埠?

TCP 和 UDP 都需要開放 30120。info.json 等 HTTP endpoint 以及資源下載使用 TCP,client 的遊戲流量則使用 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。不要使用 TXHOST_INTERFACE 將 txAdmin 綁定至 127.0.0.1,因為該設定也會強制遊戲伺服器使用 loopback,玩家將無法連線。

請固定編號的 build 資料夾。recommended 標籤會定期移至新的 build,因此每次重新建置時,取得 recommended build 的 script 可能會提供不同的 binary;昨天仍可運作的伺服器,也可能在重新部署時因與變更無關的原因失效。記錄測試過的 build number 和 commit hash,明確執行升級,並將上一個資料夾保留在磁碟上,這樣只要編輯 systemd unit 中的一個路徑即可切換回去。但也不要讓 pin 長期未更新:Cfx.re 的政策規定,超過 three months 的不受支援 artifact 將無法從伺服器瀏覽器加入,因此應在支援期限內升級。

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