SPT-Server For Linux 搭建教程

SPT-Server For Linux 搭建教程

一、前置准备

1.环境要求(有基础跳过)

  • Linux 主机 / NAS(支持 Docker,内存建议 ≥4GB,避免运行卡顿)
  • 服务器防火墙放行ALL6969 端口(核心端口,必须操作!)
  • 临时放行(CentOS/RHEL):sudo firewall-cmd --add-port=6969/tcp --permanent && sudo firewall-cmd --reload
  • 临时放行(Ubuntu/Debian):sudo ufw allow 6969/tcp && sudo ufw reload

2.核心资源

  • Docker 镜像地址(三选一,推荐阿里云,速度快):
  • Docker Hub:stblog/spt-server
  • GHCR:ghcr.io/airryco/spt-server
  • 阿里云(推荐):registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server
  • 代码仓库(可选):https://github.com/AirryCo/spt-server-ci

二、安装Docker(中科大脚本,稳定高效)

1.登录SSH终端(root 权限或 sudo 权限),下载并安装 Docker

# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 用中科大镜像源安装(国内速度快)
sudo DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce sh get-docker.sh

2.验证 Docker 是否安装成功

docker --version  # 输出 Docker 版本号即成功

3.(可选)设置 Docker 开机自启

sudo systemctl enable docker && sudo systemctl start docker

三、拉取 SPT-Server Docker 镜像

1.选择镜像源拉取(推荐指定版本,避免 latest 兼容性问题)

  • 拉取稳定版(3.11.3 为例):
# 阿里云(推荐)
docker pull registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.11.3
# 或 Docker Hub
docker pull stblog/spt-server:3.11.3
# 或 GHCR
docker pull ghcr.io/airryco/spt-server:3.11.3
  • 拉取每日更新版(nightly,体验最新功能)
docker pull registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:nightly
  • 拉取带 Fika-Server 的夜间版
docker pull stblog/spt-server:nightly-fika

2.查看已拉取的镜像

docker images  # 能看到 spt-server 镜像即成功

四、运行 SPT-Server 容器(二选一,推荐 docker run 简单直接)

方式 A:docker run 命令运行(适合新手)

1.创建本地目录用于数据持久化(避免容器删除后数据丢失)

mkdir -p ./spt-server  # 本地目录可自定义,如 /home/user/spt-server

2.执行运行命令(替换 192.168.1.1 为你的 Linux 主机内网 IP)

  • 3.10 及以上版本(推荐),如果复制执行报错,执行时将命令改为一行删除注释即可
docker run -d \
  --name spt-server \
  --restart always \  # 容器意外停止后自动重启
  -p 6969:6969 \  # 端口映射(宿主机:容器,保持 6969 即可)
  -e backendIp=192.168.1.1 \  # 你的 Linux 主机 IP(客户端连接用)
  -e backendPort=6969 \  # 映射端口(与上面一致)
  -v ./spt-server:/opt/spt-server \  # 数据持久化(本地目录:容器目录)
  registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.10.0
  • 3.9.x 版本(如 3.9.8),老版本自行测试,道理同上
docker run -d \
  --name spt-server \
  --restart always \
  -p 6969:6969 \
  -v ./spt-server:/opt/spt-server \
  dev.sp-tarkov.com/medusa/spt-server:3.9.8

方式 B:docker compose 运行(适合多服务管理)(自行测试)

1.创建 compose.yml 文件(根据版本选择配置)

  • 3.10 及以上版本(推荐)
services:
  spt-server:
    image: registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.11.3
    container_name: spt-server
    restart: always
    volumes:
      - ./spt-server:/opt/spt-server  # 数据持久化,本地目录可自定义,如 /home/user/spt-server
    ports:
      - "6969:6969"
    environment:
      - backendIp=192.168.1.1  # 替换为你的服务器IP
      - backendPort=6969
  • 3.9.5~3.9.8 版本
services:
  spt-server:
    image: dev.sp-tarkov.com/medusa/spt-server:latest
    container_name: spt-server
    restart: always
    network_mode: host
    volumes:
      - ./spt-server:/opt/spt-server
    ports:
      - "6969:6969"

2.启动容器

docker compose -p spt-server up -d

五、验证服务是否启动成功

1.查看容器运行状态

docker ps | grep spt-server  # 看到容器 ID 即运行中

2.查看服务日志(关键!确认是否启动成功)

docker logs -f spt-server

成功日志特征(若日志报错,优先检查:端口是否被占用、防火墙是否放行、镜像版本是否匹配)

Started webserver at http://192.168.1.1:6969
Started websocket at ws://192.168.1.1:6969
Server is running, do not close while playing SPT, Happy playing!

六、关键操作:更新 / 重启 / 停止服务

1.更新服务器版本

# 停止旧容器
docker stop spt-server
# 删除旧容器
docker rm spt-server
# 拉取新版本镜像(如 3.10.1)
docker pull registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.11.3
# 重新运行新容器(用步骤 3 的命令,替换镜像版本)
docker run -d --name spt-server --restart always -p 6969:6969 -e backendIp=192.168.1.1 -e backendPort=6969 -v ./spt-server:/opt/spt-server registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.11.3

2.重启服务

docker restart spt-server

3.停止服务

docker stop spt-server

七、常见问题解决

1.端口被占用

  • 查看占用 6969 端口的进程:sudo lsof -i:6969
  • 杀死进程:sudo kill -9 进程ID,或更换宿主机端口(如 -p 7000:6969,客户端同步修改地址)。

2.Mod 报错「Cannot find module '/snapshot/project'」(仅 3.9 版本)

  • 进入 Mod 目录,执行替换命令
# 替换 /snapshot/project 为实际路径
sed -i "s/\/snapshot\/project/\/snapshot\/workspace\/medusa\/spt-server\/code\/project/g" $(grep -rl "/snapshot/project" .)
# 替换 /snapshot/workspace(若报错)
sed -i "s/\/snapshot\/workspace/\/snapshot\/workspace\/medusa\/spt-server\/code\/project/g" $(grep -rl "/snapshot/workspace" .)
  • 3.10+ 版本无需此操作

3.容器启动后日志无响应

  • 检查内存是否充足(free -h),内存不足会导致服务卡死。
  • 重新拉取镜像(可能镜像损坏):docker pull 镜像地址 --no-cache

4.客户端无法连接

  • 确认 Linux 主机 IP 正确(ip addr 查看内网 IP)。
  • 关闭 Linux 防火墙或放行 6969 端口(步骤一已强调)。
  • 检查容器端口映射是否正确(docker ps 查看 PORTS 列是否为 0.0.0.0:6969->6969/tcp)。

八、注意事项

  1. 3.10 及以上版本必须使用 DockerHub/GHCR/ 阿里云镜像,原 SPT 官方镜像站已停止更新。
  2. 数据持久化目录(./spt-server)需妥善保存,包含游戏存档、Mod 等,删除目录会丢失数据。
  3. 服务端仅提供离线游戏环境,若需联机,需 Linux 主机有公网 IP 并配置端口转发(路由器设置)。
  4. 若遇到游戏内 Bug,优先使用官方原版程序,本教程仅解决搭建问题,不负责游戏 Bug 排查。

到此,不出意外的话服务器应该已经启动成功了,本服务器搭建到这里仅作为存档服务器使用。关于Fika联机,请下载对应版本的Fika-Plugin放到客户端对应文件夹内,此步骤结束应该已经可以实现联机功能。关于Fika-Headless(无头主机)问题,目前还在研究中,敬请期待。

最后修改于:2025年12月01日 10:21

添加新评论