• 注册
  • 安装教程 安装教程 关注:1549 内容:55

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式

  • 查看作者
  • 打赏作者
  • 74
  • 安装教程
  • 初窥堂奥
    该内容使用了刷新卡,原发布时间:2个月前

    前言

    虽然本人还是游戏技术不行,还是一个萌新。但我搞搞这东西还是不错的😋

    最近在研究使用linux服务器来搭建服务端,研究了两天,fork了spt/server的代码来自行编译并创建docker镜像,方便linux服务器部署。现在给大家分享一下。两个方法:dockerservice

    代码仓库和docker镜像地址:

    官方: https://dev.sp-tarkov.com/SPT/Server sp-tarkov/server

    我的仓库,只修改了默认的http地址为0.0.0.0和输出的文件名:https://dev.sp-tarkov.com/medusa/spt-server AirryCo/spt-server: SP-Tarkov Server's Docker image supported

    自动构建地址:https://github.com/AirryCo/spt-server-ci.git

    Docker镜像:

    SPT 镜像站:https://dev.sp-tarkov.com/medusa/-/packages/container/spt-server/latest(停止更新,请更换为DockerHub地址或者GHCR地址)

    Docker Hub:https://hub.docker.com/r/stblog/spt-server

    GHCR:https://github.com/AirryCo/spt-server-ci/pkgs/container/spt-server

    【推荐】阿里云镜像地址:registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server

    本教程只分享搭建方法和解决搭建过程中遇到的问题,不解答服务端遇到bug。如果游玩中遇到bug,请考虑官方发布的程序

    未经本人授权,禁止搬运。

    一、使用docker部署

    安装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

    拉取镜像

    由于SPT站点空间有限,24-09-20开始停止更新SPT的Docker仓库镜像,请即时更换为DockerHubGHCR或者阿里云源

    三选一

    docker pull stblog/spt-server
    docker pull ghcr.io/airryco/spt-server
    docker pull registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server

    指定版本号,如:

    docker pull ghcr.io/airryco/spt-server:nightly
    docker pull stblog/spt-server:nightly-fika
    docker pull stblog/spt-server:3.9.8
    docker pull registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:3.9.8

    建议拉取时指定版本号,如果不指定,则默认使用 latest ,为最新稳定版。nightly为每夜版,即每天晚上自动构建版本,体验最新版服务端。nightly-fika为每夜版内置Fika-Server。详情:https://sns.oddba.cn/140144.html

    运行容器

    程序根目录为:/opt/spt-server/,用户数据存放在 /opt/spt-server/user ,容器端口为 6969

    !!!注意防火墙要放行主机映射过去的端口!!!

    !!!注意防火墙要放行主机映射过去的端口!!!

    !!!注意防火墙要放行主机映射过去的端口!!!

    以下两种方式二选一

    [*]对于 docker run

    使用 -p 来开启端口映射:-p <宿主机端口>:<容器端口>

    使用 -v 并开启数据持久化:-v <宿主机目录>:<容器目录>

    每夜版(每日更新版本):

    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 stblog/spt-server:nightly

    3.10版本:

    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 stblog/spt-server:3.10.0

    3.9版本:

    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

    [*]对于 docker composecompose.yml 配置如下

    3.10及以上版本:
    services:
      spt-server:
      image: registry.cn-shenzhen.aliyuncs.com/spt-server/spt-server:nightly
      container_name: spt-server
      restart: always
      volumes:
        - './spt-server:/opt/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'
       
    3.9.4版本:
    services:
     spt-server:
      image: dev.sp-tarkov.com/medusa/spt-server:3.9.4
      container_name: spt-server
      restart: always
      volumes:
        - './user:/opt/spt-server/user'
        - './configs:/opt/spt-server/configs'
      ports:
       - '6969:6969'

    然后运行:

    docker compose -p spt-server up -d

    查看容器日志:

    docker logs spt-server

    不出意外,内容输出如下:

    ➜   sudo docker logs -f spt-server
    Commit hash: a0c4ffe210e9b3a15bf600f8ffc03ca7ad13392b
    Build date: 1722043761109
    ┌─────────────────────────────────────────┐
    │ SPT 3.9.4                               │
    │ https://discord.sp-tarkov.com           │
    │                                         │
    │ This work is free of charge             │
    │ If you paid money, you were scammed     │
    │ Commercial use is prohibited            │
    └─────────────────────────────────────────┘
    ModLoader: loading: 1 server mods…
    Mod: nanosuit version: 1.1.0 by: AT loaded
    Server: executing startup callbacks…
    Importing database…
    Database import finished
    Started webserver at http://192.168.31.51:6969
    Started websocket at ws://192.168.31.51:6969
    Server is running, do not close while playing SPT, Happy playing!

    更新容器

    3.10及后面的版本请切换为DockerHub、GHCR或者阿里云!!!

    3.10及后面的版本请切换为DockerHub、GHCR或者阿里云!!!

    3.10及后面的版本请切换为DockerHub、GHCR或者阿里云!!!

    后续更新服务端版本,只需要重新拉取一遍容器,然后删除旧容器,重新运行新容器即可。

    docker stop spt-server
    docker rm spt-server
    docker run -d --name spt-server --restart always -p 6969:6969 -v ./spt-server:/opt/spt-server stblog/spt-server:latest

    连接

    更改登入器连接地址

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式

    二、使用linux服务的方式进行部署

    另外一篇教程提到,使用nohup方式运行的话,需要编译时把utf8编码输出那行代码删除,不然会报ERROR。现在提供一种以linux服务的方式运行,不需要删除代码,直接编译就能运行。

    !!!注意防火墙要放行6969端口!!!

    !!!注意防火墙要放行6969端口!!!

    !!!注意防火墙要放行6969端口!!!

    下载压缩包并解压

    github发布地址:https://github.com/AirryCo/spt-server-ci/releases

    举个栗子:

    3.10及以上版本

    wget https://github.com/AirryCo/spt-server-ci/releases/download/3.10.0-BEM-20240919/spt-server-3.10.0-BEM-20240919-linux-release-faa0b61f-EFT0.15.0.32291-20240920004544.zip
    unzip spt-server-3.10.0-BEM-20240919-linux-release-faa0b61f-EFT0.15.0.32291-20240920004544.zip


    3.9版本

    wget https://github.com/AirryCo/spt-server-ci/releases/download/3.9.8/spt-server-3.9.8-linux-release-EFT0.14.9.30626.tgz
    tar -zxvf spt-server-3.9.8-linux-release-EFT0.14.9.30626

    会解压出一个目录 spt-server

    目录结构如下:

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式

    创建linux服务

    使用编辑工具(vim、nano等)编辑文件 /usr/lib/systemd/system/spt-server.service

    vim /usr/lib/systemd/system/spt-server.service

    然后写入配置参考如下:

    [Unit]
    #服务描述
    Description=逃离塔科夫离线模式服务端
    
    After=network.target auditd.service
    
    [Service]
    #定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径)
    ExecStartPre=
    ExecStart=/opt/data/spt-server/SPT.Server
    ExecReload=
    ExecStop=
    
    # 应用程序工作目录(即服务端根目录)
    WorkingDirectory=/opt/data/spt-server
    
    Restart=no
    
    #创建私有的内存临时空间
    PrivateTmp=True
    
    [Install]
    #多用户
    WantedBy=multi-user.target

    保存退出

    运行服务

    sudo systemctl daemon-reload
    sudo systemctl start spt-server.service

    查看服务状态

    sudo systemctl status spt-server.service

    参考如下,主要注意 active (running) 字段,一定要为 running 才行!!!

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式


    查看服务器日志

    sudo journalctl -u spt-server.service

    日志太多我就不截图了


    开机自启(可选)

    sudo systemctl enable spt-server.service
    sudo systemctl status spt-server.service

    这个时候看到两个 enabled 就代表开机自启成功了

    [Linux服务端]linux主机/NAS搭建SPT-Server的教程,使用docker和Linux服务管理的方式

    三、关于3.9.8版本的Mod使用

    由于编译3.9版本的时候,没有注意编译路径,导致使用mod之后会报错。现贴出解决办法:

    please replace all instances of the string “/snapshot/project” in the mod folder with “/snapshot/workspace/medusa/spt-server/code/project” before running.(version 3.9 only,No changes required for version 3.10)

    Error: Cannot find module '/snapshot/project'

    replace: /snapshot/project ——-> /snapshot/workspace/medusa/spt-server/code/project
    command: sed -i "s/\/snapshot\/project/\/snapshot\/workspace\/medusa\/spt-server\/code\/project/g" $(grep -rl "/snapshot/project" .)

    Error: Cannot find module '/snapshot/workspace/node_modules

    replace: /snapshot/workspace ——-> /snapshot/workspace/medusa/spt-server/code/project
    command: sed -i "s/\/snapshot\/workspace/\/snapshot\/workspace\/medusa\/spt-server\/code\/project/g" $(grep -rl "/snapshot/workspace" .)

    Error: Cannot find module 'C:/snapshot/project'

    replace: C:/snapshot/project ——-> /snapshot/workspace/medusa/spt-server/code/project

    具体可查看:Error: Cannot find module '/snapshot/workspace/node_modules' · Issue #3 · AirryCo/spt-server-ci

    写在最后

    最后祝大家玩得开心!!!

    参考文章:

    【SPTarkov】SPT-AKI 3.9.3 Release-30626【24.07.20更新】【逃离塔科夫单机离线版】

    【服务端配置详解】【3.5.0】详细的服务端配置注释|修改成舒服的游戏环境|给萌新开启自定义的大门

    [Linux 教程]在Linux云服务器上使用docker部署SPT-AKI服务器

    在Linux上搭建SPT服务器(Aki.Server服务端)

    可能是史上最全面易懂的 Systemd 服务管理教程!( 强烈建议收藏 )-腾讯云开发者社区-腾讯云 (tencent.com)

    初窥堂奥
    置顶

    版本会自动更新并发布在DockerHub和GitHub上


    关于mod:如果需要使用mod,请先运行一次容器或服务,然后再把需要使用的Mod放入user/mods下。如果提示“Error: Cannot find module”的错误,查找Mod代码里的“C:/snapshot/project”,将其替换成“/snapshot/project”即可


    回复
    初窥堂奥

    二楼备用

  • 胖哥爱玩塔可夫中科大脚本安装docker不行
    拉黑 5个月前 电脑端回复
  • QueenMedusa @胖哥爱玩塔可夫 提示什么错误呢
    拉黑 4个月前 电脑端回复
  • QueenMedusa关于mod:如果需要使用mod,请先运行一次容器或服务,然后再把需要使用的Mod放入user/mods下。如果提示“Error: Cannot find module”的错误,查找Mod代码里的“C:/snapshot/project”,将其替换成“/snapshot/workspace/medusa/spt-server/code/project”即可
    拉黑 4个月前 电脑端回复
  • lyz12357active 不是running怎么办
    拉黑 3个月前 电脑端回复
  • 涵涵起飞服务端配置有什么要求吗?
    拉黑 1个月前 电脑端回复
  • QueenMedusa@涵涵起飞 内存要稍大点
    拉黑 1个月前 手机端回复
  • 回复
    自成一派
    VIP4
    不学无术老年人
    赠送了礼物[火箭]
    回复
    初窥堂奥
    打赏了10金币
    回复
    渐入佳境
    打赏了6金币
    回复
    登堂入室
    打赏了5金币
    回复
    登堂入室

    docker下貌似MG-Mod会爆红

  • QueenMedusa打mod我没试,只试了原版的
    拉黑 5个月前 手机端回复
  • QueenMedusa有截图吗
    拉黑 5个月前 手机端回复
  • 回复
    初窥堂奥
    先daemon-reload
    再查看,或者检查你的路径是不是对了
    回复
    初窥堂奥
    我用wsl会出现这样的问题,但是物理机跑就没问题,多半是网络问题,试试tcp端口能不能连上
    回复
    @赛博狂飙 这啥意思。。。可以麻烦看下我的主页提问帖子吗,我这个折腾一天了弄不好 [s-32]
    回复
    登堂入室

    已经按照Pronax的说法改了MGUSmod和MGTrader

    回复

    请登录之后再进行评论

    登录
    离线版教程
  • 今日 0
  • 内容 935
  • 关注 1549
  • 聊天
    关注 38

    【招募】GRIFFIN TKF项目开工 期待你的加入 || 你是否想加入格里芬书写自己与人形的故事

  • 签到
  • 任务
  • 发布
  • 模式切换
  • 偏好设置
  • 帖子间隔 侧栏位置: