6.7 KiB
6.7 KiB
DayZ服务器 Docker 部署项目
这是一个用于快速部署DayZ服务器的Docker化解决方案。通过Docker容器化技术,您可以轻松地在任何支持Docker的系统上运行DayZ服务器,无需复杂的本地环境配置。
🎯 项目特性
- 一键部署: 使用Docker Compose实现一键部署DayZ服务器
- 自动安装: 自动下载并安装SteamCMD和DayZ服务器
- Mod支持: 支持客户端和服务端Mod的自动加载
- 崩溃恢复: 内置崩溃检测和自动重启机制
- 跨平台: 支持Linux、Windows、macOS等操作系统
- 环境隔离: 使用Docker容器确保环境隔离和一致性
- 配置灵活: 支持通过环境变量自定义服务器配置
📋 系统要求
- Docker 20.10+
- Docker Compose 2.0+
- 至少4GB可用内存
- 至少10GB可用磁盘空间
- 稳定的网络连接(用于下载SteamCMD和DayZ服务器)
🚀 快速开始
1. 克隆项目
git clone <repository-url> ./Docker_DayzServer
cd Docker_DayzServer
2. 设置环境变量
创建 .env 文件并配置您的Steam账户信息:
# 创建环境变量文件
cat > .env << EOF
STEAM_USERNAME=your_steam_username
STEAM_PASSWORD=your_steam_password
DAYZ_MISSIONS=dayzOffline.chernarusplus
DAYZ_SERVER_PORT=2302
DAYZ_CPU_COUNT=4
EOF
重要: 请确保使用有效的Steam账户,该账户 不需要 拥有DayZ游戏。
3. 运行安装脚本
# 给安装脚本执行权限
chmod +x install.sh
# 运行安装脚本(需要root权限)
sudo ./install.sh
安装脚本将自动:
- 检测您的操作系统
- 安装Docker和Docker Compose
- 构建Docker镜像
- 启动DayZ服务器
4. 手动部署(可选)
如果您想手动部署,可以按以下步骤操作:
# 构建Docker镜像, 如果仓库有更新, 都需要重新 build 一次, 更新不需要 --no-cache
docker-compose build --no-cache
# 运行steamcmd容器进行初始安装
docker-compose run --rm steamcmd
# 启动所有服务
docker-compose up -d
⚙️ 配置说明
环境变量
| 变量名 | 默认值 | 说明 |
|---|---|---|
STEAM_USERNAME |
- | Steam用户名(必需) |
STEAM_PASSWORD |
- | Steam密码(必需) |
DAYZ_MISSIONS |
dayzOffline.chernarusplus |
服务器地图 |
DAYZ_SERVER_PORT |
2302 |
服务器端口 |
DAYZ_CPU_COUNT |
4 |
使用的CPU核心数 |
MOD_IDS |
空 |
需要更新的modid,例如:"123456789,987654321" |
端口映射
| 容器端口 | 主机端口 | 说明 |
|---|---|---|
| 2302/udp | 2302/udp | DayZ游戏端口 |
| 2305/udp | 2305/udp | DayZ查询端口 |
| 2314/udp | 2314/udp | BattlEye RCon端口 |
目录结构
Docker_DayzServer/
├── docker-compose.yml # Docker Compose配置文件
├── DockerFile/ # Docker构建文件
│ ├── Dockerfile # Docker镜像定义
│ ├── install_dayz.sh # DayZ安装脚本
│ └── start.sh # 启动脚本
├── install.sh # 一键安装脚本
└── dayz/ # 数据目录(自动创建)
├── .steamcmd/ # SteamCMD数据
├── .dayz_server/ # DayZ服务器文件
├── client_mod/ # 客户端Mod
├── server_mod/ # 服务端Mod
├── battleye/ # BattlEye配置
├── profiles/ # 服务器配置文件
└── mpmissions/ # 地图文件
🎮 使用说明
启动服务器
# 启动所有服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f steamcmd
停止服务器
# 停止所有服务
docker-compose down
# 停止并删除数据卷(谨慎使用)
docker-compose down -v
重启服务器
# 重启服务
docker-compose restart steamcmd
更新服务器
# 重新构建镜像并启动
docker-compose build --no-cache
docker-compose up -d
🔧 Mod管理
添加客户端Mod
- 将Mod文件放入
dayz/client_mod/目录 - Mod文件夹应以
@开头 - 重启服务器以加载新Mod
添加服务端Mod
- 将Mod文件放入
dayz/server_mod/目录 - Mod文件夹应以
@开头 - 重启服务器以加载新Mod
更新客户端Mod
- 需要先停止容器运行
docker compose down - 然后运行更新命令
docker compose run --rm steamcmd updatemod - 更新完毕后启动docker容器即可.
Mod配置示例
dayz/
├── client_mod/
│ ├── @CF
│ └── @DayZExpansion
└── server_mod/
└── @DayZExpansionServer
📊 监控和日志
查看实时日志
# 查看容器日志
docker-compose logs -f steamcmd
# 查看特定时间段的日志
docker-compose logs --since="2024-01-01T00:00:00" steamcmd
服务器状态检查
# 检查容器状态
docker-compose ps
# 检查资源使用情况
docker stats steamcmd
🔒 安全配置
BattlEye配置
BattlEye配置文件位于 dayz/battleye/beserver_x64.cfg,包含:
- RCon端口:2314
- 自动生成的RCon密码
- 远程管理设置
防火墙配置
确保以下端口在防火墙中开放:
- UDP 2302 (游戏端口)
- UDP 2305 (查询端口)
- UDP 2314 (RCon端口)
🛠️ 故障排除
常见问题
-
Steam登录失败
- 检查Steam用户名和密码是否正确
- 检查网络连接
-
服务器无法启动
- 检查端口是否被占用
- 查看容器日志:
docker-compose logs steamcmd - 确保有足够的磁盘空间
-
Mod加载失败
- 检查Mod文件夹名称是否正确(以@开头)
- 确保Mod文件完整
- 查看启动日志中的Mod加载信息
调试命令
# 进入容器进行调试
docker-compose exec steamcmd bash
# 查看容器资源使用情况
docker stats steamcmd
# 检查网络连接
docker-compose exec steamcmd netstat -tulpn
📝 更新日志
v1.0.0
- 初始版本发布
- 支持基本的DayZ服务器部署
- 集成SteamCMD自动安装
- 支持Mod加载
- 内置崩溃恢复机制
🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目!
📄 许可证
本项目采用MIT许可证。详见LICENSE文件。
⚠️ 免责声明
- 本项目仅供学习和研究使用
- 请确保遵守DayZ和Steam的服务条款
- 使用本项目的风险由用户自行承担
- 建议在测试环境中先进行验证
📞 支持
如果您在使用过程中遇到问题,请:
- 查看本文档的故障排除部分
- 检查项目的Issue页面
- 提交新的Issue并提供详细的错误信息
祝您游戏愉快! 🎮