返回博客
Guide2 分钟阅读

FiveM 服务器托管指南:VPS、专用或托管

为你的服务器规模选择合适的FiveM主机。VPS、专用、托管及位置建议,助你实现低延迟、高容量和稳定性能。

Agency Scripts

Agency Scripts 创始人兼首席开发者

为什么你的托管选择成就或毁掉你的服务器

你选择的托管提供商直接且可测量地影响你的 FiveM 服务器的各个方面。玩家体验、脚本性能、实体同步、语音聊天质量和数据库响应时间均依赖于某个数据中心的硬件。选择不当的主机会导致橡皮筋效应、车辆追逐时不同步、关键 RP 时刻语音中断,以及加载时间过长导致玩家在生成前断开连接。运行在合适硬件上的服务器与挤在超售 VPS 上的服务器之间的差异,任何有经验的 FiveM 玩家都能立即察觉。本指南将详细解析你需要的规格,比较 VPS 与专用主机,并帮助你根据服务器规模和预算做出正确选择。

VPS 与专用服务器:理解区别

A VPS(虚拟专用服务器) 是较大物理机器的虚拟切片。您与其他租户共享底层硬件,但通过虚拟机监控程序隔离资源。一个 专用服务器 让你独占整个物理机器。对于 FiveM,这一点比典型的网页托管更重要,因为 FiveM 对 CPU 单线程性能和内存延迟极为敏感。在 VPS 上,运行 CPU 密集型工作负载的邻居可能导致服务器出现微卡顿,即使你的分配资源未达到上限。专用服务器完全消除此风险。然而,来自不超卖的高质量 VPS 提供商的 VPS 对于64人以下的服务器性能可媲美。以下是切换主机前检查当前服务器性能以建立基线的方法:

-- server.lua: Performance monitoring
local perfData = {}

CreateThread(function()
    while true do
        Wait(10000) -- Check every 10 seconds
        local cpuTime = GetProfiler():ToJSON() -- FiveM built-in profiler
        local playerCount = #GetPlayers()
        local resCount = GetNumResources()

        -- Track server frame time (should stay under 33ms for 30 tick)
        local svFrameTime = GetConvar('sv_frameTime', '33')

        print(('[PERF] Players: %d | Resources: %d | Target Frame: %sms')
            :format(playerCount, resCount, svFrameTime))

        -- Log to file for analysis
        SaveResourceFile(GetCurrentResourceName(), 'perf.log',
            os.date() .. ' | Players: ' .. playerCount ..
            ' | Resources: ' .. resCount .. '\n', -1)
    end
end)

推荐硬件规格

FiveM 服务器性能主要由 单线程CPU速度,不是核心数量。服务器运行时主要是单线程,这意味着5.0 GHz的4核CPU性能远超2.5 GHz的16核CPU。内存方面,小型服务器(32人以下,脚本适中)基线为8 GB,但对于64+玩家、电话系统、MDT、自定义工作和完整经济的严肃角色扮演服务器,16 GB是实际最低要求。NVMe存储对数据库密集型服务器至关重要,因为oxmysql查询在复杂连接和大规模读取时会访问磁盘。以下是按服务器规模的细分:

  • 小型(1-32 玩家): 4核4.0+ GHz,8 GB内存,50 GB NVMe SSD,100 Mbps带宽
  • 中型(32-64名玩家): 4-6 核心,4.5+ GHz,16 GB 内存,100 GB NVMe SSD,250 Mbps 带宽
  • 大型(64-128玩家): 6-8 核心,5.0+ GHz,32 GB 内存,200 GB NVMe SSD,500 Mbps 带宽
  • 企业版(128+玩家): 专用 i9/Ryzen 9,5.5+ GHz,64 GB DDR5,500 GB NVMe,1 Gbps 不限流量

DDoS 保护:不可协商的要求

FiveM 服务器经常成为 DDoS 攻击目标。不满的被封玩家、竞争服务器所有者及随机脚本小子都会尝试攻击你的服务器。没有适当的 DDoS 防护,单次攻击可能导致服务器离线数小时甚至数天。寻找提供 始终开启的第四层DDoS防护 专门针对游戏服务器流量调优。通用的面向网页的DDoS防护常常过滤掉合法游戏数据包,因为它们看起来类似攻击流量。最佳供应商提供了解FiveM UDP流量模式的游戏感知过滤。一些供应商还支持GRE隧道或自定义防火墙规则,允许你将Cfx.re中继IP范围列入白名单,同时阻止其他所有流量。以下是如何配置你的server.cfg以限制访问并减少攻击面:

# server.cfg: Security hardening
sv_hostname "Your Server Name"
sv_maxclients 64
sv_endpointPrivacy true
sv_scriptHookAllowed 0

# Restrict RCON access
rcon_password "YOUR_STRONG_PASSWORD_HERE"

# Rate limiting
rate_limiter "strict"

# Only allow connections through Cfx.re
sv_forceIndirectListing true

# Firewall rules (Linux iptables example)
# Run these in your server startup script:
# iptables -A INPUT -p udp --dport 30120 -m state --state NEW -m recent --set
# iptables -A INPUT -p udp --dport 30120 -m state --state NEW -m recent \
#   --update --seconds 10 --hitcount 20 -j DROP

服务器位置和延迟很重要

服务器的物理位置决定玩家体验的延迟。针对主要欧洲玩家群,法兰克福、阿姆斯特丹或巴黎的托管提供全欧洲最佳平均延迟。北美服务器则推荐达拉斯、芝加哥或纽约。若社区跨越两大洲,应选择玩家多数所在区域,因为单一地点无法同时为欧盟和北美提供低于 50 毫秒的延迟。低于 50 毫秒延迟响应流畅,50-100 毫秒可感知但可玩,超过 100 毫秒在高速场景如警匪追逐或枪战中会出现明显不同步。选择主机前请先从目标位置测试延迟,可通过简单 ping 测试或使用提供商的 looking glass 工具。

数据库托管:同一台机器还是外部?

大多数 FiveM 服务器在与 FiveM 服务器同一台机器上运行 MySQL 或 MariaDB。对于小到中型服务器,这消除了游戏服务器与数据库间的网络延迟,效果良好。但对于拥有 100+ 玩家和复杂经济系统的大型服务器,将数据库分离到专用机器可提升游戏服务器和数据库性能。游戏服务器获得更多 RAM 和 CPU 用于脚本执行,数据库获得专用 I/O 带宽。若采用此方案,确保数据库服务器与游戏服务器位于同一数据中心,以保持查询延迟低于 1ms。以下是两种配置的 oxmysql 连接字符串示例:

# server.cfg: Database configuration

# Local database (same machine)
set mysql_connection_string "mysql://fivem:password@localhost/fivem_db?waitForConnections=true&connectionLimit=10&connectTimeout=60000"

# Remote database (separate server, same datacenter)
set mysql_connection_string "mysql://fivem:[email protected]/fivem_db?waitForConnections=true&connectionLimit=20&connectTimeout=10000"

# Performance tuning for oxmysql
set mysql_slow_query_warning 200
set mysql_debug false

# MariaDB recommended settings (my.cnf)
# [mysqld]
# innodb_buffer_pool_size = 4G
# innodb_log_file_size = 256M
# innodb_flush_method = O_DIRECT
# max_connections = 100
# query_cache_type = 1
# query_cache_size = 128M

在全新 VPS 上设置您的服务器

选择好托管提供商后,在全新Linux VPS上设置FiveM服务器遵循可重复的流程。以Ubuntu 22.04或Debian 12为起点,更新系统,为FiveM进程创建非root用户,并配置防火墙。切勿以root身份运行FiveM服务器,因为任何脚本漏洞都可能危及整台机器。使用 systemd 管理 FiveM 进程,使其在崩溃时自动重启并开机启动。此设置约需 15 分钟,提供生产就绪的服务器环境:

#!/bin/bash
# setup-fivem.sh - Fresh VPS setup script

# Update system
apt update && apt upgrade -y

# Create FiveM user
useradd -m -s /bin/bash fivem
mkdir -p /home/fivem/server /home/fivem/server-data

# Download FiveM server artifacts
cd /home/fivem/server
wget https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/LATEST_RECOMMENDED_URL -O fx.tar.xz
tar xf fx.tar.xz
rm fx.tar.xz

# Set permissions
chown -R fivem:fivem /home/fivem

# Configure firewall
ufw allow 30120/tcp
ufw allow 30120/udp
ufw allow 40120/tcp
ufw allow OpenSSH
ufw --force enable

# Create systemd service
cat > /etc/systemd/system/fivem.service << 'EOF'
[Unit]
Description=FiveM Server
After=network.target mariadb.service

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

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable fivem
echo "Setup complete! Place your server-data files and run: systemctl start fivem"

监控与维护您的服务器

部署后,持续监控至关重要。使用如等工具设置基本资源监控 htop 用于实时CPU和内存使用, iotop 用于磁盘I/O,以及 vnstat 用于带宽跟踪。配置服务器数据目录和数据库的自动备份,最好备份到异地位置。良好的备份策略是每日完整数据库转储和每小时增量备份玩家数据表。通过大多数托管商预装的txAdmin网页面板监控FiveM服务器的tick率。健康的服务器保持接近配置值(通常为每秒30或48 tick)的稳定tick率。当tick率低于目标的80%时,应优化脚本或升级硬件。

准备好开始了吗?

在我们的商店获取脚本,或加入 Discord 获取支持、更新以及新功能预告。