2 Commits 9f993b7793 ... 836277c6ba

Autore SHA1 Messaggio Data
  Dcr 836277c6ba update 1 mese fa
  Dcr c5baea9abd 🔧 chore(.env): 移除Steam账户信息并添加MOD_IDS配置 1 mese fa
5 ha cambiato i file con 65 aggiunte e 5 eliminazioni
  1. 1 4
      .env
  2. 3 1
      DockerFile/Dockerfile
  3. 54 0
      DockerFile/updatemod.sh
  4. 6 0
      README.md
  5. 1 0
      docker-compose.yml

+ 1 - 4
.env

@@ -1,7 +1,4 @@
-# Steam账户信息
-# 请将以下值替换为您的实际Steam用户名和密码
 STEAM_USERNAME=your_steam_username
 STEAM_PASSWORD=your_steam_password
 
-# 注意:为了安全起见,建议使用Steam Guard令牌而不是账户密码
-# 如果启用了Steam Guard,密码应该是您的Steam Guard令牌 
+MOD_IDS=123456789,987654321

+ 3 - 1
DockerFile/Dockerfile

@@ -24,7 +24,8 @@ RUN mkdir -p ${STEAMCMD_DIR}
 
 COPY install_dayz.sh /opt/install_dayz.sh
 COPY start.sh /opt/start.sh
-RUN chmod +x /opt/install_dayz.sh /opt/start.sh
+COPY updatemod.sh /opt/updatemod.sh
+RUN chmod +x /opt/install_dayz.sh /opt/start.sh /opt/updatemod.sh
 
 RUN useradd -m -d /home/steam steam
 
@@ -34,6 +35,7 @@ RUN chown -R steam:steam ${STEAMCMD_DIR} && \
     chown -R steam:steam /home/steam && \
     chown steam:steam /opt/install_dayz.sh && \
     chown steam:steam /opt/start.sh && \
+    chown steam:steam /opt/updatemod.sh && \
     chown -R steam:steam /opt/games
 
 WORKDIR ${STEAMCMD_DIR}

+ 54 - 0
DockerFile/updatemod.sh

@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# DayZ Mod更新脚本
+# 使用方法: docker compose run --rm steamcmd updatemod
+
+set -e
+
+echo "=========================================="
+echo "开始更新DayZ Mod..."
+echo "时间: $(date)"
+echo "=========================================="
+
+# 检查环境变量
+if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
+    echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量"
+    exit 1
+fi
+
+# 切换到SteamCMD目录
+cd /opt/steamcmd
+
+# 检查SteamCMD是否已安装
+if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
+    echo "SteamCMD未安装,开始下载和安装..."
+    wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
+    tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
+    rm /opt/steamcmd/steamcmd_linux.tar.gz
+    chmod +x /opt/steamcmd/steamcmd.sh
+    echo "SteamCMD安装完成!"
+fi
+
+# 更新Mod(如果有配置的话)
+if [ -n "$MOD_IDS" ]; then
+    echo "开始更新Mod..."
+    IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
+    
+    for mod_id in "${MOD_ARRAY[@]}"; do
+        echo "更新Mod ID: $mod_id"
+        ./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +workshop_download_item 221100 $mod_id +quit
+        
+        if [ $? -eq 0 ]; then
+            echo "Mod $mod_id 更新完成"
+        else
+            echo "Mod $mod_id 更新失败"
+        fi
+    done
+else
+    echo "未配置Mod ID,跳过Mod更新"
+fi
+
+echo "=========================================="
+echo "Mod更新完成!"
+echo "时间: $(date)"
+echo "==========================================" 

+ 6 - 0
README.md

@@ -88,6 +88,7 @@ docker-compose up -d
 | `DAYZ_MISSIONS` | `dayzOffline.chernarusplus` | 服务器地图 |
 | `DAYZ_SERVER_PORT` | `2302` | 服务器端口 |
 | `DAYZ_CPU_COUNT` | `4` | 使用的CPU核心数 |
+| `MOD_IDS` | `空` | 需要更新的modid,例如:"123456789,987654321" |
 
 ### 端口映射
 
@@ -171,6 +172,11 @@ docker-compose up -d
 2. Mod文件夹应以 `@` 开头
 3. 重启服务器以加载新Mod
 
+### 更新客户端Mod
+1. 需要先停止容器运行 `docker compose down`
+2. 然后运行更新命令 `docker compose run --rm steamcmd updatemod`
+3. 更新完毕后启动docker容器即可.
+
 ### Mod配置示例
 
 ```

+ 1 - 0
docker-compose.yml

@@ -14,6 +14,7 @@ services:
     environment:
       - STEAM_USERNAME=${STEAM_USERNAME:-}
       - STEAM_PASSWORD=${STEAM_PASSWORD:-}
+      - MOD_IDS=${MOD_IDS:-}
       - DAYZ_MISSIONS=dayzOffline.chernarusplus
       - DAYZ_SERVER_PORT=2302
       - DAYZ_CPU_COUNT=4