搬瓦工搭建 Factorio 异星工厂服务器教程
Factorio(异星工厂)是一款以自动化生产线为核心的策略模拟游戏,支持多人合作共建工厂。自建 Factorio 服务器可以让你和朋友共同经营一个持久运行的工厂世界。Factorio 服务端非常轻量,即使是搬瓦工入门方案也能流畅运行。本文将介绍如何在搬瓦工 VPS 上搭建 Factorio Headless 服务器。购买搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。
一、服务器配置要求
Factorio 服务端非常高效,对硬件要求很低:
- CPU:单核即可,工厂规模极大时建议双核。
- 内存:512MB 起步,中等规模工厂约需 1GB。
- 硬盘:服务端约 50MB,存档通常不超过 100MB。
- 操作系统:Ubuntu 22.04 LTS 推荐。
- 网络端口:UDP 34197(默认)。
Factorio 的性能瓶颈主要在 CPU 单核性能上,大型基地的 UPS(每秒更新次数)取决于 CPU 速度。
二、安装 Factorio Headless 服务端
2.1 系统准备
apt update && apt upgrade -y
useradd -m -s /bin/bash factorio
su - factorio
2.2 下载服务端
Factorio 提供免费的 Headless 服务端,无需购买游戏即可运行服务器:
mkdir -p ~/factorio && cd ~/factorio
wget https://factorio.com/get-download/stable/headless/linux64 -O factorio-headless.tar.xz
tar -xJf factorio-headless.tar.xz --strip-components=1
三、配置服务器
3.1 创建地图
首先生成地图配置文件,然后基于该配置创建地图:
# 生成默认地图配置
./bin/x64/factorio --create ./saves/mymap.zip
# 如需自定义地图设置,先生成配置模板
./bin/x64/factorio --generate-map-preview ./preview.png --map-gen-settings ./data/map-gen-settings.example.json
3.2 服务器设置
创建服务器配置文件 server-settings.json:
cat > ~/factorio/server-settings.json << 'EOF'
{
"name": "My Factorio Server",
"description": "A Factorio server hosted on BandwagonHost VPS",
"tags": ["game", "modded"],
"max_players": 10,
"visibility": {
"public": false,
"lan": true
},
"username": "",
"password": "",
"token": "",
"game_password": "your_password",
"require_user_verification": true,
"max_upload_in_kilobytes_per_second": 0,
"max_upload_slots": 5,
"minimum_latency_in_ticks": 0,
"ignore_player_limit_for_returning_players": false,
"allow_commands": "admins-only",
"autosave_interval": 10,
"autosave_slots": 5,
"afk_autokick_interval": 0,
"auto_pause": true,
"only_admins_can_pause_the_game": true,
"autosave_only_on_server": true
}
EOF
如果要让服务器在 Factorio 官方服务器列表中可见,需将 public 设为 true,并填入你的 Factorio 账号和密码(或 Token)。
3.3 地图生成参数
如需自定义地图生成参数,创建 map-gen-settings.json:
cat > ~/factorio/map-gen-settings.json << 'EOF'
{
"terrain_segmentation": 1,
"water": 1,
"width": 0,
"height": 0,
"starting_area": 1,
"peaceful_mode": false,
"autoplace_controls": {
"coal": {"frequency": 1, "size": 1, "richness": 1},
"stone": {"frequency": 1, "size": 1, "richness": 1},
"copper-ore": {"frequency": 1, "size": 1, "richness": 1},
"iron-ore": {"frequency": 1, "size": 1, "richness": 1},
"uranium-ore": {"frequency": 1, "size": 1, "richness": 1},
"crude-oil": {"frequency": 1, "size": 1, "richness": 1},
"trees": {"frequency": 1, "size": 1, "richness": 1},
"enemy-base": {"frequency": 1, "size": 1, "richness": 1}
},
"seed": null
}
EOF
# 使用自定义设置创建地图
./bin/x64/factorio --create ./saves/mymap.zip --map-gen-settings map-gen-settings.json
四、启动服务器
4.1 命令行启动
./bin/x64/factorio --start-server ./saves/mymap.zip --server-settings ./server-settings.json
4.2 使用 Screen 后台运行
screen -S factorio
./bin/x64/factorio --start-server ./saves/mymap.zip --server-settings ./server-settings.json
# 按 Ctrl+A 再按 D 分离会话
4.3 防火墙配置
# 以 root 身份执行
ufw allow 34197/udp
ufw reload
4.4 创建 Systemd 服务
cat > /etc/systemd/system/factorio.service << 'EOF'
[Unit]
Description=Factorio Headless Server
After=network.target
[Service]
Type=simple
User=factorio
WorkingDirectory=/home/factorio/factorio
ExecStart=/home/factorio/factorio/bin/x64/factorio --start-server /home/factorio/factorio/saves/mymap.zip --server-settings /home/factorio/factorio/server-settings.json
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable factorio
systemctl start factorio
五、管理员配置
5.1 设置管理员列表
cat > ~/factorio/server-adminlist.json << 'EOF'
[
"your_factorio_username"
]
EOF
5.2 白名单和黑名单
# 白名单(仅允许列表中的玩家加入)
cat > ~/factorio/server-whitelist.json << 'EOF'
[
"player1",
"player2"
]
EOF
# 启动时添加白名单参数
./bin/x64/factorio --start-server ./saves/mymap.zip --server-settings ./server-settings.json --use-server-whitelist --server-whitelist ./server-whitelist.json
六、Mod 管理
Factorio 服务端支持 Mod,将 Mod 文件放入 mods 目录即可:
ls ~/factorio/mods/
# 将下载的 .zip 格式 Mod 文件放入此目录
# 注意:所有玩家的客户端也必须安装相同的 Mod
可以通过 mod-list.json 控制 Mod 的启用和禁用:
cat ~/factorio/mods/mod-list.json
七、存档管理与备份
cat > ~/backup-factorio.sh << 'EOF'
#!/bin/bash
BACKUP_DIR=~/factorio-backups
SAVE_DIR=~/factorio/saves
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p $BACKUP_DIR
cp -r $SAVE_DIR $BACKUP_DIR/saves-$DATE
find $BACKUP_DIR -maxdepth 1 -mtime +14 -type d -exec rm -rf {} \;
echo "[$DATE] Factorio backup completed"
EOF
chmod +x ~/backup-factorio.sh
(crontab -l 2>/dev/null; echo "0 */6 * * * /home/factorio/backup-factorio.sh") | crontab -
八、服务器更新
当 Factorio 发布新版本时,需要更新服务端以匹配客户端版本:
# 停止服务器
systemctl stop factorio
# 备份当前版本
cp -r ~/factorio ~/factorio-backup-$(date +%Y%m%d)
# 下载新版本
cd ~/factorio
wget https://factorio.com/get-download/stable/headless/linux64 -O factorio-headless.tar.xz
tar -xJf factorio-headless.tar.xz --strip-components=1
# 重启服务器
systemctl start factorio
九、客户端连接
- 打开 Factorio 游戏,点击"多人游戏"。
- 选择"通过 IP 地址连接"。
- 输入搬瓦工 VPS 的 IP 地址(使用默认端口 34197 则无需指定端口)。
- 输入服务器密码后加入游戏。
十、常见问题
UPS 下降
当工厂规模很大时,UPS 可能低于 60。这主要受 CPU 单核性能限制。优化建议包括:减少活跃实体数量、使用信标提高效率、优化物流网络设计。
无法连接
确认防火墙已开放 UDP 34197 端口。使用 ss -ulnp | grep 34197 检查服务端是否在监听。客户端和服务端版本必须完全一致。
总结
Factorio 是一款非常适合在 VPS 上搭建服务器的游戏,资源占用低、配置简单。搬瓦工入门方案即可满足小规模联机需求。如需管理多个游戏服务器,可以参考 Pterodactyl 游戏面板。其他游戏服务器教程包括 Terraria 服务器、CS2 服务器 等。购买搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。