diff --git a/minecraft/.env b/minecraft/.env new file mode 100644 index 0000000..89845b3 --- /dev/null +++ b/minecraft/.env @@ -0,0 +1,12 @@ +# .env 文件:用于存储敏感或可变配置,避免硬编码到 YAML 中。 +# 用户需自行修改以下值,并确保文件权限安全(例如 chmod 600 .env)。 + +# 用户权限(避免容器文件权限问题,替换为您的主机用户 UID/GID,使用命令 'id' 查询) +UID=1000 +GID=1000 + +# RCON 密码(远程控制密码,必须复杂且安全;原配置中已移除具体值) +RCON_PASSWORD=your_rcon_password_here + +# 时区(根据服务器位置调整,例如 Asia/Shanghai 为中国标准时间) +TZ=Asia/Shanghai diff --git a/minecraft/README.md b/minecraft/README.md new file mode 100644 index 0000000..3343afb --- /dev/null +++ b/minecraft/README.md @@ -0,0 +1,15 @@ +# Automa Minecraft + +``` +mc-fabric-docker/ +├── docker-compose.yml +├── .env # 必改:UID、GID、RCON_PASSWORD、TZ +├── mods/ # 放你的所有 mods jar +├── configs/ +│ ├── server.properties # 服务器配置 +│ ├── whitelist.json # 白名单(示例) +│ └── ops.json # OP(示例) +├── data/ # 自动生成:世界、备份、日志 +└── extras/ + └── mods.txt # 可选:Modrinth 自动下载模组 +``` diff --git a/minecraft/compose.yaml b/minecraft/compose.yaml deleted file mode 100644 index e0734a7..0000000 --- a/minecraft/compose.yaml +++ /dev/null @@ -1,13 +0,0 @@ -services: - mc: - image: itzg/minecraft-server:latest - pull_policy: daily - tty: true - stdin_open: true - ports: - - "25565:25565" - environment: - EULA: "TRUE" - volumes: - # attach the relative directory 'data' to the container's /data path - - ./data:/data diff --git a/minecraft/configs/server.properties b/minecraft/configs/server.properties new file mode 100644 index 0000000..9b1a063 --- /dev/null +++ b/minecraft/configs/server.properties @@ -0,0 +1,70 @@ +# server.properties 文件:Minecraft 服务器核心配置。 +# 此文件通过卷挂载到容器中,优先覆盖环境变量设置。 +# 所有值均为示例,用户可根据需求修改。 +# 注意:移除原 rcon.password 值,使用 .env 中的 RCON_PASSWORD 动态注入。 + +#Minecraft server properties +# 生成时间示例(自动更新,无需修改) +#Tue Nov 04 17:06:20 CST 2025 + +accepts-transfers=false # 是否允许玩家从其他服务器传输(默认 false) +allow-flight=false # 是否允许飞行(false 防止作弊) +allow-nether=true # 是否启用下界(true 为标准生存) +broadcast-console-to-ops=true # 是否向 OP 广播控制台消息 +broadcast-rcon-to-ops=true # 是否向 OP 广播 RCON 消息 +bug-report-link= # 错误报告链接(留空或填自定义) +difficulty=normal # 难度:peaceful/easy/normal/hard(normal 为标准) +enable-command-block=false # 是否启用命令方块(false 防止滥用) +enable-jmx-monitoring=false # 是否启用 JMX 监控(用于高级调试) +enable-query=false # 是否启用查询端口(用于外部工具查询服务器状态) +enable-rcon=true # 是否启用 RCON(true,与 .env 中的密码结合使用) +enable-status=true # 是否启用服务器状态查询 +enforce-secure-profile=true # 是否强制安全配置文件(正版验证相关) +enforce-whitelist=false # 是否强制白名单(false,未启用;如需启用,设为 true 并配置 whitelist.json) +entity-broadcast-range-percentage=100 # 实体广播范围百分比(100 为默认) +force-gamemode=false # 是否强制游戏模式 +function-permission-level=2 # 函数权限级别(2 为标准) +gamemode=survival # 默认游戏模式:survival/creative/adventure/spectator +generate-structures=true # 是否生成结构(如村庄) +generator-settings={} # 生成器设置(JSON,留空为默认) +hardcore=false # 是否硬核模式(死亡后封号) +hide-online-players=false # 是否隐藏在线玩家列表 +initial-disabled-packs= # 初始禁用数据包 +initial-enabled-packs=vanilla,fabric,easyauth,fabric-convention-tags-v2,server_translations_api # 初始启用数据包(基于 Fabric 和模组) +level-name=world # 世界名称(world 为默认文件夹) +level-seed= # 世界种子(留空为随机) +level-type=minecraft\:normal # 世界类型(normal 为标准) +log-ips=true # 是否记录玩家 IP(true 为安全审计) +max-chained-neighbor-updates=1000000 # 最大链式邻居更新(防止滞后) +max-players=20 # 最大玩家数(原为 114514,改为通用示例 20;根据服务器资源调整) +max-tick-time=60000 # 最大 tick 时间(毫秒,超时重启) +max-world-size=29999984 # 最大世界大小 +motd=A Minecraft Server # 服务器欢迎消息(改为通用示例,原为个人化;支持颜色代码如 §6) +network-compression-threshold=256 # 网络压缩阈值 +online-mode=false # 是否正版验证(false 允许盗版客户端连接) +op-permission-level=4 # OP 权限级别(4 为最高) +player-idle-timeout=0 # 玩家空闲超时(0 为无限) +prevent-proxy-connections=false # 是否防止代理连接 +pvp=true # 是否启用 PVP +query.port=25565 # 查询端口(与服务器端口一致) +rate-limit=0 # 速率限制(0 为无) +rcon.password= # RCON 密码(留空,使用 .env 中的值动态注入;原已移除) +rcon.port=25575 # RCON 端口 +region-file-compression=deflate # 区域文件压缩(deflate 为标准) +require-resource-pack=false # 是否要求资源包 +resource-pack= # 资源包 URL +resource-pack-id= # 资源包 ID +resource-pack-prompt= # 资源包提示 +resource-pack-sha1= # 资源包 SHA1 +server-ip= # 服务器 IP(留空为所有接口) +server-port=25565 # 服务器端口 +simulation-distance=10 # 模拟距离(影响性能) +spawn-animals=true # 是否生成动物 +spawn-monsters=true # 是否生成怪物 +spawn-npcs=true # 是否生成 NPC +spawn-protection=16 # 生成保护半径(新手保护) +sync-chunk-writes=true # 是否同步区块写入(防止数据丢失) +text-filtering-config= # 文本过滤配置 +use-native-transport=true # 是否使用本地传输(优化性能) +view-distance=10 # 视图距离(影响性能) +white-list=false # 是否启用白名单(false,未启用;如需启用,设为 true) diff --git a/minecraft/configs/whitelist.json b/minecraft/configs/whitelist.json new file mode 100644 index 0000000..c5a4210 --- /dev/null +++ b/minecraft/configs/whitelist.json @@ -0,0 +1,17 @@ +[ + // whitelist.json 文件:白名单玩家列表(JSON 数组)。 + // 每个对象包含 uuid 和 name。 + // 原文件中的具体玩家信息已移除,改为示例占位符。 + // 用户需自行添加真实 UUID(从 mcuuid.net 等工具获取)和玩家名。 + // 如果不启用白名单,此文件可选。 + // 示例: + { + "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "name": "example_player1" + }, + { + "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "name": "example_player2" + } + // 添加更多玩家时,复制以上格式,最后一个对象后无逗号。 +] diff --git a/minecraft/docker-compose.yml b/minecraft/docker-compose.yml new file mode 100644 index 0000000..e63da9c --- /dev/null +++ b/minecraft/docker-compose.yml @@ -0,0 +1,66 @@ +# docker-compose.yml 文件:Docker Compose 配置,用于启动 Minecraft Fabric 服务器容器。 +# 版本:3.8(兼容大多数 Docker 版本)。 +# 此文件已去敏,所有敏感数据移到 .env 或 configs 中。 +# 运行命令:docker compose up -d(后台启动)。 + +version: "3.8" + +services: + minecraft: # 服务名称(可自定义) + image: itzg/minecraft-server:latest # 使用镜像:itzg/minecraft-server(支持 Fabric 和自动模组管理) + container_name: mc-fabric-1.21.1 # 容器名称(便于 docker ps 查看) + ports: + - "25565:25565/tcp" # Minecraft 主端口(TCP,客户端连接) + - "25565:25565/udp" # 查询端口(UDP,服务器列表查询) + - "25575:25575/tcp" # RCON 端口(TCP,远程控制,与 server.properties 一致) + environment: # 环境变量:用于动态配置服务器参数 + UID: "${UID}" # 从 .env 加载主机用户 UID(避免权限问题) + GID: "${GID}" # 从 .env 加载主机用户 GID + EULA: "TRUE" # 同意 Minecraft EULA(必须为 TRUE,否则启动失败) + TYPE: "FABRIC" # 服务器类型:FABRIC(支持模组加载器) + VERSION: "1.21.1" # Minecraft 版本(固定为 1.21.1) + FABRIC_VERSION: "latest" # Fabric 加载器版本(latest 为自动最新) + MEMORY: "4G" # 最大内存分配(4G 为示例,根据主机 RAM 调整;模组多建议 4G+) + INIT_MEMORY: "2G" # 初始内存分配(2G 为示例) + + # 服务器核心设置(可覆盖 server.properties 中的值) + ONLINE_MODE: "false" # 正版验证(false 允许非正版客户端;生产环境建议 true 以防安全风险) + ENABLE_RCON: "true" # 启用 RCON(true,与 .env 密码结合) + RCON_PASSWORD: "${RCON_PASSWORD}" # RCON 密码(从 .env 加载,用户自行设置) + RCON_PORT: 25575 # RCON 端口(与 server.properties 一致) + DIFFICULTY: "normal" # 难度(normal 为默认) + GAMEMODE: "survival" # 游戏模式(survival 为生存) + MAX_PLAYERS: 20 # 最大玩家数(改为通用示例,原为特定值;根据资源调整) + MOTD: "A Minecraft Server" # 欢迎消息(改为通用示例,支持颜色代码) + VIEW_DISTANCE: 10 # 视图距离(10 为平衡性能) + SIMULATION_DISTANCE: 10 # 模拟距离(10 为平衡) + SPAWN_PROTECTION: 16 # 生成保护(16 为默认) + PVP: "true" # 启用 PVP(true) + WHITE_LIST: "false" # 启用白名单(false;如需启用,设为 true 并配置 whitelist.json) + ENFORCE_WHITELIST: "false" # 强制白名单(false) + + # 其他优化设置 + TZ: "${TZ}" # 时区(从 .env 加载) + REMOVE_OLD_MODS: "true" # 自动移除旧模组(true,保持 mods 干净) + + # 可选:模组自动下载(如果不挂载 mods/ 目录,取消注释启用) + # MODRINTH_PROJECTS: "@/extras/mods.txt" # 从 mods.txt 加载 Modrinth slugs + # MODRINTH_DOWNLOAD_DEPENDENCIES: "required" # 只下载必需依赖 + volumes: # 卷挂载:持久化数据和自定义文件 + - ./data:/data # 持久化世界、backups、logs 等(重要,防止数据丢失) + - ./mods:/data/mods # 挂载用户 mods jar(从原服务器复制) + - ./configs/server.properties:/data/server.properties:ro # 挂载自定义 server.properties(ro 为只读,防止容器修改) + - ./configs/whitelist.json:/data/whitelist.json:ro # 挂载自定义白名单 + - ./configs/ops.json:/data/ops.json:ro # 挂载自定义 OP + # 可选:挂载其他目录(根据需要取消注释) + # - ./data/backups:/data/backups # 备份目录 + # - ./configs/EasyAuth:/data/EasyAuth:ro # EasyAuth 配置(如果有) + # - ./extras:/extras:ro # mods.txt 目录(如果启用自动下载) + restart: unless-stopped # 重启策略:除非手动停止,否则自动重启(提升可用性) + stdin_open: true # 启用 stdin(便于 attach 容器) + tty: true # 启用 tty(便于交互调试) + logging: # 日志配置(防止日志文件过大) + driver: "json-file" # 日志驱动(json-file 为 Docker 默认) + options: + max-size: "10m" # 单个日志文件最大大小(10m 为示例) + max-file: "3" # 最大日志文件数(3 个轮换) diff --git a/minecraft/extras/mods.txt b/minecraft/extras/mods.txt new file mode 100644 index 0000000..ba5882a --- /dev/null +++ b/minecraft/extras/mods.txt @@ -0,0 +1,36 @@ +# mods.txt 文件:用于 Modrinth 自动下载模组的 slugs 列表。 +# 每行一个 slug(从 Modrinth 网站获取),镜像会自动下载最新 1.21.1 兼容版本。 +# 如果您有现有 jar 文件,优先挂载 mods/ 目录;否则启用此文件。 +# 基于原 mods 列表推断,聚焦性能、兼容和实用模组。 + +# 核心 API 和加载器 +fabric-api + +# 性能优化模组(减少延迟、提升 TPS) +sodium +iris +lithium +krypton +architectury + +# 地毯模组(调试和服务器优化) +carpet +carpet-extra + +# 版本兼容模组(允许旧版客户端连接) +viafabric +viaversion +viabackwards + +# 地图模组(小地图和世界地图) +xaeros-minimap +xaeros-world-map + +# 其他实用模组(地图渲染、备份、认证等) +bluemap +ftbbackups2 +easyauth +no-chat-reports +polylib +energy +minimotd # 假设为 minimotd 的 slug,请在 Modrinth 确认