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

如何在 VPS 上架設 FiveM 伺服器

了解如何在 Ubuntu 安裝 FXServer、固定 artifact build、加入 Cfx.re licence key,並同時開放 TCP 與 UDP 的 30120 埠,避免將 txAdmin 暴露於公開網路。

VPS 上的 FiveM 伺服器需求

VPS 上的 FiveM 伺服器需要一個未具特權的 Linux 使用者、一個來自 Cfx.re 的 artifact build、一組 licence key,以及在 TCP 和 UDP 上都開放的一個埠。安裝約需十 minutes。本指南其餘內容說明決定伺服器是否能順暢遊玩的項目:單一 CPU core 的速度、資源所需的記憶體,以及不應直接暴露在公開位址上的管理面板。

有三項必要條件是固定的。伺服器二進位檔稱為 artifacts,來源是官方 Cfx.re build listing。licence key 來自 Cfx.re portal:portal.cfx.re。這是較早的指南所稱的 keymaster 服務,而且該 key 會綁定使用它之機器的位址。每位連線的玩家都需要在 Steam、Rockstar Games Launcher 或 Epic Games 上擁有合法的 GTA V (Grand Theft Auto V) 副本,以及免費的 Cfx.re 帳戶。用戶端啟動時會檢查遊戲所有權,因此以其他方式建立的伺服器無法運作。本指南不涵蓋任何形式的替代方案內容。

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

單核心速度決定 FiveM 伺服器的運行體感

FXServer 是 FiveM 的伺服器二進位檔,會在一個主要執行緒上執行遊戲邏輯。每個 resource script、每個 event handler 及每次狀態更新,都會經過這個單一迴圈。額外的核心可協助 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說明如何讀取該欄,以及應採取哪些處理方式。

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

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

以一般使用者執行伺服器,絕對不要使用 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 使用者執行。下載檔案是 .tar.xz archive,因此需要 xz-utils;複製基礎伺服器資料則使用 git

下載固定版本的 artifact 建置檔

Linux 建置檔位於 Cfx.re artifact server 的 build_proot_linux 頻道。清單會將其中一個建置標示為最新建議版本,而該標籤每隔幾週就會移到新的建置。請改用編號資料夾固定版本。下個月重新建置伺服器時,就能取得與本月測試相同的 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

我在 2026 年 8 月查看清單時,Build 25770 帶有建議版本標籤。在瀏覽器中開啟相同目錄以查看目前的版本,然後將該資料夾名稱貼入 URL。該名稱由建置編號與 commit hash 組成。

ls 現在應顯示 run.shalpine 資料夾。該資料夾就是關鍵:Linux artifact 內含自己的精簡 Alpine root filesystem,並使用 proot 在其中啟動伺服器。proot 是一種 userspace 工具,可在不使用 root 權限的情況下模擬 chroot。因此,同一個下載檔可在 Ubuntu、Debian 與 Rocky 上執行,無須安裝特定發行版的套件。

現在複製基礎伺服器資料,其中包含 server.cfg 啟動時使用的預設資源:

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

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

使用 Cfx.re 帳戶登入 portal.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 設為 onlegacy;值高於 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 中。以不帶 +exec 引數的方式啟動 run.sh,它會在 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 以隱藏面板,遊戲伺服器也會繫結至 loopback,導致玩家完全無法連線至伺服器。請使用防火牆關閉面板連接埠,不要使用該變數。若要將面板移至其他連接埠,請設定 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 服務沒有可供輸入的終端機。如果改用 txAdmin 管理伺服器,請從 ExecStart移除 +exec server.cfg,並將 WorkingDirectory指向 /home/fivem/FXServer/server,因為 txAdmin 會自行啟動遊戲伺服器,並將其資料資料夾放在 run.sh旁邊。

要備份的內容及其位置

不必備份 artifacts,因為只要幾分鐘就能重新下載指定的 build。以下 4 項內容只有你擁有。

  • ~/FXServer/server-data/resources:你安裝、購買或撰寫的所有 resource。
  • server.cfg,無論位於何處:完整的伺服器設定,包括你的管理員 principal。
  • ~/FXServer/server/txData:txAdmin 的設定、管理員清單及日誌。使用 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 會將其判定為損毀的封存檔。

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

玩家加入後 tick time 持續上升。 txAdmin 的效能面板會顯示伺服器 tick time。若 tick time 隨玩家數量上升,但整體 CPU 使用率看起來很低,表示某個 resource 正讓主執行緒飽和。請記住這項計算:在 4 vCPU 的伺服器上,單一核心完全滿載時,在 top 中顯示的整體 CPU 使用率約為 25 percent,看起來像是閒置,實際上並非如此。逐一停止 resource,並觀察 tick time,以找出造成負載的 resource。

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

可正常遊玩的 FiveM 伺服器,需要高效能的單核心處理器,以及足以支援實際執行之 resource 清單的記憶體。玩家人數上限取決於這兩項條件;核心速度不足時,增加 vCPU 數量也無法補救。為遊戲伺服器選擇 VPS會針對混合型伺服器群組說明這項取捨,而在 VPS 上執行 Minecraft 伺服器的底層情況也相同:主要由單一 tick 迴圈運作,因此每個核心的速度同樣決定可達到的上限。

FAQ

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

相較於多個速度較慢的核心,單一高效能核心更重要,因為 FXServer 會在單一主執行緒上處理遊戲邏輯。先比較 CPU 型號公開的單執行緒分數,再使用 sysbench cpu --threads=1 run 在伺服器上確認,並檢查 vmstat 顯示的 steal time 接近 0。記憶體方面,基本的 Cfx.re 伺服器資料只需數百 MB;包含 40 或 50 個 resources 並搭配本機資料庫的 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。HTTP endpoints,例如 info.json,以及 resource 下載使用 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 的 script 可能交付不同的 binary;昨天仍能運作的伺服器,也可能在重新部署時因與變更無關的原因失效。記錄測試過的 build number 與 commit hash,並在確認後再升級;同時將上一個資料夾保留在磁碟上,日後只要編輯 systemd unit 中的一個 path,即可切換回去。

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