Zh/SteamCMD: Difference between revisions
No edit summary |
m (Nesciuse moved page SteamCMD:zh-cn to Zh/SteamCMD over redirect: -Language prefixes) |
||
(12 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{lang|title=Steam 控制台客户端|SteamCMD}} | ||
|title= | '''Steam 控制台客户端'''('''SteamCMD''')是一个命令行版本的 Steam 客户端。它的主要用途是在一个命令行界面的 Steam 客户端上安装及更新各种可用的专用服务端。它适用于使用 [[SteamPipe:zh-cn|SteamPipe]] 内容分发系统的游戏。所有游戏已经从旧的[[HLDSUpdateTool| 半条命专用服务器更新工具]]迁移到了 SteamCMD。 | ||
| | |||
}} | |||
''' | |||
== 下载 SteamCMD == | == 下载 SteamCMD == | ||
=== | === Windows === | ||
1. | 1. 创建一个为 SteamCMD 准备的文件夹。 | ||
''例如'' | |||
C:\steamcmd | C:\steamcmd | ||
2. | 2. 下载适用于 Windows 系统的 SteamCMD:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip | ||
3. 提取 zip 中的文件至文件夹。 | |||
=== Linux === | |||
创建一个名为 ''steam'' 的用户帐户以安全地运行 SteamCMD,并将其与操作系统的其余部分隔离。'''以 root 用户身份登录时请勿运行 steamcmd'''——这样做会带来'''安全风险'''。 | |||
1. 以 root 用户身份创建 ''steam'' 用户: | |||
useradd -m steam | |||
2. 进入其主文件夹: | |||
cd /home/steam | |||
==== 安装来自软件仓库的软件包 ==== | |||
1. 建议从您的分发软件仓库安装 SteamCMD 软件包(如果有): | |||
Ubuntu/Debian | |||
sudo apt install steamcmd | |||
{{Note|如果您使用的是64位计算机,则需要添加 multiverse | |||
sudo add-apt-repository multiverse | |||
sudo dpkg --add-architecture i386 | |||
sudo apt update | |||
sudo apt install lib32gcc1 steamcmd | |||
}} | |||
RedHat/CentOS | |||
yum install steamcmd | |||
Arch Linux | |||
git clone https://aur.archlinux.org/steamcmd.git | |||
cd steamcmd | |||
makepkg -si | |||
2. 链接 '''steamcmd''' 可执行文件: | |||
ln -s /usr/games/steamcmd steamcmd | |||
==== Docker ==== | |||
如果你的服务器正在运行 [https://www.docker.com/ Docker],您可以简单地使用: | |||
<pre> | |||
docker run -it --name=steamcmd cm2network/steamcmd bash | |||
</pre> | |||
steamcmd.sh location: ''/home/steam/steamcmd'' | |||
该映像可用作基于Steam的专用服务器的基础映像。 | |||
例如: | |||
[https://hub.docker.com/r/cm2network/csgo/ https://hub.docker.com/r/cm2network/csgo/] | |||
您可以在此处找到相关的 Docker Hub 页面: | |||
[https://hub.docker.com/r/cm2network/steamcmd/ https://hub.docker.com/r/cm2network/steamcmd/] | |||
==== 手动安装 ==== | |||
1. 在开始之前,您必须先安装运行 SteamCMD 所需的依赖项: | |||
sudo yum - | Ubuntu/Debian 64-Bit | ||
sudo apt-get install lib32gcc1 | |||
RedHat/CentOS | |||
yum install glibc libstdc++ | |||
RedHat/CentOS 64-Bit | |||
yum install glibc.i686 libstdc++.i686 | |||
2. 以 root 用户身份升级至 ''steam'' 用户: | |||
su - steam | su - steam | ||
如果您不是以 root 用户身份登录,而是使用<code>sudo</code>来行使管理权限,请以如下所示来升级至 ''steam'' 用户: | |||
sudo -iu steam | sudo -iu steam | ||
3. | 3. 为 SteamCMD 创建目录并切换至该目录。 | ||
mkdir ~/ | mkdir ~/Steam && cd ~/Steam | ||
4. 下载并解压缩适用于 Linux 的 SteamCMD。 | |||
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - | |||
''中国内地用户可使用以下命令以使用内地节点:'' | |||
curl -sqL "https://media.st.dl.bscstorage.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - | |||
5. 安装tmux 和/或 screen 以简化服务器管理 | |||
sudo apt-get install tmux screen -y; | |||
=== | === macOS === | ||
1. | 1.打开终端并创建一个为 SteamCMD 准备的目录。 | ||
mkdir ~/steamcmd && cd ~/steamcmd | mkdir ~/steamcmd && cd ~/steamcmd | ||
2. | 2. 下载并解压缩适用于 macOS 的 SteamCMD。 | ||
curl -sqL ' https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz ' | tar zxvf - | curl -sqL ' https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz ' | tar zxvf - | ||
''中国内地用户可使用以下命令以使用内地节点:'' | |||
curl -sqL ' https://media.st.dl.bscstorage.net/client/installer/steamcmd_osx.tar.gz ' | tar zxvf - | |||
== 运行 SteamCMD == | == 运行 SteamCMD == | ||
'' | ''在第一次运行 SteamCMD 时将自动更新并显示一个<code>Steam></code>的输入提示。输入<code>help</code>来获取更多信息。'' | ||
=== | === Windows === | ||
打开一个命令行窗口并启动 SteamCMD。 | |||
cd C:\steamcmd | cd C:\steamcmd | ||
steamcmd | steamcmd | ||
=== Linux/ | === Linux/macOS === | ||
打开一个终端并启动 SteamCMD. | |||
cd ~/ | 如果您是通过软件仓库中的软件包安装的: | ||
cd ~ | |||
steamcmd | |||
如果您是手动安装的: | |||
cd ~/Steam | |||
./steamcmd.sh | ./steamcmd.sh | ||
Line 89: | Line 153: | ||
login anonymous | login anonymous | ||
=== | === 使用 Steam 帐户登录 === | ||
一些服务端需要你使用一个 Steam 帐户来登录。 | |||
{{Note| | {{Note|为了安全起见建议您创建一个服务端专用的 Steam 帐户。}} | ||
{{Note| | {{Note|一个用户同时只能在一处登录(无论是在图形界面客户端还是在 SteamCMD 登录)。}} | ||
login <用户名> | login <用户名> | ||
Line 99: | Line 163: | ||
下一步请输入您的密码。 | 下一步请输入您的密码。 | ||
如果 Steam 令牌已经在用户帐户上激活,查看你电子邮箱中的 Steam 令牌验证码并输入它。这仅仅只是第一次登录时需要(以及当你删除了 SteamCMD 用于存储登录信息文件的时候)。 | |||
如果你已经成功登录了你的帐户,你应该会看到一条消息。 | 如果你已经成功登录了你的帐户,你应该会看到一条消息。 | ||
Line 105: | Line 169: | ||
== 下载一个应用 == | == 下载一个应用 == | ||
1. | 1. 打开 SteamCMD 并登录它。 | ||
2. | 2. 设置你的应用安装目录(注意:在 Linux/macOS 下使用正斜杠<code>/</code>,在Windows 下使用反斜杠<code>\</code>)。 | ||
force_install_dir <路径> | force_install_dir <路径> | ||
Line 115: | Line 179: | ||
force_install_dir ./csgo_ds/ | force_install_dir ./csgo_ds/ | ||
''' | '''在Windows ''': force_install_dir .\csgo_ds\ | ||
3. 安装或更新应用使用<code>app_update</code>命令(在这里提供[[Steam Application IDs| | 3. 安装或更新应用使用<code>app_update</code>命令(在这里提供[[Steam Application IDs|Steam 应用 ID]])。 要同时校验应用的话,需添加<code>validate</code>到命令里。要下载测试分支的话,使用<code>-beta <测试名称></code>选项 – 例如,[[Half-Life Dedicated Server|半条命专用服务器]]的测试分支名为<code>beta</code>以及[[Source Dedicated Server|起源专用服务器]]的测试分支名为<code>prerelease</code>。一些测试分支设置了密码;如果要从它那里下载,需同时添加<code>-betapassword <密码></code>选项。 | ||
app_update <应用ID> [-beta <测试名称>] [-betapassword <密码>] [validate] | app_update <应用ID> [-beta <测试名称>] [-betapassword <密码>] [validate] | ||
[[Half-Life Dedicated Server|半条命专用服务器]] | [[Half-Life Dedicated Server|半条命专用服务器]]是一个特例:应用 ID 都是90,必须先选择模组。 这是通过设置配置选项<code>mod</code>来请求变量的。 | ||
app_set_config < | app_set_config <应用 ID> <选项名称> <变量选项> | ||
: 例如:安装并校验反恐精英:全球攻势专用服务器: | : 例如:安装并校验反恐精英:全球攻势专用服务器: | ||
Line 130: | Line 194: | ||
app_set_config 90 mod tfc | app_set_config 90 mod tfc | ||
app_update 90 validate | app_update 90 validate | ||
{{Bug|[[Half-Life Dedicated Server|半条命专用服务器]] | {{Bug|[[Half-Life Dedicated Server|半条命专用服务器]] (应用 ID 90)需要多次运行<code>app_update</code>命令才能安装完所有所需要的文件。只需运行<code>app_update 90 validate</code>多次直到没有更多的更新内容即可。}} | ||
: 例如:安装并校验测试版本的[[Half-Life Dedicated Server|半条命专用服务器(半条命)]]: | : 例如:安装并校验测试版本的[[Half-Life Dedicated Server|半条命专用服务器(半条命)]]: | ||
app_update 90 -beta beta validate | app_update 90 -beta beta validate | ||
Line 140: | Line 204: | ||
app_update 4940 -beta alpha -betapassword natsel validate | app_update 4940 -beta alpha -betapassword natsel validate | ||
3. 完成之后,输入<code>quit</code> | 3. 完成之后,输入<code>quit</code>从而正确地从 Steam 服务器内注销帐户。 | ||
quit | quit | ||
Line 146: | Line 210: | ||
=== 验证 === | === 验证 === | ||
validate | validate | ||
验证是一个命令以用来检查服务端的所有文件以确保他们符合 SteamCMD 所应该下载到本地的文件。如果你认为文件可能已丢失或已损坏,那么此命令将会非常有用。 | |||
{{Note|验证将会覆盖已被更改了的文件。这可能会导致服务端的自定义问题。例如:如果你自定义了<code>mapcycle.txt</code>,此文件将会被覆盖至服务端的默认值。不是默认安装文件一部分的任何文件将不受影响。}} | {{Note|验证将会覆盖已被更改了的文件。这可能会导致服务端的自定义问题。例如:如果你自定义了<code>mapcycle.txt</code>,此文件将会被覆盖至服务端的默认值。不是默认安装文件一部分的任何文件将不受影响。}} | ||
Line 154: | Line 218: | ||
=== 所支持的服务端 === | === 所支持的服务端 === | ||
已知可使用 SteamCMD 安装的服务端可在[[Dedicated Servers List|专用服务器列表]]页面查询。需要注意的是额外命令需在 app_update 之前被执行。 | |||
== | == 自动执行 SteamCMD == | ||
这里有两个方法来自动执行 SteamCMD 。(在Linux/macOS 下使用<code>./steamcmd.sh</code>来替代<code>steamcmd</code>。) | |||
=== 命令行 === | === 命令行 === | ||
Line 176: | Line 240: | ||
=== 创建脚本 === | === 创建脚本 === | ||
{{Note| | {{Note|建议使用 UTF-8 编码保存文本文件。}} | ||
1. | 1. 把你的 SteamCMD 命令放置在文本文件中。(你可以添加注释,只需在其前面添加<code>//</code>。)例如: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
// 更新反恐精英:全球攻势专用服务器 | // 更新反恐精英:全球攻势专用服务器 | ||
Line 191: | Line 255: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2. 带着<code>+runscript</code> | 2. 带着<code>+runscript</code>选项运行 SteamCMD,指向你之前创建的文件。例如: | ||
steamcmd +runscript csgo_ds.txt | steamcmd +runscript csgo_ds.txt | ||
Line 197: | Line 261: | ||
== 跨平台安装 == | == 跨平台安装 == | ||
它可以选择下载其他平台里 SteamCMD 所应该下载的文件,即使它不是当前正在运行的平台。 这是使用<code>@sSteamCmdForcePlatformType</code>变量来完成的(是的,在变量名称的开头有两个“s”。)例如:在 Linux 下载 Windows 的反恐精英:全球攻势专用服务器,你可以运行下面的命令: | |||
./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit | ./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit | ||
Line 215: | Line 279: | ||
这个变量支持<code>windows</code>,<code>macos</code>和<code>linux</code>。 | 这个变量支持<code>windows</code>,<code>macos</code>和<code>linux</code>。 | ||
== | == Windows 软件/脚本 == | ||
=== condenser === | === condenser === | ||
[https://github.com/ShamelessCookie/condenser condenser] | [https://github.com/ShamelessCookie/condenser condenser] 是一个用于下载,配置和启动 Steam 专用服务器应用的引导程序。 | ||
=== SteamCMD AutoUpdater === | === SteamCMD AutoUpdater === | ||
安装和自动更新任何游戏服务端 | 安装和自动更新任何游戏服务端 | ||
Line 227: | Line 291: | ||
=== SteamCMD GUI === | === SteamCMD GUI === | ||
这个工具可以使用户在 Windows 上不通过命令行或批处理文件来使用 SteamCMD。 | |||
GitHub 仓库: | |||
https://github.com/DioJoestar/SteamCMD-GUI | https://github.com/DioJoestar/SteamCMD-GUI | ||
Line 235: | Line 299: | ||
在这里查看并下载:http://pastebin.com/BRUbsGQh | 在这里查看并下载:http://pastebin.com/BRUbsGQh | ||
== | == Linux 脚本 == | ||
===Linux Game Server Managers=== | ===Linux Game Server Managers=== | ||
[[ | [[File:Lgsm-logo.png|right|thumb|370px|Linux Game Server Manager]] | ||
Linux Game Server | Linux Game Server Managers 是一个快捷的命令行工具,通过 SteamCMD 来轻松地部署和管理各种游戏专用服务器。 | ||
==== 特点 ==== | ==== 特点 ==== | ||
Line 256: | Line 320: | ||
网站: https://gameservermanagers.com | 网站: https://gameservermanagers.com | ||
GitHub 仓库: https://github.com/dgibbs64/linuxgsm | |||
===SteamCMD Guardian 1.2=== | ===SteamCMD Guardian 1.2=== | ||
下面的脚本已在 Debian Wheezy 上测试。 | |||
在这里查看并下载: | 在这里查看并下载: | ||
http://pastebin.com/hcpMpmaZ | http://pastebin.com/hcpMpmaZ | ||
Line 267: | Line 331: | ||
'''安装教程''' | '''安装教程''' | ||
为了使这个脚本的工作,我们需要一个工作位置。你最好创建个用户(例如 steam)以及它自己的根目录(/home/steam)并且通过 SSH,tty 且使用 su 来登录它。 | |||
# 创建文件 | # 创建文件 | ||
Line 279: | Line 343: | ||
#: <code>./updateserver.sh</code> | #: <code>./updateserver.sh</code> | ||
这个文件将自动安装,更新 SteamCMD,以及安装所有选定的游戏(最多4个)。再次运行该文件将更新游戏。 | |||
== 已知的问题 == | == 已知的问题 == | ||
Line 291: | Line 355: | ||
# 进入属性页面 | # 进入属性页面 | ||
# 进入字体标签页 | # 进入字体标签页 | ||
# 在字体一栏选择 | # 在字体一栏选择 Consolas 字体或新宋体字体等,只要选择的字体无乱码问题即可,可凭个人偏好选择字体 | ||
# 点击确定保存设定 | # 点击确定保存设定 | ||
=== ERROR! Failed to install app 'xxxxxx' (No subscription) === | === ERROR! Failed to install app 'xxxxxx' (No subscription) === | ||
如果你得到 'No subscription' 的错误,请你尝试在下载之前先登录帐户或者需要你已购买该游戏/ | 如果你得到 'No subscription' 的错误,请你尝试在下载之前先登录帐户或者需要你已购买该游戏/服务端。因此你需要使用 Steam 用户名和密码来登录 – 如果这无法帮到你,你可能需要先在 Steam 购买游戏的副本。查看[[Dedicated Servers List|专用服务器列表]]. | ||
{{Note| | {{Note|为了安全起见,建议你创建一个只用于专用服务器的新的 Steam 帐户。}} | ||
例如 | 例如 | ||
Line 305: | Line 369: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === 在64位Linux 上需使用32位的库 === | ||
由于 SteamCMD 是一个32位应用,所以需要32位的库。 | |||
可能会出现以下错误: | 可能会出现以下错误: | ||
Line 313: | Line 377: | ||
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory | steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory | ||
解决方法取决于你的 Linux 发行版本: | |||
==== | ==== 基于 Debian 的发行版(Ubuntu,Mint 等。) ==== | ||
sudo apt-get install lib32stdc++6 | sudo apt-get install lib32stdc++6 | ||
{{Note| | {{Note|安装 SteamCMD 并不需要<code>ia32-libs</code>; <code>lib32gcc1</code> 就足够了。}} | ||
在 '''Debian 7 "Wheezy"''' 你可能会遇到这样的错误: | 在 '''Debian 7 "Wheezy"''' 你可能会遇到这样的错误: | ||
Line 333: | Line 397: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 基于Red | ==== 基于Red Hat 的发行版(RHEL,Fedora,CentOS 等。) ==== | ||
yum install glibc.i686 libstdc++.i686 | yum install glibc.i686 libstdc++.i686 | ||
==== Arch | ==== Arch Linux ==== | ||
首先不要忘记开启 [https://wiki.archlinux.org/index.php/Multilib_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) | 首先不要忘记开启 [https://wiki.archlinux.org/index.php/Multilib_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) multilib 仓库]。 | ||
pacman -S lib32-gcc-libs | pacman -S lib32-gcc-libs | ||
Line 344: | Line 408: | ||
=== Login Failure: No Connection === | === Login Failure: No Connection === | ||
在Linux 服务器上,你可能会遇到一个“Login Failure: No Connection”的错误。这或许是因为缺少 iptables 规则。你需要要执行下面几行内容: | |||
<syntaxhighlight> | <syntaxhighlight> | ||
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT | iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT | ||
Line 351: | Line 415: | ||
在这里可以找到需要的端口列表:https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=simplified%20chinese | 在这里可以找到需要的端口列表:https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=simplified%20chinese | ||
在Windows 服务器上,你可能会遇到 "SteamUpdater: Error: Download failed: http error 0" 和 "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again." 。这通常通过设置 IE(Internet Explorer)的 Internet 选项中连接标签页中的局域网(LAN)设置中的自动配置框中的自动检测设置来修复。 | |||
# 打开Internet Explorer (IE)。 | # 打开Internet Explorer (IE)。 | ||
# 点击“工具” | # 点击“工具” → “Internet选项” | ||
# 点击“连接”标签页 | # 点击“连接”标签页 | ||
# 在底部,你应该可以看到“局域网(LAN)设置”。= | # 在底部,你应该可以看到“局域网(LAN)设置”。= | ||
# 选中第一个框(“自动检测设置”) | # 选中第一个框(“自动检测设置”) | ||
# 点击''确定''或''应用'' | # 点击''确定''或''应用''。再次尝试运行 SteamCMD;如果仍然无法正常工作。尝试降低你的'该区域的允许级别'到中等或更低。你可以在“Internet 选项”中的“安全”标签页发现它。 | ||
=== | === SteamCMD 启动错误 === | ||
==== Unable to locate a running instance of Steam ==== | ==== Unable to locate a running instance of Steam ==== | ||
在开启 Linux 服务端时,你可能会得到以下错误: | |||
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll. | [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll. | ||
Line 370: | Line 434: | ||
ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so | ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so | ||
==== | ==== Linux 的 ulimit 启动错误==== | ||
当开始运行脚本时一些用户可能会得到<code>ulimit</code> 错误 (没有权限/无法打开文件)。这个错误是因为<code>ulimit</code>的<code>-n</code>参数(文件描述符数目)设置过低造成的。SteamCMD使用标准的命令代替Shell初始脚本来自动修改<code>ulimit</code>,但是一些服务器系统可能在启动后禁止提高<code>ulimit</code>的值(或者通过<code>root</code>来突破上限设置)。 | 当开始运行脚本时一些用户可能会得到<code>ulimit</code> 错误 (没有权限/无法打开文件)。这个错误是因为<code>ulimit</code>的<code>-n</code>参数(文件描述符数目)设置过低造成的。SteamCMD使用标准的命令代替Shell初始脚本来自动修改<code>ulimit</code>,但是一些服务器系统可能在启动后禁止提高<code>ulimit</code>的值(或者通过<code>root</code>来突破上限设置)。 | ||
这可以改变并固定ulimit文件描述符数目: | 这可以改变并固定ulimit文件描述符数目: | ||
Line 382: | Line 446: | ||
<code>root</code>也可以在<code>/etc/security/limits.conf</code>文件修改此限制。 | <code>root</code>也可以在<code>/etc/security/limits.conf</code>文件修改此限制。 | ||
在大多数情况下,你只会得到一个警告消息,但它不会停止运行 SteamCMD 。 | |||
=== 只下载了半条命专用服务器引擎 === | === 只下载了半条命专用服务器引擎 === | ||
Line 390: | Line 454: | ||
在这里有这个问题的解决方法:https://danielgibbs.co.uk/2013/11/hlds-steamcmd-workaround-appid-90/ | 在这里有这个问题的解决方法:https://danielgibbs.co.uk/2013/11/hlds-steamcmd-workaround-appid-90/ | ||
这只是删除了 appmanifest 文件,替换从第三方下载的版本,这也许可行! 虽然首先你将会得到一个错误,抱怨说出了问题,但这只是因为那个被删除的文件。 | |||
旁注,由于某种原因,CS 总是可以安装完成。 | |||
== 也可以看看 == | == 也可以看看 == |
Latest revision as of 20:41, 10 July 2024
Steam 控制台客户端(SteamCMD)是一个命令行版本的 Steam 客户端。它的主要用途是在一个命令行界面的 Steam 客户端上安装及更新各种可用的专用服务端。它适用于使用 SteamPipe 内容分发系统的游戏。所有游戏已经从旧的 半条命专用服务器更新工具迁移到了 SteamCMD。
下载 SteamCMD
Windows
1. 创建一个为 SteamCMD 准备的文件夹。
例如
C:\steamcmd
2. 下载适用于 Windows 系统的 SteamCMD:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
3. 提取 zip 中的文件至文件夹。
Linux
创建一个名为 steam 的用户帐户以安全地运行 SteamCMD,并将其与操作系统的其余部分隔离。以 root 用户身份登录时请勿运行 steamcmd——这样做会带来安全风险。
1. 以 root 用户身份创建 steam 用户:
useradd -m steam
2. 进入其主文件夹:
cd /home/steam
安装来自软件仓库的软件包
1. 建议从您的分发软件仓库安装 SteamCMD 软件包(如果有):
Ubuntu/Debian
sudo apt install steamcmd

sudo add-apt-repository multiverse sudo dpkg --add-architecture i386 sudo apt update sudo apt install lib32gcc1 steamcmd
RedHat/CentOS
yum install steamcmd
Arch Linux
git clone https://aur.archlinux.org/steamcmd.git cd steamcmd makepkg -si
2. 链接 steamcmd 可执行文件:
ln -s /usr/games/steamcmd steamcmd
Docker
如果你的服务器正在运行 Docker,您可以简单地使用:
docker run -it --name=steamcmd cm2network/steamcmd bash
steamcmd.sh location: /home/steam/steamcmd
该映像可用作基于Steam的专用服务器的基础映像。 例如: https://hub.docker.com/r/cm2network/csgo/
您可以在此处找到相关的 Docker Hub 页面: https://hub.docker.com/r/cm2network/steamcmd/
手动安装
1. 在开始之前,您必须先安装运行 SteamCMD 所需的依赖项:
Ubuntu/Debian 64-Bit
sudo apt-get install lib32gcc1
RedHat/CentOS
yum install glibc libstdc++
RedHat/CentOS 64-Bit
yum install glibc.i686 libstdc++.i686
2. 以 root 用户身份升级至 steam 用户:
su - steam
如果您不是以 root 用户身份登录,而是使用sudo
来行使管理权限,请以如下所示来升级至 steam 用户:
sudo -iu steam
3. 为 SteamCMD 创建目录并切换至该目录。
mkdir ~/Steam && cd ~/Steam
4. 下载并解压缩适用于 Linux 的 SteamCMD。
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
中国内地用户可使用以下命令以使用内地节点:
curl -sqL "https://media.st.dl.bscstorage.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
5. 安装tmux 和/或 screen 以简化服务器管理
sudo apt-get install tmux screen -y;
macOS
1.打开终端并创建一个为 SteamCMD 准备的目录。
mkdir ~/steamcmd && cd ~/steamcmd
2. 下载并解压缩适用于 macOS 的 SteamCMD。
curl -sqL ' https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz ' | tar zxvf -
中国内地用户可使用以下命令以使用内地节点:
curl -sqL ' https://media.st.dl.bscstorage.net/client/installer/steamcmd_osx.tar.gz ' | tar zxvf -
运行 SteamCMD
在第一次运行 SteamCMD 时将自动更新并显示一个Steam>
的输入提示。输入help
来获取更多信息。
Windows
打开一个命令行窗口并启动 SteamCMD。
cd C:\steamcmd steamcmd
Linux/macOS
打开一个终端并启动 SteamCMD.
如果您是通过软件仓库中的软件包安装的:
cd ~ steamcmd
如果您是手动安装的:
cd ~/Steam ./steamcmd.sh
登录 SteamCMD
匿名登录
下载大多数游戏服务端,你可以选择匿名登录。
login anonymous
使用 Steam 帐户登录
一些服务端需要你使用一个 Steam 帐户来登录。


login <用户名>
下一步请输入您的密码。
如果 Steam 令牌已经在用户帐户上激活,查看你电子邮箱中的 Steam 令牌验证码并输入它。这仅仅只是第一次登录时需要(以及当你删除了 SteamCMD 用于存储登录信息文件的时候)。
如果你已经成功登录了你的帐户,你应该会看到一条消息。
下载一个应用
1. 打开 SteamCMD 并登录它。
2. 设置你的应用安装目录(注意:在 Linux/macOS 下使用正斜杠/
,在Windows 下使用反斜杠\
)。
force_install_dir <路径>
例如 一个名叫csgo_ds
的在当前目录下的目录:
force_install_dir ./csgo_ds/
在Windows : force_install_dir .\csgo_ds\
3. 安装或更新应用使用app_update
命令(在这里提供Steam 应用 ID)。 要同时校验应用的话,需添加validate
到命令里。要下载测试分支的话,使用-beta <测试名称>
选项 – 例如,半条命专用服务器的测试分支名为beta
以及起源专用服务器的测试分支名为prerelease
。一些测试分支设置了密码;如果要从它那里下载,需同时添加-betapassword <密码>
选项。
app_update <应用ID> [-beta <测试名称>] [-betapassword <密码>] [validate]
半条命专用服务器是一个特例:应用 ID 都是90,必须先选择模组。 这是通过设置配置选项mod
来请求变量的。
app_set_config <应用 ID> <选项名称> <变量选项>
- 例如:安装并校验反恐精英:全球攻势专用服务器:
app_update 740 validate
- 例如:安装并校验军团要塞专用服务器:
app_set_config 90 mod tfc app_update 90 validate
- 例如:安装并校验测试版本的半条命专用服务器(半条命):
app_update 90 -beta beta validate
- 例如:安装并校验测试版本的反恐精英:起源专用服务器:
app_update 232330 -beta prerelease validate
- 例如:安装并校验私人测试版本的物竞天择2专用服务器(测试名称
alpha
,测试密码natsel
): - [测试名称]是私人测试分支的名称
- [测试密码]是私人测试分支的密码
app_update 4940 -beta alpha -betapassword natsel validate
3. 完成之后,输入quit
从而正确地从 Steam 服务器内注销帐户。
quit
验证
validate
验证是一个命令以用来检查服务端的所有文件以确保他们符合 SteamCMD 所应该下载到本地的文件。如果你认为文件可能已丢失或已损坏,那么此命令将会非常有用。

mapcycle.txt
,此文件将会被覆盖至服务端的默认值。不是默认安装文件一部分的任何文件将不受影响。建议你只在初次安装时或如果服务端有问题时才使用此命令。
所支持的服务端
已知可使用 SteamCMD 安装的服务端可在专用服务器列表页面查询。需要注意的是额外命令需在 app_update 之前被执行。
自动执行 SteamCMD
这里有两个方法来自动执行 SteamCMD 。(在Linux/macOS 下使用./steamcmd.sh
来替代steamcmd
。)
命令行

-beta
选项时,它必须以一种特殊的方式被引用,比如+app_update "90 -beta beta"
。
"+app_update 90 -beta beta"
代替。在命令行追加命令需要在其前面添加加号,例如:
steamcmd +login anonymous +force_install_dir ./csgo_ds +app_update 740 +quit
安装半条命的一个特定游戏模组,比如反恐精英:零点行动:
steamcmd +login anonymous +force_install_dir ./czero +app_set_config 90 mod czero +app_update 90 +quit
安装一个需要登录的游戏,就像杀戮空间:
steamcmd +login <用户名> <密码> +force_install_dir .\KFServer\ +app_update 215350 +quit
创建脚本

1. 把你的 SteamCMD 命令放置在文本文件中。(你可以添加注释,只需在其前面添加//
。)例如:
// 更新反恐精英:全球攻势专用服务器
//
@ShutdownOnFailedCommand 1 //如果一次更新多个服务端请设置为0
@NoPromptForPassword 1
login <username> <password>
//一些服务端并不需要登录
//login anonymous
force_install_dir ./csgo_ds
app_update 740 validate
quit
2. 带着+runscript
选项运行 SteamCMD,指向你之前创建的文件。例如:
steamcmd +runscript csgo_ds.txt
跨平台安装
它可以选择下载其他平台里 SteamCMD 所应该下载的文件,即使它不是当前正在运行的平台。 这是使用@sSteamCmdForcePlatformType
变量来完成的(是的,在变量名称的开头有两个“s”。)例如:在 Linux 下载 Windows 的反恐精英:全球攻势专用服务器,你可以运行下面的命令:
./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
或者使用下面的脚本:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit
这个变量支持windows
,macos
和linux
。
Windows 软件/脚本
condenser
condenser 是一个用于下载,配置和启动 Steam 专用服务器应用的引导程序。
SteamCMD AutoUpdater
安装和自动更新任何游戏服务端
GitHub仓库: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver
SteamCMD GUI
这个工具可以使用户在 Windows 上不通过命令行或批处理文件来使用 SteamCMD。
GitHub 仓库: https://github.com/DioJoestar/SteamCMD-GUI
SteamCMD Guardian 1.2
在这里查看并下载:http://pastebin.com/BRUbsGQh
Linux 脚本
Linux Game Server Managers
Linux Game Server Managers 是一个快捷的命令行工具,通过 SteamCMD 来轻松地部署和管理各种游戏专用服务器。
特点
- 安装服务端 (SteamCMD)
- 启动/关闭/重启 服务端
- 更新服务端 (SteamCMD)
- 监控服务端 (包括用电子邮件通知)
- 查看服务端的详细信息
- 备份服务端
- 可以进入服务端控制台
支持的服务端
现在支持40多个不同的游戏服务端并且数量还在上升。详情列表请访问网站。
链接
网站: https://gameservermanagers.com
GitHub 仓库: https://github.com/dgibbs64/linuxgsm
SteamCMD Guardian 1.2
下面的脚本已在 Debian Wheezy 上测试。 在这里查看并下载: http://pastebin.com/hcpMpmaZ
安装教程
为了使这个脚本的工作,我们需要一个工作位置。你最好创建个用户(例如 steam)以及它自己的根目录(/home/steam)并且通过 SSH,tty 且使用 su 来登录它。
- 创建文件
nano updateserver.sh
- 粘贴脚本代码
- 修改脚本代码,在
DL_SV*=
一行的最后添加一个游戏。 - 使用Ctrl+O关闭文件,其次是↵ Enter,最后Ctrl+X。
- 给用户执行文件的权限
chmod u+x ./updateserver.sh
- 运行文件
./updateserver.sh
这个文件将自动安装,更新 SteamCMD,以及安装所有选定的游戏(最多4个)。再次运行该文件将更新游戏。
已知的问题
乱码
如果出现乱码的问题,请尝试更换窗口所调用的字体。
方法
- 右键宽口标题
- 进入属性页面
- 进入字体标签页
- 在字体一栏选择 Consolas 字体或新宋体字体等,只要选择的字体无乱码问题即可,可凭个人偏好选择字体
- 点击确定保存设定
ERROR! Failed to install app 'xxxxxx' (No subscription)
如果你得到 'No subscription' 的错误,请你尝试在下载之前先登录帐户或者需要你已购买该游戏/服务端。因此你需要使用 Steam 用户名和密码来登录 – 如果这无法帮到你,你可能需要先在 Steam 购买游戏的副本。查看专用服务器列表.

例如
steamcmd +login <用户名> <密码>
在64位Linux 上需使用32位的库
由于 SteamCMD 是一个32位应用,所以需要32位的库。
可能会出现以下错误:
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
解决方法取决于你的 Linux 发行版本:
基于 Debian 的发行版(Ubuntu,Mint 等。)
sudo apt-get install lib32stdc++6

ia32-libs
; lib32gcc1
就足够了。在 Debian 7 "Wheezy" 你可能会遇到这样的错误:
The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable E: Unable to correct problems, you have held broken packages.
要修复这个错误,你需要执行下面的操作:
dpkg --add-architecture i386
apt-get update
apt-get install lib32gcc1
基于Red Hat 的发行版(RHEL,Fedora,CentOS 等。)
yum install glibc.i686 libstdc++.i686
Arch Linux
首先不要忘记开启 multilib 仓库。
pacman -S lib32-gcc-libs
Login Failure: No Connection
在Linux 服务器上,你可能会遇到一个“Login Failure: No Connection”的错误。这或许是因为缺少 iptables 规则。你需要要执行下面几行内容:
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT
在这里可以找到需要的端口列表:https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=simplified%20chinese
在Windows 服务器上,你可能会遇到 "SteamUpdater: Error: Download failed: http error 0" 和 "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again." 。这通常通过设置 IE(Internet Explorer)的 Internet 选项中连接标签页中的局域网(LAN)设置中的自动配置框中的自动检测设置来修复。
- 打开Internet Explorer (IE)。
- 点击“工具” → “Internet选项”
- 点击“连接”标签页
- 在底部,你应该可以看到“局域网(LAN)设置”。=
- 选中第一个框(“自动检测设置”)
- 点击确定或应用。再次尝试运行 SteamCMD;如果仍然无法正常工作。尝试降低你的'该区域的允许级别'到中等或更低。你可以在“Internet 选项”中的“安全”标签页发现它。
SteamCMD 启动错误
Unable to locate a running instance of Steam
在开启 Linux 服务端时,你可能会得到以下错误:
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
通过链接steamclient.so
到~/.steam/sdk32/steamclient.so
目录来解决问题:
ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
Linux 的 ulimit 启动错误
当开始运行脚本时一些用户可能会得到ulimit
错误 (没有权限/无法打开文件)。这个错误是因为ulimit
的-n
参数(文件描述符数目)设置过低造成的。SteamCMD使用标准的命令代替Shell初始脚本来自动修改ulimit
,但是一些服务器系统可能在启动后禁止提高ulimit
的值(或者通过root
来突破上限设置)。
这可以改变并固定ulimit文件描述符数目:
ulimit -n 2048
如果出现错误(no permission),你需要登录root来改变这个参数。想要检查当前设置,输入ulimit -a;系统将显示多行内容,你需要找到:
open files (-n) 1024
在这种情况下,"1024" 是当前值。
root
也可以在/etc/security/limits.conf
文件修改此限制。
在大多数情况下,你只会得到一个警告消息,但它不会停止运行 SteamCMD 。
只下载了半条命专用服务器引擎
当试图下载一个半条命模组就像是军团要塞时,最初它只是下载半条命专用服务器的引擎文件,而不是模组。这种情况同时发生在普通版和测试版。你可能需要尝试多次直到已下载完所有所需的文件,只要完成了一次,下一次应该就会正常更新。
在这里有这个问题的解决方法:https://danielgibbs.co.uk/2013/11/hlds-steamcmd-workaround-appid-90/
这只是删除了 appmanifest 文件,替换从第三方下载的版本,这也许可行! 虽然首先你将会得到一个错误,抱怨说出了问题,但这只是因为那个被删除的文件。
旁注,由于某种原因,CS 总是可以安装完成。