51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

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

博主博客 {#博主博客}

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

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

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

  
  
   
   
* 
                          01
                        

   
   
* 
                          02
                        

   
   
* 
                          03
                        

   
   
* 
                          04
                        

   
   
* 
                          05
                        

   
   
* 
                          06
                        

   
   
* 
                          07
                        

   
   
* 
                          08
                        

   
   
* 
                          09
                        

   
   
* 
                          10
                        

   
   
* 
                          11
                        

   
   
* 
                          12
                        

   
   
* 
                          13
                        

   
   
* 
                          14
                        

   
   
* 
                          15
                        

   
   
* 
                          16
                        

   
   
* 
                          17
                        

   
   
* 
                          18
                        

  
  

                    
                      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


                    </code>
                  </pre>



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

 
步骤 2:创建所需的目录 {#步骤-2:创建所需的目录}
----------------------------


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

 `                    ``
                      mkdir steamcmd_login_volume
`

                    </code>
                  </pre>


`
 
     `


  
      
* ` steamcmd_login_volume ` 用于存放 ` Steam ` 文件。

 
     
`
 `

我的目录绝对路径为:
`
 
     `


  
      
* ` /volume1/docker/steamcmd/steamcmd_login_volume `

 
     
`
 `

步骤 3:启动 SteamCMD 容器 {#步骤-3:启动-steamcmd-容器}
------------------------------------------

`
 `

在 ` docker-compose.yml ` 文件所在目录运行:
`
 `{#codeBlock0-1741910039793}

````````prism language-yaml
                    `
                      docker-compose up -d
`

                    </code>
                  </pre>


`
 `

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

步骤 4:拷贝文件夹到宿主 {#步骤-4:拷贝文件夹到宿主}
------------------------------

`
 `

拷贝容器中的文件夹到宿主:
`
 ``                    ``
                      docker cp steamcmd:/home/steam/Steam /volume1/docker/steamcmd/steamcmd_login_volume
`

                    </code>
                  </pre>


`
 `

把文件取出,并且删除临时文件夹:
`
 `{#codeBlock0-1741910039793}

```````prism language-yaml
                    `
                      mv /volume1/docker/steamcmd/steamcmd_login_volume/Steam/* /volume1/docker/steamcmd/steamcmd_login_volume
rm -rf /volume1/docker/steamcmd/steamcmd_login_volume/Steam/
`

                    </code>
                  </pre>


`
 `

重新编辑 ` 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
`
`

                    </code>
                  </pre>


`
 `

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

执行下面的命令, 重启容器:
`
 `{#codeBlock0-1741910039793}

``````prism language-yaml
                    `
                      docker-compose down
docker-compose up -d
`

                    </code>
                  </pre>


`
 `

步骤 5:进入 SteamCMD 容器 {#步骤-5:进入-steamcmd-容器}
------------------------------------------

`
 `

执行以下命令进入容器:
`
 `

`````prism language-sh
                    
                      docker exec -it steamcmd bash

                    </code>
                  </pre>



 
然后在容器内运行 ` steamcmd ` :

 
````prism language-sh
                    
                      ./steamcmd.sh

                    </code>
                  </pre>



 
` steamcmd.sh ` 在 ` /home/steam/steamcmd ` 中。

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


 
在 ` steamcmd ` 交互模式中,运行:

 
```prism language-sh
                    
                      login anonymous
app_update 1169370 validate
quit

                    </code>
                  </pre>



 
使用匿名登陆。

 
                     

  
                      
* ` app_update 1169040 validate ` 表示下载 奈斯启示录 服务器(奈斯启示录 的 App ID 是 1169370)。

  
                      
* 下载完成后,服务器文件会存放在 ` /home/steam/Steam/steamapps/common/Necesse Dedicated Server ` 目录。

 
                     

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

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

                        </code>
                      </pre>



     
    步骤 7:启动游戏服务器 {#步骤-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.


                            </code>
                          </pre>



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






```


````


`````


``````


```````


````````

赞(3)
未经允许不得转载:工具盒子 » Docker Compose 部署 steamcmd 安装奈斯服务端