搭建《异星工厂》私人服务器,为好友打造稳定联机空间,共同进入危机与机遇并存的异星世界:协作采集矿石、提炼材料,设计精密自动化生产线,研发科技解锁高级设备,在抵御异星生物突袭时分工配合,于建造与生存的沉浸式体验中增进默契,尽情享受多人联机的策略布局与创造乐趣。
收藏数: 211
下载次数: 27821616
状态: active
发布者: factoriotools
类型: 镜像
factoriotools/factorio[!NOTE] ARM 架构支持为实验性,在树莓派等设备上运行可能出现崩溃或卡顿。
latest - 最新版本(可能为实验版)。stable - 在 factorio.com 上标记为稳定的版本(自 2.0 起,版本先以实验版发布,稳定后会更新为此标签,详见 FFF-435)。0.x - 某分支的最新版本(如 2.0 为 2.0 分支最新版)。0.x.y - 特定版本(如 2.0.69)。0.x-z - 版本的增量修复版。Factorio 是一款工厂建造与维护主题的游戏。玩家可通过采矿、研发科技、搭建基础设施、自动化生产来扩张工厂,并抵御敌人。游戏支持自定义地图、Lua 编写模组及多人联机,且针对大规模工厂优化,运行稳定。
注意:本镜像仅包含服务器程序,完整游戏需从 Factorio 官网、Steam、GOG.com 或 Humble Bundle 购买。
以下示例将数据存储在 /opt/factorio,首次运行会生成必要的目录结构和配置文件:
shell# 创建数据目录并设置权限(容器内使用 UID/GID 845 运行) sudo mkdir -p /opt/factorio sudo chown 845:845 /opt/factorio # 启动容器 sudo docker run -d \ -p 34197:34197/udp \ # 游戏端口(必选) -p 27015:27015/tcp \ # RCON 端口(可选,用于远程命令) -v /opt/factorio:/factorio \ # 挂载数据卷(持久化配置、存档、模组) --name factorio \ # 容器名称 --restart=unless-stopped \ # 崩溃或重启后自动启动 factoriotools/factorio
参数说明:
-d:后台运行;-p:端口映射;-v:挂载宿主机目录到容器内 /factorio(核心,确保数据不丢失);--restart:自动恢复策略;--name:自定义容器名(避免随机名称)。shell# 查看启动日志 docker logs factorio # 停止服务器(修改配置前需执行) docker stop factorio # 配置文件路径:/opt/factorio/config/server-settings.json # 修改后重启服务器 docker start factorio
如需直接向服务器发送命令,启动时添加 -it 参数,并通过 docker attach 进入控制台:
shell# 启动容器(带交互终端) docker run -d -it --name factorio factoriotools/factorio # 进入控制台(按 Ctrl+P+Q 可退出但不终止容器) docker attach factorio
适合脚本自动化,无需暴露 RCON 端口,直接通过容器内命令发送:
shell# 示例:发送帮助命令 docker exec factorio rcon /h
升级前建议备份存档(可在游戏客户端内完成)。步骤:
shell# 停止并删除旧容器(数据已通过 -v 持久化,不会丢失) docker stop factorio docker rm factorio # 拉取最新镜像 docker pull factoriotools/factorio # 重新启动(使用原命令即可) sudo docker run -d ... # 同快速启动步骤
首次启动会生成名为 _autosave1.zip 的存档,地图参数由 /opt/factorio/config 下的 map-gen-settings.json 和 map-settings.json 控制。后续启动默认加载最新存档。
通过环境变量指定存档,需将存档文件(不含 .zip)放在 /opt/factorio/saves 目录:
shellsudo docker run -d \ -p 34197:34197/udp -p 27015:27015/tcp \ -v /opt/factorio:/factorio \ -e LOAD_LATEST_SAVE=false \ # 禁用加载最新存档 -e SAVE_NAME=my_save \ # 存档名(不含 .zip) --name factorio factoriotools/factorio
/opt/factorio/saves 下所有存档 → 重启。touch old_save.zip(更新修改时间)→ 重启;或删除其他存档仅保留目标文件。结合 GENERATE_NEW_SAVE=true 和 PRESET 环境变量,使用内置预设生成地图:
shellsudo docker run -d ... \ -e LOAD_LATEST_SAVE=false \ -e GENERATE_NEW_SAVE=true \ # 强制生成新存档 -e SAVE_NAME=new_world \ -e PRESET=death-world # 预设名称(如 death-world 为敌人生成强化模式)
常用预设值:
default(默认)、rich-resources(富资源)、marathon(马拉松模式,配方/科技成本提高)、death-world(死亡世界,敌人强化)、rail-world(铁路世界,资源分散)等。
手动安装:将模组(.zip)复制到 /opt/factorio/mods 目录,重启服务器。
自动更新模组(0.17+):
设置 UPDATE_MODS_ON_START=true,并提供 Factorio 账号的 USERNAME 和 TOKEN(在 Factorio 个人资料 获取)。
跳过指定模组更新:
通过 UPDATE_IGNORE=mod1,mod2 忽略特定模组(逗号分隔名称),避免兼容性问题。
注意:Space Age DLC 的内置模组(elevated-rails、quality、space-age)会自动跳过更新,无需单独下载。
使用场景启动需指定备用入口点,示例:
shelldocker run -d \ -p 34197:34197/udp -p 27015:27015/tcp \ -v /opt/factorio:/factorio \ --name factorio \ --entrypoint "/scenario.sh" \ # 场景入口点 factoriotools/factorio \ MyScenarioName # 场景名称(位于 Scenarios 目录下)
将场景转换为可加载的存档,使用 scenario2map.sh:
shelldocker run -d ... \ --entrypoint "/scenario2map.sh" \ factoriotools/factorio MyScenarioName
在 /opt/factorio/config 目录创建对应 JSON 文件:
白名单(0.15.3+):server-whitelist.json
json["允许的玩家1", "允许的玩家2"]
黑名单(0.17.1+):server-banlist.json
json["禁止的玩家1", "禁止的玩家2"]
管理员列表(0.17.1+):server-adminlist.json
json["管理员1", "管理员2"]
通过环境变量自定义服务器行为,常用参数如下:
| 变量名 | 说明 | 默认值 | 支持版本 |
|---|---|---|---|
LOAD_LATEST_SAVE | 是否加载最新存档(false 则用 SAVE_NAME) | true | 0.17+ |
GENERATE_NEW_SAVE | 是否生成新存档(需配合 SAVE_NAME) | false | 0.17+ |
SAVE_NAME | 指定存档名(不含 .zip) | _autosave1 | 0.17+ |
PRESET | 地图预设(生成新存档时) | - | 0.17+ |
PORT | 游戏端口(UDP) | 34197 | 0.15+ |
RCON_PORT | RCON 端口(TCP) | 27015 | 0.15+ |
UPDATE_MODS_ON_START | 启动时更新模组 | - | 0.17+ |
USERNAME/TOKEN | Factorio 账号(用于模组更新) | - | 0.17+ |
创建 docker-compose.yml:
yamlversion: '2' services: factorio: image: factoriotools/factorio ports: - "34197:34197/udp" # 游戏端口 - "27015:27015/tcp" # RCON 端口 volumes: - /opt/factorio:/factorio # 数据卷 restart: unless-stopped
启动命令:
shell# 准备目录(同快速启动步骤) sudo mkdir -p /opt/factorio sudo chown 845:845 /opt/factorio # 启动服务(后台运行) docker-compose up -d
修改 /opt/factorio/config/server-settings.json,开启局域网可见:
json"visibility": { "public": false, "lan": true }
启动容器时添加 --network=host,使客户端能自动发现服务器:
shellsudo docker run -d \ --network=host \ # 共享宿主机网络 -v /opt/factorio:/factorio \ --name factorio --restart=unless-stopped factoriotools/factorio
适合无根 Docker 环境,避免权限问题,镜像标签带 -rootless 后缀(如 stable-rootless)。特点:
chown 目录权限;快速启动:
shelldocker run -d \ -p 34197:34197/udp -p 27015:27015/tcp \ -v ~/factorio:/factorio \ # 宿主机用户目录(无需权限设置) --name factorio --restart=unless-stopped \ factoriotools/factorio:stable-rootless
如遇 chown: Operation not permitted 或文件权限异常:
-rootless 镜像;日志中若出现 Own address is RIGHT IP:WRONG PORT,可能是 Docker 代理导致端口检测错误。解决:
--userland-proxy=false(具体配置因系统而异);您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务