Linux

1.一键脚本安装

默认端口 简述 作用
7777(TCP、UDP) 游戏端口 此端口可在服务启动时使用 -Port 参数自由转发,例如 "-Port=10000" 将游戏端口更改为 10000。当该端口被占用时,会递增寻找可用端口

安装过程

注意:推荐swap当前开启为11G,如果低于12G的话,游戏服务器会内存溢出导致无限重启

安装命令

centos7 / Centos stream:

#国外服务器使用
bash <(wget -qO- https://github.com/jinzhongjia/satisfactory/raw/script/satisfactory_c7.sh)
#国内服务器使用
bash <(wget -qO- https://cdn.jsdelivr.net/gh/jinzhongjia/satisfactory@script/satisfactory_c7.sh)

centos8:

#国外服务器使用
bash <(wget -qO- https://github.com/jinzhongjia/satisfactory/raw/script/satisfactory_c8.sh)
#国内服务器使用
bash <(wget -qO- https://cdn.jsdelivr.net/gh/jinzhongjia/satisfactory@script/satisfactory_c8.sh)

ubuntu / debian:

#国外服务器使用
bash <(wget -qO- https://github.com/jinzhongjia/satisfactory/raw/script/satisfactory_d.sh)
#国内服务器使用
bash <(wget -qO- https://cdn.jsdelivr.net/gh/jinzhongjia/satisfactory@script/satisfactory_d.sh)

操作命令

# 如果是在普通用户下执行,请使用sudo
systemctl start satisfactory
#开启游戏服务
systemctl restart satisfactory
#重启游戏服务,用于进行游戏更新
systemctl stop satisfactory
#终止游戏服务
systemctl status satisfactory
#查看游戏服务状态

配置说明

脚本会在系统中创建一个steam账户用于安装steamcmd和satisfactory完成后的服务器运行(root账户无法运行该服务)!
steamcmdsatisfactory存放位置:/home/steam/

存档位置

路径:/home/steam/.config/Epic/FactoryGame/Saved/SaveGames/server

蓝图位置

路径:/home/steam/.config/Epic/FactoryGame/Saved/SaveGames/blueprints/

tips:default 需在蓝图文件夹内新建任意名称文件夹,否则无法识别到蓝图,所以此时你应该将蓝图上传至这样的文件夹中 `/home/steam/.config/Epic/FactoryGame/Saved/SaveGames/blueprints/你新建的文件夹名/

更改游戏人数

配置路径:/home/steam/FactoryGame/Saved/Config/LinuxServer/Game.ini
内容应为:下面的8为最大游戏人数

[/Script/Engine.GameSession]
MaxPlayers=8

游戏更新

本脚本已经内置了游戏服务在每晚4点重新启动,并进行检测更新!
如果想要手动更新游戏版本,只需要对游戏服务进行重启即可!

# 如果是在普通用户下执行,请使用sudo
systemctl restart satisfactory
#重启游戏服务,用于进行游戏更新

脚本完整删除方法

  1. 删除/home/steam文件夹
rm -rf /home/steam
  1. 删除steam用户
userdel –r steam

2.docker-compose安装

准备工作

  1. 安装docker
  2. 安装docker-compose

配置文件

在需要的目录创建一个 docker-compose.yml文件,把服务器的配置写进去

services:
  satisfactory-server:
    container_name: 'satisfactory-server'
    hostname: 'satisfactory-server'
    image: 'wolveix/satisfactory-server:latest'
    ports:
      - '7777:7777/udp'
      - '7777:7777/tcp'
    volumes:
      - './satisfactory-server:/config'
    environment:
      - MAXPLAYERS=4   # 修改游戏人数
      - PGID=1000
      - PUID=1000
      - ROOTLESS=false
      - STEAMBETA=false
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "bash", "/healthcheck.sh" ]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 120s
    deploy:
      resources:
        limits:
          memory: 8G
        reservations:
          memory: 4G

这个配置文件看着挺长的,但其实很好理解:

  • container_namehostname: 就是给咱们的容器起个名字,方便管理。

  • image: 指定了我们要用的Docker镜像,这里用的是 wolveix/satisfactory-server的最新版。

  • ports: 设置端口映射,把容器的7777端口映射到主机的7777端口,支持UDP和TCP。

  • volumes: 数据持久化,把容器里的 /config目录映射到主机上,这样服务器的数据就不会丢失。

  • environment: 设置一些环境变量,比如最大玩家数、用户权限等。

  • restart: 设置为除非手动停止,否则always自动重启。

  • healthcheck: 定期检查服务器是否健康,如果出问题就自动重启。

  • deploy: 设置了内存限制,保证服务器不会吃掉所有内存。

    运行多个服务器

    如果你需要运行多个服务器,docker-compose.yml文件可以这样写

services:  
  satisfactory-server_1:   # 这是第一个服务器
    container_name: satisfactory-server_1  
    image: wolveix/satisfactory-server:latest  
    ports:  
      - "7777:7777/udp"  
      - "7777:7777/tcp"  
    volumes:  
      - ./satisfactory-server:/config  
    environment:  
      - MAXPLAYERS=16   # 修改游戏人数  
      - PGID=1000  
      - PUID=1000  
      - ROOTLESS=false  
      - STEAMBETA=false  
    restart: unless-stopped  
    healthcheck:  
      test: [ "CMD", "bash", "/healthcheck.sh" ]  
      interval: 30s  
      timeout: 10s  
      retries: 3  
      start_period: 120s  
    deploy:  
      resources:  
        limits:  
          memory: 16G  
        reservations:  
          memory: 4G  
  
  satisfactory-server_2:   # 这是第二个服务器
    container_name: satisfactory-server_2  
    image: wolveix/satisfactory-server:latest  
    ports:  
      - "8192:7777/udp"  
      - "8192:7777/tcp"  
    volumes:  
      - ./satisfactory-server2:/config  
    environment:  
      - MAXPLAYERS=16   # 修改游戏人数  
      - PGID=1000  
      - PUID=1000  
      - ROOTLESS=false  
      - STEAMBETA=false  
    restart: unless-stopped  
    healthcheck:  
      test: [ "CMD", "bash", "/healthcheck.sh" ]  
      interval: 30s  
      timeout: 10s  
      retries: 3  
      start_period: 120s  
    deploy:  
      resources:  
        limits:  
          memory: 8G  
        reservations:  
          memory: 4G

启动服务器

docker-compose up -d

查看服务器日志,可以用这个命令:

docker-compose logs -f satisfactory-server

停止服务器

docker-compose down

服务器文件都在 ./satisfactory-server目录里,想备份的话直接复制这个文件夹就行。

蓝图位置:

路径:/home/satisfactory-server/saved/blueprints/

tips:default 需在蓝图文件夹内新建任意名称文件夹,否则无法识别到蓝图,所以此时你应该将蓝图上传至这样的文件夹中 `/home/satisfactory-server/saved/blueprints/你新建的文件夹名/

Windows

获取steamcmd包:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
登录steam控制台:

login anonymous

下载文件

app_update 1690800 validate

推出steamcmd

quit

服务器更新:
记事本写入:

steamcmd +login anonymous +app_update 1690800 validate +quit

保存后将文件格式由"文件名.txt"改为"文件名.bat",以后如遇服务器更新,直接双击就可以更新服务器,更新之前记得关闭正在运行的服务器窗口。这条命令相当于把之前的步骤都整合到一起,同样适用于初始建立服务器

开启幸福工厂专用服务器

  • 专用服务器下载完成后,进入steamcmd \steamapps{=tex}\common{=tex}\SatisfactoryDedicatedServer文件夹下{=tex},找到FactoryServer.exe这个程序,右键发送到桌面快捷方式。

  • 在桌面右键快捷方式,选择属性,在"快捷方式"一栏下的"目标"后面,添加:" -log -unattended"(需要注意最前边有一个空格, -log代表强制服务器在窗口显示日志, -unattended代表使服务器不会显示任何对话框,否则如果不注意,这些对话框可能会中断服务器的运行),点击应用-确定。

  • 最后双击快捷方式就可以开启服务器了。这种方式可以直接在桌面启动服务器,更为方便简洁。

    关于mod服务器

    Linux暂时没找到可以使用mod进行开服的方法,Windows可以使用,后续我会继续进行尝试/寻找,将mod服务器进行补全