Factorio

服务器搭建

!Attention!, 需要正版账号

拉取Docker容器搭建

docker镜像地址
建议使用rootless版本, 以避免权限问题

# 创建存储数据位置
cd && mkdir factorio
cd factorio && mkdir container-config container-data
# 复制容器的配置文件到container-data下
docker run --rm --name factorio -itd -v ./container-data:/factorio factoriotools/factorio:stable-2.0.55-rootless
docker stop factorio
# 创建配置文件的软链接
## 该文件为服务器配置信息, 作为管理服务器选项使用, 并需要给予可修改权限
#chmod 646 ~/factorio/container-data/config/server-settings.json
ln -s ~/factorio/container-data/config/server-settings.json ~/factorio/container-config/server-settings.json
## 该文件为地图配置信息, 实际上可先在用户端配置好地图并生成存档后上传服务器上使用, 
## 无需利用服务器配置生成地图, 且似乎有些配置未能达到预期效果??? 需要给予可修改权限
#chmod 646 ~/factorio/container-data/config/map-settings.json
ln -s ~/factorio/container-data/config/map-settings.json ~/factorio/container-config/map-settings.json
# 修改文件夹所属, 845为容器内创建的名为factorio的用户
#sudo chown 845:845 ~/factorio/container-data/

编辑配置文件~/factorio/docker-compose.yaml

services:
  factorio:
    container_name: factorio
    image: factoriotools/factorio:stable-2.0.55-rootless
    volumes:
      - ./container-data:/factorio
    restart: unless-stopped
    ports:
#      - "34197:34197/udp" # udp端口, 游戏靠该端口进行通讯
#      - "27015:27015/tcp" # RCON端口
    environment:
      - SAVE_NAME=test1 # 自己存档的名称, 需要将存档放在~/factorio/container-data/saves/下
      - LOAD_LATEST_SAVE=false # 是否自动使用最新存档
    networks:
      caddy-network:

networks:
  caddy-network:
    external: true

记得需要先行编辑server-settings.json给予账号密码, 否则无法运行

载入存档直接替换~/factorio/container-data/saves/_autosave1.zip即可, 注意要修改所属为845:845

# 启动容器
docker compose up
# 删除容器
docker compose down
# 查看容器状态
docker compose status

自建Docker镜像

下载服务端

前往官网, 选择符合自己版本的服务器版本下载

配置程序

假设程序包名为factorio_headless_x64.tar.xz

# 将程序复制到/opt下进行解压
cp factorio_headless_x64.tar.xz /opt/
cd /opt/
tar -xvf factorio_headless_x64.tar.xz
# 编辑配置文件
## 启动的二进制文件为/opt/factorio/bin/x64/factorio
## 服务器配置文件一般为/opt/factorio/config/server-settings.json
## 地图配置文件一般为/opt/factorio/config/map-settings.example.json, 不建议配置, 直接在客户端上生成存档再传到服务器即可
## 上述两个配置文件在/opt/factorio/config/下均有模板, 可复制模板进行修改

启动服务

/opt/factorio/data/bin/x64/factorio \
--port 20000 \ # 在20000端口监听, 仅接受udp报文
--start-server savefile.zip \ # 指定存档文件位置
--server-settings /opt/factorio/config/server-setting.json # 指定服务器配置的位置

根据上述执行顺序可以写成dockerfile, 但是犯懒了, 下次再写

配置文件

服务器配置

修改server-settings.json配置服务器

{
  "name": "Factowhy", # 服务器展示名称
  "description": "", # 服务器展示描述
  "tags": [ "factorio", "synology" ], # 服务器标签
  "max_players": 0, # 最多可加入玩家数量, 0代表不限
  "visibility": {
    "public": false, # 是否公网可搜索到
    "lan": true      # 是否局域网可搜索
  },
  "username": "w***3", # 需要你在异星工厂的账号名
  "password": "",           # 需要你在异星工厂的密码
  "token": "5***2", # 也可以不填密码, 填账号的token
  "game_password": "", # 加入游戏需要的密码
  "require_user_verification": false, # 正版验证, 验证加入玩家账号
  "allow_commands": "admins-only", # 是否允许使用命令, true, false  
  "autosave_interval": 10, # 自动保存时间, 10min
  "autosave_slots": 5, # 自动保存上限
  "afk_autokick_interval": 0, # 玩家无操作多久后踢出游戏
  "auto_pause": true, # 当没有玩家在服务器时暂停游戏
  "auto_pause_when_players_connect": false, # 当有玩家连接时暂停游戏
  "only_admins_can_pause_the_game": true, # 只有管理员可暂停游戏  
  "autosave_only_on_server": true, # 只在服务端自动保存游戏
}

地图配置

Windows上存档一般位于C:\Users\[用户名]\AppData\Roaming\Factorio\saves
Windows上mod一般位于C:\Users\[用户名]\AppData\Roaming\Factorio\mods
Linux上存档一般位于~/.factorio/saves/

若要生成地图可以去维基相关页面查看具体参数, 以及其他更多命令参数

修改map-settings.json配置地图生成, 不建议使用, 仅整理了部分较常用配置

map-settings.json

{
  "difficulty_settings": # 游戏难度
  {
    "technology_price_multiplier": 1, # 科技花费
    "spoil_time_modifier" : 1
  },
  "pollution": # 污染
  {
    "enabled": true, # 是否开启污染
    "diffusion_ratio": 0.02, # 污染扩散率
  },
  "enemy_evolution": # 敌人设置
  {
    "enabled": true, # 是否开启敌人
    "time_factor": 0.000004, # 随时间进化率
    "destroy_factor": 0.002, # 随摧毁巢穴数量进化率
    "pollution_factor": 0.0000009 # 随吸收污染进化率
  },
  "steering": # 驾驶相关
  {
    "default":
    {
      "radius": 1.2, # 半径
    },
    "moving":
    {
      "radius": 3, # 移速
    }
  },
  "asteroids": # 行星
  {
    "spawning_rate" : 1, # 陨石生成速率
    "max_ray_portals_expanded_per_tick" : 100 # 每刻最多陨石数?
  },
}

最后修改:2025 年 11 月 15 日
赛博讨口子