服务器安装(Linux)#
Squad Server 的 Linux 版本一直比 Windows 版稳定性差一档,不推荐生产环境主力使用。但如果你只有 Linux 服务器,或者熟悉 Linux 运维,也可以跑起来。
下面给出两条路径:
- 方式一(推荐):使用
squad-manager.sh一键脚本,自动完成依赖安装、SteamCMD 部署、服务端下载、systemd 注册、防火墙放行,并支持多实例并行管理。 - 方式二:手动执行每一步命令,便于理解流程或排障。
系统要求#
- 系统:Ubuntu 20.04 / 22.04(Debian 11+ 也行,不推荐 CentOS)
- 架构:x86_64
- 内核:5.4+
- 内存:8GB 起(每实例)
- 硬盘:60GB 空间(每实例约 50GB)
方式一:使用 squad-manager.sh(推荐)#
将 squad-manager.sh 上传到服务器任意位置(如 /root/),授予执行权限:
bashchmod +x squad-manager.sh
1. 一次性环境安装#
bashsudo ./squad-manager.sh install
这一步会完成:
- 添加 i386 架构、安装 32 位运行库及
tmux/ufw/curl等依赖 - 创建
steam系统用户与 home 目录 - 下载 SteamCMD 到
/home/steam/steamcmd - 安装通用 systemd 模板单元
squad@.service
2. 创建实例#
bash# 默认实例:自动分配端口 (Game=7787, Query=15000, RCON=21114) sudo ./squad-manager.sh create main # 第二个实例:所有端口自动 +10 sudo ./squad-manager.sh create training --max-players 60 # 自定义端口 sudo ./squad-manager.sh create event \ --game-port 7807 --query-port 15020 --rcon-port 21134
每创建一个实例,脚本会:
- 写入实例配置到
/home/steam/.squad-manager/<name>.conf - 通过 SteamCMD 把服务端下载到
/home/steam/instances/<name>/server - 注册并启用
squad@<name>.service - 若
ufw已启用,自动放行三个端口
3. 日常运维#
bashsudo ./squad-manager.sh list # 列出所有实例 (端口 / 状态) sudo ./squad-manager.sh start main # 启动 sudo ./squad-manager.sh stop main # 停止 sudo ./squad-manager.sh restart main # 重启 sudo ./squad-manager.sh status main # 查看 systemd 状态 sudo ./squad-manager.sh logs main -f # 跟踪日志 (透传 journalctl) sudo ./squad-manager.sh update main # 通过 SteamCMD 更新服务端 sudo ./squad-manager.sh remove main # 注销实例 (保留数据) sudo ./squad-manager.sh remove main --purge # 彻底卸载 (含数据)
目录结构概览#
text/home/steam/ ├── steamcmd/ # SteamCMD 主程序 ├── instances/ │ ├── main/server/ # 实例 main 的服务端文件 │ ├── training/server/ # 实例 training 的服务端文件 │ └── event/server/ └── .squad-manager/ ├── main.conf # 端口/玩家数等元信息 ├── training.conf └── event.conf
squad@.service 模板通过 EnvironmentFile=/home/steam/.squad-manager/%i.conf 加载每个实例的端口配置,%i 即实例名。
方式二:手动部署#
适合只跑单实例或想理解每一步在做什么。
安装 SteamCMD#
bash# 添加 32 位架构支持(SteamCMD 需要) sudo dpkg --add-architecture i386 sudo apt update # 安装依赖 sudo apt install -y lib32gcc-s1 lib32stdc++6 curl wget tmux # 创建 Steam 用户 sudo useradd -m -s /bin/bash steam sudo su - steam # 下载并解压 SteamCMD mkdir ~/steamcmd && cd ~/steamcmd curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
下载 Squad 服务端#
bash./steamcmd.sh +force_install_dir /home/steam/squad-server +login anonymous +app_update 403240 validate +quit
启动脚本#
创建 /home/steam/start-squad.sh:
bash#!/bin/bash cd /home/steam/squad-server ./SquadGameServer.sh \ Port=7787 \ QueryPort=15000 \ FIXEDMAXPLAYERS=100 \ RANDOM=ALWAYS
授权:
bashchmod +x /home/steam/start-squad.sh
用 tmux 持久运行#
bash# 新建会话 tmux new -s squad # 启动服务器 /home/steam/start-squad.sh # Ctrl+B 然后按 D 分离
查看运行状态:
bashtmux attach -t squad
systemd 服务化(生产环境推荐)#
创建 /etc/systemd/system/squad.service:
ini[Unit] Description=Squad Dedicated Server After=network.target [Service] Type=simple User=steam Group=steam WorkingDirectory=/home/steam/squad-server ExecStart=/home/steam/start-squad.sh Restart=on-failure RestartSec=30 [Install] WantedBy=multi-user.target
启用:
bashsudo systemctl daemon-reload sudo systemctl enable squad sudo systemctl start squad sudo systemctl status squad
防火墙#
bashsudo ufw allow 7787/udp sudo ufw allow 15000/udp sudo ufw allow 21114/tcp sudo ufw reload
Linux 下运行 rank.exe#
原生 Linux 版 rank 暂未开放,需要用 wine 运行 Windows 版:
bashsudo apt install wine64 cd /home/steam/squad-server/SquadGame/Saved/Logs/ wine rank.exe
Linux 环境下跑 rank.exe 稳定性不如原生,建议观察几天再投入使用。有 Linux 原生需求可以反馈给 ICFK 技术支持。
常见问题#
无法加载共享库 libgcc_s.so
bashsudo apt install lib32gcc-s1
出现 stdlib++ 报错
bashsudo apt install lib32stdc++6
服务器启动但游戏内搜不到 99% 是防火墙问题。检查 ufw status,确认游戏端口(默认 7787/udp)和查询端口(默认 15000/udp)已放行。多实例环境下,squad-manager.sh list 可以快速看到每个实例占用的端口。
多实例端口冲突 / 想查实例分配了哪些端口
bashsudo ./squad-manager.sh list
脚本默认每创建一个实例所有端口同时偏移 10,正常情况下不会冲突。如需自定义可用 --game-port 等参数显式指定。
已经手动装过单实例,能不能切到 squad-manager.sh 管理? 可以。先 sudo systemctl stop squad && sudo systemctl disable squad,再用 squad-manager.sh create <name> 新建一个实例(会重新下载到 /home/steam/instances/<name>/server,原 /home/steam/squad-server 可保留或手动删除)。如果磁盘紧张,也可以直接把旧目录 mv 到新位置后手动写入对应的 .conf 文件。