想和朋友长期玩《ARK: Survival Ascended》(方舟:生存飞升),用游戏里的非专用主机很快会遇到距离限制、房主必须在线、存档和更新都绑在一台电脑上的问题。把专用服务器放到 VPS 后,世界可以持续运行,管理员能独立安排更新、备份、模组和维护窗口。
先把最容易踩的坑说清楚:ARK 官方社区 Wiki 当前明确说明,Survival Ascended 专用服务器需要 Windows 或 Windows 兼容环境,没有原生 Linux 服务端。本文因此使用 Windows Server 2022 VPS、SteamCMD 和 Windows 任务计划程序。Linux + Wine/Proton 虽然有人实践,但游戏更新后兼容性、性能和排障成本都更高,不适合作为新手的主线方案。
ARK: Survival Ascended 与旧版 ARK: Survival Evolved 是两套不同服务端,不要混用 App ID、可执行文件或配置目录。
| 项目 | Survival Ascended(本文) | Survival Evolved(旧版) |
|---|---|---|
| SteamCMD App ID | 2430930 | 376030 |
| 服务端程序 | ArkAscendedServer.exe | ShooterGameServer.exe |
| The Island 地图名 | TheIsland_WP | TheIsland |
| 原生 Linux 服务端 | 不支持 | 支持 |
ARK 官方社区 Wiki 的专用服务器说明还提示了一项商业限制:未取得相应专用服务器许可时,自建 ASA 服务端只应用于个人、非商业用途。准备出售会员权益、付费道具、白名单或其他有对价服务前,应先自行核对最新 EULA 和授权要求,不能把私人朋友服教程直接当成商业服合规方案。
SteamCMD 的 2430930、地图名和启动参数可能在后续更新中变化。每次大版本更新前,先查看官方文档和补丁说明,再在备份后升级。
ASA 使用 Unreal Engine 5,服务端对内存、单核性能和磁盘都比很多老游戏服更敏感。下面是实际购买时更稳妥的起点,不是官方人数保证:
| 场景 | 建议配置 | 系统盘 | 适用情况 |
|---|---|---|---|
| 2–4 人纯净 PvE | 4 个高性能 vCPU、16GB 内存 | 100GB NVMe | 单地图、少量建筑 |
| 5–10 人长期服 | 6 个高性能 vCPU、24GB 内存 | 150GB NVMe | 有模组、存档逐渐增大 |
| 10 人以上或大型基地 | 8 个高性能 vCPU、32GB+ 内存 | 200GB+ NVMe | 需要持续监控后再扩容 |
不要只看“8 核”字样。共享 CPU 超售严重时,启动、世界保存和大型基地附近都可能卡顿。机房应靠近主要玩家,并提前确认服务商允许游戏服务器、支持 UDP、有足够月流量,以及遭受 DDoS 后的清洗、封禁和换 IP 规则。购买前可先看游戏服务器 VPS 配置与线路选择。
Windows Server 本身也会占用一部分内存,因此不建议用 8GB 方案长期运行 ASA。磁盘除了安装包,还要给地图、模组、日志、存档和本地备份留空间。
通过远程桌面登录 VPS,先完成以下准备:
- 安装 Windows Update 并重启到没有待处理更新。
- 确认系统为 64 位,时间和时区正确。
- 在云厂商控制台保留一个可用的远程控制台,避免错误防火墙规则把 RDP 一起锁死。
- 打开管理员 PowerShell,后续命令都在其中执行。
创建安装、备份和脚本目录:
New-Item -ItemType Directory -Force C:\steamcmd | Out-Null
New-Item -ItemType Directory -Force C:\ark-asa | Out-Null
New-Item -ItemType Directory -Force C:\ark-backups | Out-Null
Get-Volume -DriveLetter C | Select-Object DriveLetter, SizeRemaining, Size
如果系统盘空间不足,先扩容再安装。不要把备份长期只放在同一个 C 盘;本地压缩包只是恢复速度快,真正防止 VPS 被误删还需要异地副本。
从 Valve 的 Steam CDN 下载 Windows 版 SteamCMD:
Invoke-WebRequest `
-Uri 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip' `
-OutFile 'C:\steamcmd\steamcmd.zip'
Expand-Archive `
-Path 'C:\steamcmd\steamcmd.zip' `
-DestinationPath 'C:\steamcmd' `
-Force
& 'C:\steamcmd\steamcmd.exe' +quit
第一次运行会更新 SteamCMD 自身。完成后检查文件:
Get-Item C:\steamcmd\steamcmd.exe
如果 Invoke-WebRequest 报 TLS 或连接错误,先完成 Windows Update,确认系统日期正确,再检查出站 HTTPS 是否被安全软件或云防火墙拦截。不要从不明网盘下载打包好的 SteamCMD 或服务端。
执行匿名登录安装:
& 'C:\steamcmd\steamcmd.exe' `
+force_install_dir 'C:\ark-asa' `
+login anonymous `
+app_update 2430930 validate `
+quit
下载量较大,完成时间取决于 VPS 带宽和 Steam CDN。安装后检查关键文件:
$serverExe = 'C:\ark-asa\ShooterGame\Binaries\Win64\ArkAscendedServer.exe'
Test-Path $serverExe
Get-Item $serverExe | Select-Object FullName, Length, LastWriteTime
Get-ChildItem C:\ark-asa -Recurse -File |
Measure-Object -Property Length -Sum
Test-Path 应返回 True。如果误用了客户端 App ID 2399830 或旧服务端 App ID 376030,目录结构和程序名都会不对,直接删除错误目录再重装比混着修更可靠。
新建 C:\ark-asa\start-asa.bat:
@echo off
cd /d C:\ark-asa\ShooterGame\Binaries\Win64
ArkAscendedServer.exe TheIsland_WP?listen -port=7777 -WinLiveMaxPlayers=10 -servergamelog
exit /b %errorlevel%
这里有三个容易写错的点:
- ASA 的 The Island 地图名是
TheIsland_WP,不是旧版的TheIsland。 - ASA 要用
-port=7777,不要照抄旧教程写成?Port=7777。 - 人数上限用
-WinLiveMaxPlayers=10;只改 INI 里的MaxPlayers可能被恢复为默认值。
先在 PowerShell 前台运行:
& 'C:\ark-asa\start-asa.bat'
第一次启动需要生成目录、初始化世界并连接在线服务,可能等待数分钟。看到世界加载完成后再退出窗口。确认生成了配置和存档目录:
Get-ChildItem 'C:\ark-asa\ShooterGame\Saved' -Force
Get-ChildItem 'C:\ark-asa\ShooterGame\Saved\Logs' -Filter '*.log' |
Sort-Object LastWriteTime -Descending |
Select-Object -First 5 Name, Length, LastWriteTime
配置文件位于:
C:\ark-asa\ShooterGame\Saved\Config\WindowsServer\GameUserSettings.ini
先生成两组不重复的随机密码,再写入一个基础 PvE 配置。PowerShell 会在屏幕上显示一次密码,请立即保存到密码管理器:
$alphabet = 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@#$%'.ToCharArray()
$playerPassword = -join (1..24 | ForEach-Object { $alphabet | Get-Random })
$adminPassword = -join (1..32 | ForEach-Object { $alphabet | Get-Random })
$configDir = 'C:\ark-asa\ShooterGame\Saved\Config\WindowsServer'
New-Item -ItemType Directory -Force $configDir | Out-Null
@"
[ServerSettings]
ServerPassword=$playerPassword
ServerAdminPassword=$adminPassword
serverPVE=True
AllowThirdPersonPlayer=True
ShowMapPlayerLocation=True
DifficultyOffset=1.0
OverrideOfficialDifficulty=5.0
AutoSavePeriodMinutes=15.0
RCONEnabled=False
RCONPort=27020
[SessionSettings]
SessionName=My ASA Private Server
Port=7777
QueryPort=27015
"@ | Set-Content `
-Path "$configDir\GameUserSettings.ini" `
-Encoding ascii
Write-Host "玩家密码:$playerPassword"
Write-Host "管理员密码:$adminPassword"
玩家密码和管理员密码不要相同,也不要复用 Windows 管理员或 RDP 密码。RCONEnabled=False 表示本文默认不开放远程管理端口;以后确实需要 RCON 时,应只允许固定管理 IP,不能直接把 27020/TCP 暴露给整个互联网。
重新启动一次,确认配置被读取:
& 'C:\ark-asa\start-asa.bat'
若服务器名称或倍率没有生效,先正常停服,再检查是不是改错了 WindowsServer 目录。服务器运行时直接编辑 INI,退出时可能被旧配置覆盖。
官方地图要使用对应的内部名称。例如:
| 地图 | ASA 启动名 |
|---|---|
| The Island | TheIsland_WP |
| The Center | TheCenter_WP |
| Scorched Earth | ScorchedEarth_WP |
| Ragnarok | Ragnarok_WP |
| Aberration | Aberration_WP |
更换地图时,修改启动脚本第 3 行的第一个参数。不要用旧版 ARK 的地图名,也不要在没有备份时直接切换长期存档。
ASA 默认允许跨平台连接。如需显式限制或声明平台,可使用 -ServerPlatform;官方社区 Wiki 当前列出的值包括 PC、PS5、XSX、WINGDK 和 ALL。不确定时先保持默认,错误的平台限制会让部分朋友搜索不到服务器。
本文使用:
| 端口 | 协议 | 用途 | 是否开放公网 |
|---|---|---|---|
| 7777 | UDP | 游戏端口 | 是 |
| 27015 | UDP | 查询端口 | 是 |
| 27020 | TCP | RCON | 否,本文关闭 |
在管理员 PowerShell 中创建 Windows 防火墙规则:
New-NetFirewallRule `
-DisplayName 'ARK ASA Game UDP 7777' `
-Direction Inbound `
-Protocol UDP `
-LocalPort 7777 `
-Action Allow
New-NetFirewallRule `
-DisplayName 'ARK ASA Query UDP 27015' `
-Direction Inbound `
-Protocol UDP `
-LocalPort 27015 `
-Action Allow
Get-NetFirewallRule -DisplayName 'ARK ASA*' |
Get-NetFirewallPortFilter |
Format-Table Protocol, LocalPort
然后到云厂商控制台安全组添加相同的 7777/UDP 和 27015/UDP 入站规则。Windows 防火墙和云安全组是两层,少任何一层都可能出现“程序在运行但外网进不来”。可按端口、防火墙与安全组排查清单逐层检查。
不要为了省事开放全部端口,也不要把 UDP 错写成 TCP。RDP 的 3389/TCP 应尽量只允许自己的固定 IP,至少不要与游戏端口一起全网裸放。
确认前台启动没有报错后,再注册一个开机任务。先关闭正在运行的前台服务,然后执行:
$action = New-ScheduledTaskAction `
-Execute 'cmd.exe' `
-Argument '/c "C:\ark-asa\start-asa.bat"' `
-WorkingDirectory 'C:\ark-asa'
$trigger = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal `
-UserId 'SYSTEM' `
-LogonType ServiceAccount `
-RunLevel Highest
$settings = New-ScheduledTaskSettingsSet `
-StartWhenAvailable `
-RestartCount 5 `
-RestartInterval (New-TimeSpan -Minutes 2) `
-ExecutionTimeLimit (New-TimeSpan -Seconds 0)
Register-ScheduledTask `
-TaskName 'ARK ASA Server' `
-Action $action `
-Trigger $trigger `
-Principal $principal `
-Settings $settings
Start-ScheduledTask -TaskName 'ARK ASA Server'
检查任务和进程:
Get-ScheduledTask -TaskName 'ARK ASA Server' |
Get-ScheduledTaskInfo
Get-Process ArkAscendedServer -ErrorAction SilentlyContinue |
Select-Object Id, CPU, WorkingSet64, StartTime
任务显示已启动不等于世界已经可加入。还要查看最新日志并等待地图加载完成:
$latestLog = Get-ChildItem 'C:\ark-asa\ShooterGame\Saved\Logs' -Filter '*.log' |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
Get-Content $latestLog.FullName -Tail 200 -Wait
服务器完成加载后,在游戏的非官方服务器列表中搜索 SessionName。列表同步可能有延迟,先等待几分钟,再确认搜索条件、平台筛选和密码服筛选没有把它隐藏。
管理员进入游戏后打开控制台,先认证:
enablecheats 管理员密码
手动保存世界:
cheat SaveWorld
维护前应先通知玩家,保存世界后再正常退出服务端:
cheat DoExit
不要把 Windows “结束任务”当成日常停服方法。强制杀进程可能让最后一次世界保存不完整,更新和备份前尤其应该正常退出。
官方文档建议备份整个 ShooterGame\Saved,其中包含世界、角色、部落、配置、日志和集群数据。先在游戏内执行 cheat SaveWorld 和 cheat DoExit,确认进程已经退出:
Get-Process ArkAscendedServer -ErrorAction SilentlyContinue
没有输出后再压缩:
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$source = 'C:\ark-asa\ShooterGame\Saved\*'
$target = "C:\ark-backups\ark-asa-$stamp.zip"
Compress-Archive `
-Path $source `
-DestinationPath $target `
-CompressionLevel Optimal
Get-Item $target | Select-Object FullName, Length, LastWriteTime
备份完成后再启动任务:
Start-ScheduledTask -TaskName 'ARK ASA Server'
至少定期把压缩包同步到对象存储或另一台机器,并实际做一次恢复演练。更完整的保留周期、异地副本和恢复验证方法,可参考VPS 自动备份方案。
恢复时先停服,把当前 Saved 改名保留,再解压选定备份;不要直接把旧文件覆盖到正在运行的服务端。
客户端与服务端版本不一致时,玩家通常无法加入。更新流程应固定为:通知玩家、保存世界、正常退出、备份、SteamCMD 更新、启动、看日志、实际连接。
确认进程退出且备份成功后运行:
& 'C:\steamcmd\steamcmd.exe' `
+force_install_dir 'C:\ark-asa' `
+login anonymous `
+app_update 2430930 validate `
+quit
Start-ScheduledTask -TaskName 'ARK ASA Server'
不要把 validate 设成每几分钟自动执行。它会产生磁盘和网络负载,服务端运行时更新还可能造成文件占用或版本混合。大型补丁后先检查日志、地图、配置和模组,再让所有玩家回服。
ASA 的模组不再沿用旧版 Steam Workshop 流程。官方社区 Wiki 当前建议使用 -mods 启动参数,多个模组 ID 以英文逗号分隔。示例结构如下:
-mods=模组ID1,模组ID2,模组ID3
不要直接复制陌生服务器的长模组列表。正确顺序是:
- 停服并备份整个
Saved。 - 一次只添加一个或一小组模组。
- 启动后检查下载、加载顺序和依赖错误。
- 实际进入地图,确认物品、建筑和生物正常。
- 记录模组 ID、版本和加入日期。
移除包含自定义物品或生物的模组可能造成永久丢失。先在恢复出来的测试副本中验证,不能拿唯一存档试错。
先确认命令使用 App ID 2430930,安装目录是 C:\ark-asa,再重新执行 app_update 2430930 validate。不要把客户端、ASE 旧服务端和 ASA 服务端装进同一目录。
查看 C:\ark-asa\ShooterGame\Saved\Logs 中最新日志,并检查:
- 内存是否耗尽,页面文件是否被关闭;
- 地图名是否写成了
TheIsland_WP; - 启动参数引号和问号是否正确;
- 配置文件是否保存为 ASCII 或无 BOM 的正常文本;
- 安全软件是否隔离了服务端文件;
- 大版本更新后模组是否仍兼容。
先用纯净启动参数跑通,再逐项恢复模组和高级配置,比同时修改十个参数更容易定位问题。
按顺序检查:
- 日志是否已经完成世界加载,而不是仍在初始化。
- Windows 防火墙是否放行
7777/UDP和27015/UDP。 - 云安全组是否放行相同 UDP 端口。
- 游戏列表是否选择“非官方服务器”,平台和密码筛选是否正确。
SessionName是否过于常见,搜索时能否精确区分。- Windows Server 的 TLS 1.2 和证书吊销列表是否正常。
官方专用服务器说明特别提到,Windows Server 环境的 TLS 和证书吊销列表异常会影响 ASA 服务端连接在线服务。如果普通 Windows 防火墙排查无效,应按官方当前说明核对证书要求,不要盲目关闭系统证书验证。
确认编辑的是:
C:\ark-asa\ShooterGame\Saved\Config\WindowsServer\GameUserSettings.ini
停服后再修改。启动命令与 INI 同时设置同一个选项时,命令行可能覆盖 INI。删除重复项,只保留一个来源,再启动验证。
记录 CPU、内存、磁盘剩余空间、日志大小和高峰在线人数。大型基地、生物数量、模组和存档增长都可能增加负载。不要只靠每天重启掩盖问题;可以结合VPS 监控告警搭建指南持续观察资源趋势,再决定升级 CPU、内存或拆分地图。
可以尝试 Wine、Proton 或第三方容器镜像,但这不是官方原生 Linux 路线。兼容层、图形依赖、更新回归和第三方镜像供应链都增加了维护风险。已有 Linux 运维经验、能接受停机排障并且做好异地备份时才值得尝试;新手和长期朋友服优先选择 Windows VPS。
如果目标是 5–10 人长期 PvE,可以从下面这套组合开始:
- Windows Server 2022,6 个高性能 vCPU、24GB 内存、150GB NVMe;
2430930专用服务器,The Island 使用TheIsland_WP;7777/UDP游戏端口、27015/UDP查询端口;- RCON 默认关闭,RDP 只允许可信管理 IP;
- 任务计划程序负责开机启动和失败重试;
- 每次更新前执行
SaveWorld、正常停服并备份整个ShooterGame\Saved; - 本地保留短期备份,异地再保留一份,并定期恢复演练;
- 先跑纯净服,确认稳定后再少量添加模组。
这套方案的重点不是把启动脚本跑起来一次,而是让更新、存档、端口、安全和恢复都形成固定流程。正式邀请朋友进服前,至少完成一次外网连接、一次正常重启和一次备份恢复测试。
