Docker Compose 部署 steamcmd 安装奈斯服务端

由于打算在云端服务器部署奈斯启示录服务端跟朋友们一起玩, 所以在云端搭建服务器, 顺便写下本文章记录搭建的过程。

博主博客

要使用 Docker Compose 部署 steamcmd(Steam 命令行工具),可以按照以下步骤进行:

步骤 1:创建 docker-compose.yml 文件

在目标目录下创建 docker-compose.yml 文件,内容如下:

version: '3.8'

services:
  steamcmd:
    image: cm2network/steamcmd:steam
    container_name: steamcmd
    restart: unless-stopped
    # volumes:
    #   - ./steamcmd_login_volume:/home/steam/Steam:z
    environment:
      - PUID=1000
      - PGID=1000
      - USER=steam
      - HOMEDIR=/home/steam
      - STEAMCMDDIR=/home/steam/steamcmd
      - TZ=Asia/Shanghai
    stdin_open: true
    tty: true

注意:我的目标目录为 /volume1/docker/steamcmd, 由于 volumes 取消注释会覆盖掉镜像中的文件, 所以这里需要注释。

步骤 2:创建所需的目录

docker-compose.yml 文件所在目录,执行以下命令创建目录:

mkdir steamcmd_login_volume
  • steamcmd_login_volume 用于存放 Steam 文件。

我的目录绝对路径为:

  • /volume1/docker/steamcmd/steamcmd_login_volume

步骤 3:启动 SteamCMD 容器

docker-compose.yml 文件所在目录运行:

docker-compose up -d

这将启动 steamcmd 容器,并在后台运行。

步骤 4:拷贝文件夹到宿主

拷贝容器中的文件夹到宿主:

docker cp steamcmd:/home/steam/Steam /volume1/docker/steamcmd/steamcmd_login_volume

把文件取出,并且删除临时文件夹:

mv /volume1/docker/steamcmd/steamcmd_login_volume/Steam/* /volume1/docker/steamcmd/steamcmd_login_volume
rm -rf /volume1/docker/steamcmd/steamcmd_login_volume/Steam/

重新编辑 docker-compose.yml

version: '3.8'

services:
  steamcmd:
    image: cm2network/steamcmd:steam
    container_name: steamcmd
    restart: unless-stopped
    volumes:
      - ./steamcmd_login_volume:/home/steam/Steam:z
    environment:
      - PUID=1000
      - PGID=1000
      - USER=steam
      - HOMEDIR=/home/steam
      - STEAMCMDDIR=/home/steam/steamcmd
      - TZ=Asia/Shanghai
    stdin_open: true
    tty: true

在这里把文件夹内容拷贝出来以后, 可以取消 volumes 的注释。

执行下面的命令, 重启容器:

docker-compose down
docker-compose up -d

步骤 5:进入 SteamCMD 容器

执行以下命令进入容器:

docker exec -it steamcmd bash

然后在容器内运行 steamcmd

./steamcmd.sh

steamcmd.sh/home/steam/steamcmd 中。

步骤 6:安装游戏服务器(例如 奈斯启示录)

steamcmd 交互模式中,运行:

login anonymous
app_update 1169370 validate
quit

使用匿名登陆。

  • app_update 1169040 validate 表示下载 奈斯启示录 服务器(奈斯启示录 的 App ID 是 1169370)。
  • 下载完成后,服务器文件会存放在 /home/steam/Steam/steamapps/common/Necesse Dedicated Server 目录。

如果下载失败, 请检查宿主中的文件夹权限,比如使用下面命令:

chmod -R 777 /volume1/docker/steamcmd/steamcmd_login_volume

步骤 7:启动游戏服务器

启动游戏即可以在宿主中启动, 也可以在容器中启动, 因为奈斯启示录是用 Java 写的, 虚拟机包含在下载的文件中。

进入游戏目录 /volume1/docker/steamcmd/steamcmd_login_volume/steamapps/common/Necesse Dedicated Server

启动 StartServer-nogui.sh 脚本, 根据提示进行操作。

nukix@nukixNAS:/volume1/docker/steamcmd/steamcmd_login_volume/steamapps/common/Necesse Dedicated Server$ sh StartServer-nogui.sh 
First time launched
Cache version was not correct, deleted version cache files.
[2025-03-09 15:10:40] (DEBUG) Started logging to: /var/services/homes/nukix/.config/Necesse/latest-server-log.txt
[2025-03-09 15:10:40] Launched game with arguments: -nogui
[2025-03-09 15:10:40] (DEBUG) Initializing DesktopPlatform
[2025-03-09 15:10:40] Could not load settings file, does not exist. Creating new default settings.cfg
[2025-03-09 15:10:41] Could not load server settings file, does not exist. Creating new default server.cfg
[2025-03-09 15:10:41] (DEBUG) Started logging to: /var/services/homes/nukix/.config/Necesse/logs/2025-03-09 15h10m41s.txt
[2025-03-09 15:10:41] Loading dedicated server on version 0.31.1.
[2025-03-09 15:10:43] Type a name for the world to create

[2025-03-09 15:10:46] Creating new save: /var/services/homes/nukix/.config/Necesse/saves/worlds/.zip
[2025-03-09 15:10:46] Custom server options? (y/n)
y
[2025-03-09 15:11:35] > y
[2025-03-09 15:11:35] Please specify host port
14159
[2025-03-09 15:13:11] > 14159
[2025-03-09 15:13:11] Please specify player slots (1 - 250)
16
[2025-03-09 15:13:20] > 16
[2025-03-09 15:13:20] Please specify server password (blank for none)
123456
[2025-03-09 15:13:30] > 123456
[2025-03-09 15:13:30] Please specify custom spawn island (blank for random, format: <x>,<y>)

[2025-03-09 15:13:42] > Random spawn island selected
[2025-03-09 15:13:42] Please specify spawn seed (blank for random)

[2025-03-09 15:13:46] > Random spawn seed selected
[2025-03-09 15:13:46] Spawn guide house? (y/n)
y
[2025-03-09 15:14:09] > y
[2025-03-09 15:14:09] Creating save with name: .zip
[2025-03-09 15:14:09] Could not find world file, creating new one: .zip
[2025-03-09 15:14:09] (DEBUG) Took 27 iterations to find a spawn island
[2025-03-09 15:14:09] Could not find Level: /levels/1654x-7996d0.dat file for .zip
[2025-03-09 15:14:12] Started lan socket at port 55169
[2025-03-09 15:14:12] Started server using port 14159 with 16 slots on world ".zip" with password "123456", game version 0.31.1.
[2025-03-09 15:14:12] Found 0 saved players.
[2025-03-09 15:14:12] Local address: 127.0.0.1:14159
[2025-03-09 15:14:12] Type help for list of commands.

注意上面的 log, 比如我的配置文件目录在 /var/services/homes/nukix/.config/Necesse, 我需要修改默认的配置可以通过 /var/services/homes/nukix/.config/Necesse/cfg/server.cfg 进行配置。

### 使用 Docker Compose 部署 FRP 内网穿透服务端 #### 创建项目结构 为了使用 `Docker Compose` 来部署FRP内网穿透的服务端 (frps),首先需要建立合适的工作目录并准备必要的配置文件。通常情况下,建议创建一个新的工作空间用于保存所有的配置和数据。 ```bash mkdir -p ~/projects/frp-server/{conf,logs} cd ~/projects/frp-server/ ``` #### 编写 docker-compose.yml 文件 接下来编写 `docker-compose.yml` 文件来定义服务: ```yaml version: '3' services: frps: image: fatedier/frp:latest container_name: frps ports: - "7000:7000/tcp" - "7000:7000/udp" - "8080:8080/tcp" # HTTP Dashboard Port environment: - TZ=Asia/Shanghai volumes: - ./conf/frps.ini:/etc/frp/frps.ini - ./logs:/var/log/frp restart: unless-stopped ``` 此配置指定了要使用的镜像版本以及映射到主机系统的端口和服务名称等信息[^4]。 #### 准备 frps 的 INI 配置文件 在上述命令中提到的路径下放置一个名为 `frps.ini` 的文件作为FRPS的主要设置文档: ```ini [common] bind_port = 7000 dashboard_addr = 0.0.0.0 dashboard_port = 8080 dashboard_user = admin dashboard_pwd = password token = your_token_here log_file = /var/log/frp/frps.log log_level = info max_pool_count = 5 subdomain_host = example.com allow_ports = 2000-3000,3001,3003,4000-50000 tcp_mux = true ``` 这段配置设置了服务器监听端口、仪表板访问地址和其他一些重要的安全性和性能选项[^2]。 #### 启动服务 完成以上步骤之后就可以通过下面这条简单的指令启动整个环境了: ```bash docker-compose up -d ``` 这将会以后台模式运行所有指定的服务实例,并保持它们持续运作直到手动停止为止。 #### 查看状态与日志 可以利用如下命令查看当前正在运行中的容器及其状态: ```bash docker ps | grep frps ``` 如果想要获取更多关于特定进程的信息,则可以通过查阅相应的日志记录来进行调试分析: ```bash tail -f logs/frps.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nukix

如果觉得对你有帮助,欢迎打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值