18
10
月
2026
每次开新服都要重来一遍:装依赖、建用户、配 Swap、设防火墙、装 SteamCMD、配 systemd……同样的步骤抄十遍,总有一次抄错。这篇把这些固化成一套一键环境脚本:新机器跑一遍,十分钟后就是一个随时可以装任何游戏的标准开服环境。
本文基于 财富云计算 NAT 型云服务器(无独立公网 IP、价格比独立 IP 机型省一半以上)的 Ubuntu 22.04 环境编写。脚本可直接抄走,按注释改几个变量即可。
一、脚本要干什么:一张清单
| 步骤 | 内容 | 为什么 |
|---|---|---|
| 1 | 系统更新 + 基础工具 | vim/curl/git,裸机啥都没有 |
| 2 | 创建普通用户 + sudo | 不用 root 日常操作,安全基线 |
| 3 | 配置 Swap | 小内存机器的救命稻草,Swap 优化 |
| 4 | 内核参数调优 | 游戏服专用 sysctl,内核调优 |
| 5 | 防火墙(ufw) | 默认拒绝 + 按需放行,防火墙配置 |
| 6 | fail2ban | 防暴力破解,fail2ban 实战 |
| 7 | 装 SteamCMD | 所有 Steam 游戏的基础,SteamCMD 指南 |
| 8 | 装 screen/tmux | 会话保持,screen 与 tmux |
二、一键脚本:直接抄走
#!/bin/bash
# ============================================
# 游戏开服环境一键配置脚本
# 适用:Ubuntu 22.04 / Debian 12
# 用法:bash setup-gameserver.sh
# ============================================
set -e
# ---------- 可改变量 ----------
SWAP_SIZE="4G" # Swap 大小,小机器建议 4G,内存大可不设
SSH_PORT="2xxxx" # SSH 端口,改成一个高位端口
GAME_USER="gameserver" # 跑服务端的普通用户
# ---------- 1. 系统更新与基础工具 ----------
echo "[1/8] 系统更新..."
apt update && apt upgrade -y
apt install -y vim curl wget git htop net-tools \
software-properties-common ufw fail2ban \
screen tmux unzip tar
# ---------- 2. 创建普通用户 ----------
echo "[2/8] 创建用户 $GAME_USER..."
id "$GAME_USER" &>/dev/null || adduser --disabled-password --gecos "" "$GAME_USER"
usermod -aG sudo "$GAME_USER"
# ---------- 3. Swap ----------
echo "[3/8] 配置 Swap..."
if [ ! -f /swapfile ]; then
fallocate -l "$SWAP_SIZE" /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 游戏服倾向:少用 Swap,但要有
sysctl -w vm.swappiness=10
echo 'vm.swappiness=10' >> /etc/sysctl.d/99-gameserver.conf
fi
# ---------- 4. 内核参数 ----------
echo "[4/8] 内核调优..."
cat > /etc/sysctl.d/99-gameserver.conf << 'EOF'
# 游戏服网络调优
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
# 连接跟踪(多玩家同机时防 table 满)
net.netfilter.nf_conntrack_max = 131072
# 文件句柄
fs.file-max = 65535
# 少用 Swap
vm.swappiness = 10
EOF
sysctl -p /etc/sysctl.d/99-gameserver.conf
# ---------- 5. 防火墙 ----------
echo "[5/8] 防火墙配置..."
ufw default deny incoming
ufw default allow outgoing
ufw allow "$SSH_PORT"/tcp comment 'SSH'
# 游戏端口按需加,例如帕鲁:
# ufw allow 8211/udp comment 'Palworld'
# ufw allow 27015/udp comment 'Palworld Query'
ufw --force enable
# ---------- 6. SSH 加固 ----------
echo "[6/8] SSH 加固..."
sed -i "s/^#\?Port .*/Port $SSH_PORT/" /etc/ssh/sshd_config
sed -i "s/^#\?PermitRootLogin .*/PermitRootLogin prohibit-password/" /etc/ssh/sshd_config
systemctl restart sshd
# ---------- 7. fail2ban ----------
echo "[7/8] fail2ban..."
cat > /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = $SSH_PORT
maxretry = 3
bantime = 86400
findtime = 600
EOF
systemctl enable --now fail2ban
# ---------- 8. SteamCMD ----------
echo "[8/8] 安装 SteamCMD..."
if [ ! -d /home/$GAME_USER/steamcmd ]; then
mkdir -p /home/$GAME_USER/steamcmd
cd /home/$GAME_USER/steamcmd
wget -q https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
chown -R $GAME_USER:$GAME_USER /home/$GAME_USER/steamcmd
fi
echo "========================================"
echo "环境配置完成!接下来:"
echo "1. 用 $GAME_USER 登录,装游戏服务端(见各游戏教程)"
echo "2. 配 systemd 托管,参考:"
echo " https://z0w.cn/wiki/systemd-service-guide.html"
echo "3. 端口映射参考:"
echo " https://z0w.cn/wiki/nat-port-forwarding-guide.html"
echo "========================================"使用前必改的三个变量:SSH_PORT(必须改)、SWAP_SIZE(按内存定)、GAME_USER(随意)。
三、跑完脚本之后:装游戏四步
环境就绪,装任何 Steam 游戏都是同一个套路(以帕鲁为例):
# 1. 切到普通用户
su - gameserver
# 2. SteamCMD 装服务端(匿名登录,AppID 1623730 是帕鲁)
cd ~/steamcmd
./steamcmd.sh +login anonymous +app_update 1623730 validate +quit
# 3. 进服务端目录,改配置(端口、RCON 密码、玩家上限)
cd ~/Steam/steamapps/common/PalServer
vim PalWorldSettings.ini
# 4. systemd 托管,崩了自动拉起
# 完整教程:https://z0w.cn/wiki/systemd-service-guide.html其他游戏的 AppID 和配置差异,见各游戏开服教程和SteamCMD 完全使用指南。
四、systemd 托管模板(游戏的通用骨架)
所有游戏服务端都可以套这个模板:
# /etc/systemd/system/game-server.service
[Unit]
Description=Game Server
After=network.target
[Service]
Type=simple
User=gameserver
WorkingDirectory=/home/gameserver/Steam/steamapps/common/PalServer
ExecStart=/home/gameserver/Steam/steamapps/common/PalServer/PalServer.sh
Restart=always
RestartSec=10
# 资源限额:保护同机其他服务
MemoryMax=12G
CPUQuota=300%
# 安全加固
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/gameserver/Steam/steamapps/common/PalServer
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now game-server
sudo systemctl status game-server # 看状态
sudo journalctl -u game-server -f # 看日志五、备份脚本:和环境脚本配套
光有环境不够,备份也要一键:
#!/bin/bash
# 每日存档备份 + 异地同步
BACKUP_DIR=/backup
GAME_DIR=/home/gameserver/Steam/steamapps/common/PalServer/Pal/Saved
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/save_$DATE.tar.gz" -C "$GAME_DIR" . 2>/dev/null
# 保留 14 天
find "$BACKUP_DIR" -name "save_*.tar.gz" -mtime +14 -delete
# 异地同步(配好 rclone 后启用)
# rclone copy "$BACKUP_DIR/save_$DATE.tar.gz" remote:gamesave/挂 crontab 每天跑:
crontab -e
# 0 4 * * * /usr/local/bin/backup-save.sh完整方案见crontab 计划任务完全指南和rsync 同步与定时备份实战。
六、脚本使用的三个注意
- SSH 端口改完后,当前连接不会断(sshd 重启不影响已建立连接),但下次连接要用新端口——先测试新端口能连,再关旧会话。
- 防火墙先放行 SSH 端口再 enable,脚本里的顺序就是对的,别手动打乱。
- 游戏端口别在脚本里预先放行——按你实际开的服加,端口表规划见端口速查表。
结语
一键脚本的价值不是「省十分钟」,是把「凭记忆操作」变成「标准化流程」——每台新机器环境一致,出问题有据可查,换机器重建只要十分钟。配合 systemd 托管和自动备份,你的开服工作流就完整了:环境一键 → 装服四步 → 托管常驻 → 备份自动。
想图形化管理不想敲命令?看游戏开服面板搭建指南;想多服同机,看多游戏共存一台服务器。
财富云计算 专注 NAT 型云服务器,无独立公网 IP、价格比独立 IP 机型省一半以上,重装系统后跑一遍本站脚本即可满血复活,30+ 游戏 AppID 与配置教程见端口速查表。
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]《致命公司》(Lethal Company)是这两年最火的合作恐怖游戏——四个「打工人」去废弃卫星捡垃圾,躲怪物,交配额。游戏本体只有 45 块,联机需求极大,但它没有官方专用服务器,默认是「房主当主机」的 P2P 模式:房主退游戏,全队解散。这篇讲怎么用社区专用服务端模组,在 Linux 云服务器上搭一个房主不在也能进、24 小时在线的长期服。本文基于 财富云计算 NAT 型云服务器(无独立公网[...]
2026-10-18 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复