搬瓦工搭建 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

九、客户端连接

  1. 打开 Factorio 游戏,点击"多人游戏"。
  2. 选择"通过 IP 地址连接"。
  3. 输入搬瓦工 VPS 的 IP 地址(使用默认端口 34197 则无需指定端口)。
  4. 输入服务器密码后加入游戏。

十、常见问题

UPS 下降

当工厂规模很大时,UPS 可能低于 60。这主要受 CPU 单核性能限制。优化建议包括:减少活跃实体数量、使用信标提高效率、优化物流网络设计。

无法连接

确认防火墙已开放 UDP 34197 端口。使用 ss -ulnp | grep 34197 检查服务端是否在监听。客户端和服务端版本必须完全一致。

总结

Factorio 是一款非常适合在 VPS 上搭建服务器的游戏,资源占用低、配置简单。搬瓦工入门方案即可满足小规模联机需求。如需管理多个游戏服务器,可以参考 Pterodactyl 游戏面板。其他游戏服务器教程包括 Terraria 服务器CS2 服务器 等。购买搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。