diff --git a/README.md b/README.md index a9dd1cf0..0270ac91 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,169 @@ -# dockerfile +# Dockerfile 示例 -dockerfile说明及示例 \ No newline at end of file +## Kiwix Server + +ZIM 资源阅读器,可在线预览 ZIM 文档。运行 Kiwix Server 服务后即可通过浏览器访问 ZIM 文件。 + + +**官方网站:** + +- 官网 : https://kiwix.org +- ZIM 文件下载地址 : https://download.kiwix.org/zim + +**目录说明:** + +- standard : 标准镜像构建目录 +- alpine : 精简镜像构建目录 +- example : 使用示例 + +**构建说明:** + +1. 进入指定目录(standard 或 alpine) + +2. 构建镜像 + +``` bash +docker build --no-cache -t 镜像名称:镜像TAG . +``` + +示例: + +- 标准镜像(基于 openSUSE 15.5) +``` bash +docker build --no-cache -t hty1024/kiwix-serve:3.5.0 . +``` + +- 精简镜像(基于 AlpineLinux 3.18.2) + +``` bash +docker build --no-cache -t hty1024/kiwix-serve:3.5.0-alpine . +``` + +**使用方式:** +1. 下载 ZIM 文件至主机 + +2. 配置 ZIM 文件所属用户 + +将 ZIM 文件所属用户组及用户均修改为 `1024`,示例如下: +``` bash +chown -R 1024.1024 ./data +``` + +3. 运行 Docker 容器 + +- 直接运行 + +``` bash +docker run --name 容器名称 -dit -p 服务端口号:10080 -v ZIM文件目录:/data 镜像名称:镜像TAG +``` +    示例: + +```bash +docker run --name kiwix-serve -dit -p 10080:10080 -v ./data:/data hty1024/kiwix-serve:3.5.0 +``` +``` bash +docker run --name kiwix-serve -dit -p 10080:10080 -v ./data:/data hty1024/kiwix-serve:3.5.0-alpine +``` + +- Docker Compose 方式运行 +请参考 example 目录内的 compose.yaml 文件 + + +
+ + +## PaperMC Paper + +Paper是基于Spigot的Minecraft游戏服务器,旨在大大提高性能并提供更高级的功能和API。 + + +**官方网站:** + +- 官网 : https://papermc.io +- 官网 : https://papermc.io/software/paper +- 官方文档 : https://docs.papermc.io +- 官网文档 : https://docs.papermc.io/paper + +**目录说明:** + +- alpine : 精简镜像构建目录 +- example : 使用示例 + +**构建说明:** + +1. 进入指定目录(alpine) + +2. 构建镜像 + +``` bash +docker build --no-cache -t 镜像名称:镜像TAG . +``` + +示例: + +- 精简镜像(基于 Amazon Corretto 17.0.8) + +``` bash +docker build --no-cache -t hty1024/papermc/paper:1.20.1-134-alpine . +``` + +**使用方式:** +1. 创建相关目录(用于持久化相关数据) + +创建 `world`、`world_nether`、`world_the_end`、`config`、`plugins`、`logs` 目录,示例如下: + +``` bash +mkdir -pv {world,world_nether,world_the_end,config,plugins,logs} +``` + +2. 下载并按需修改配置文件 `server.properties`、`paper-global.yml`、`paper-world-defaults.yml` (文件见 `example` 目录) + +具体选项参考官方文档 + +3. 阅读授权并修改 `eula.txt` 文件中 `eula` 的值为 `true` + +4. 配置相关文件的所属用户 + +将目录的所属用户组及用户均修改为 `1024`: + +``` bash +chown -R 1024.1024 world world_nether world_the_end config plugins logs server.properties eula.txt +``` + +5. 运行容器前的目录结构示例如下 +``` bash +drwxr-xr-x 2 1024 1024 6 Aug 21 15:00 config +-rw-r--r-- 1 1024 1024 157 Aug 21 13:18 eula.txt +drwxr-xr-x 2 1024 1024 6 Aug 21 15:00 logs +drwxr-xr-x 2 1024 1024 6 Aug 21 15:00 plugins +-rw-r--r-- 1 1024 1024 1285 Aug 21 14:23 server.properties +drwxr-xr-x 2 1024 1024 23 Aug 21 15:03 world +drwxr-xr-x 2 1024 1024 23 Aug 21 15:03 world_nether +drwxr-xr-x 2 1024 1024 23 Aug 21 15:03 world_the_end +``` +- `world` : Overworld目录 +- `world_nether` : Nether目录 +- `world_the_end` : End目录 +- `config` : 配置文件目录 +- `server.properties` : 服务端配置文件 +- `eula.txt` : 授权校验文件 +- `plugins` : 插件目录 +- `logs` : 日志目录 + + +6. 运行 Docker 容器 + +- 直接运行 + +``` bash +docker run --name 容器名称 -dit -p 服务端口号:25565 -v world目录:/opt/papermc/world -v world_nether目录:/opt/papermc/world_nether -v world_the_end目录:/opt/papermc/world_the_end -v config目录:/opt/papermc/config -v plugins目录:/opt/papermc/plugins -v logs目录:/opt/papermc/logs 镜像名称:镜像TAG +``` + +示例: + +```bash +docker run --name papermc-server -dit -p 25565:25565 -v ./world:/opt/papermc/world -v ./world_nether:/opt/papermc/world_nether -v ./world_the_end:/opt/papermc/world_the_end -v ./config:/opt/papermc/config -v ./plugins:/opt/papermc/plugins -v ./logs:/opt/papermc/logs hty1024/papermc/paper:1.20.1-134-alpine +``` + +- Docker Compose 方式运行 +请参考 example 目录内的 compose.yaml 文件 diff --git a/description/dockerfile b/description/dockerfile new file mode 100644 index 00000000..185c1b25 --- /dev/null +++ b/description/dockerfile @@ -0,0 +1,55 @@ +# 配置参数(指定基础镜像版本) +ARG BASE_NAME=${BASE_NAME} \ + BASE_TAG=${BASE_TAG} + +# 基于基础镜像构建 +FROM $BASE_NAME:$BASE_TAG + +# 指定自定义标签 +LABEL ${KEY1}=${VALUE1} ${KEY2}=${VALUE2} ${KEY3}=${VALUE3} + +# 指定默认挂载的目录 +VOLUME [${CONTAINER_DIR1},${CONTAINER_DIR2},${CONTAINER_DIR3}] + +# 指定端口号 +EXPOSE ${PORT1} ${PORT2} ${PORT3} + +# 配置参数 +ARG ${ARG1_NAME}=${ARG1_VALUE} \ + ${ARG2_NAME}=${ARG2_VALUE} \ + ${ARG3_NAME}=${ARG3_VALUE} + +# 配置环境变量 +ENV ${ENV1_NAME}=${ENV1_VALUE} \ + ${ENV2_NAME}=${ENV2_VALUE} \ + ${ENV3_NAME}=${ENV3_VALUE} + +# 运行命令 +RUN ${COMMAND1} && \ + ${COMMAND2} && \ + ${COMMAND3} + +# 复制文件(仅复制) +COPY ${HOST_FILE1_NAME} ${CONTAINER_FILE1_PATH_AND_NAME} +COPY ${HOST_FILE2_NAME} ${CONTAINER_FILE2_PATH_AND_NAME} +COPY ${HOST_FILE3_NAME} ${CONTAINER_FILE3_PATH_AND_NAME} + +# 复制文件(自动解压 tar、zip、xz 等压缩文件) +ADD ${HOST_FILE1_NAME} ${CONTAINER_FILE1_PATH_AND_NAME} +ADD ${HOST_FILE2_NAME} ${CONTAINER_FILE2_PATH_AND_NAME} +ADD ${HOST_FILE3_NAME} ${CONTAINER_FILE3_PATH_AND_NAME} + +# 设置工作目录 +WORKDIR ${CONTAINER_DIR} + +# 设置启动用户 +USER ${GROUP_NAME}:${USER_NAME} + +# 设置监控检查 +HEALTHCHECK ${HEALTHCHECK} + +# 设置执行启动脚本( docker run 时不可覆盖) +ENTRYPOINT [${EXEC_FILE},${ARG1},${ARG2}] + +# 设置执行启动脚本( docker run 时可以覆盖) +CMD [${EXEC_FILE},${ARG1},${ARG2}] diff --git a/examples/kiwix-serve/alpine/dockerfile b/examples/kiwix-serve/alpine/dockerfile new file mode 100644 index 00000000..48f8c02d --- /dev/null +++ b/examples/kiwix-serve/alpine/dockerfile @@ -0,0 +1,52 @@ +# 配置参数(指定基础镜像版本) +ARG BASE_TAG=3.18.2 + +# 基于 AlpineLinux 构建 +FROM alpine:$BASE_TAG + +# 指定端口号 +EXPOSE 10080 + +# 配置参数 +ARG GROUP_ID=1024 \ + GROUP_NAME=kiwix \ + USER_ID=1024 \ + USER_NAME=kiwix \ + USER_HOME=/home/kiwix \ + USER_SHELL=/bin/bash + +# 更新应用并安装基础应用 +RUN set -ex && \ + apk add tzdata && \ + apk add --no-cache bash bash-doc bash-completion curl + +# 设置时区、新建用户组及用户、配置目录权限 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + addgroup $GROUP_NAME -g $GROUP_ID && \ + adduser $USER_NAME -G $GROUP_NAME -h $USER_HOME -s $USER_SHELL -u $USER_ID -D && \ + mkdir -pv $USER_HOME && \ + chown -R $GROUP_NAME.$USER_NAME $USER_HOME + +# 配置环境变量 +ARG KIWIX_SERVE_VERSION=3.5.0 +ENV KIWIX_HOME=/opt/kiwix-serve/$KIWIX_SERVE_VERSION \ + KIWIX_ZIM_FILE_DIR=/data + +# 安装 Kiwix Server +COPY kiwix-serve $KIWIX_HOME/kiwix-serve +COPY entrypoint.sh $KIWIX_HOME/entrypoint.sh +RUN mkdir -pv $KIWIX_ZIM_FILE_DIR && \ + chown -R $GROUP_NAME.$USER_NAME $KIWIX_HOME $KIWIX_ZIM_FILE_DIR && \ + chmod -R 755 $KIWIX_HOME $KIWIX_ZIM_FILE_DIR + +# 健康检查 +HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://127.0.0.1:10080 || exit 1 + +# 设置工作目录 +WORKDIR $KIWIX_HOME + +# 设置启动用户 +USER $GROUP_NAME:$USER_NAME + +# 设置执行启动脚本 +CMD ["/bin/bash","-c","./entrypoint.sh"] diff --git a/examples/kiwix-serve/alpine/entrypoint.sh b/examples/kiwix-serve/alpine/entrypoint.sh new file mode 100755 index 00000000..22a2f21a --- /dev/null +++ b/examples/kiwix-serve/alpine/entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo '====================================================================================================' +echo `date +%Y-%m-%d` `date +%H:%M:%S` +echo '============================== 开始启动 Kiwix Serve...... ==============================' +echo 'Kiwix Serve 工作目录:' $KIWIX_HOME +echo 'Kiwix Serve 监听端口:10080' +echo 'ZIM 文件目录:' $KIWIX_ZIM_FILE_DIR +echo '----------------------------------------------------------------------------------------------------' +$KIWIX_HOME/kiwix-serve -p 10080 $KIWIX_ZIM_FILE_DIR/*.zim diff --git a/examples/kiwix-serve/alpine/kiwix-serve b/examples/kiwix-serve/alpine/kiwix-serve new file mode 100755 index 00000000..857955f3 Binary files /dev/null and b/examples/kiwix-serve/alpine/kiwix-serve differ diff --git a/examples/kiwix-serve/example/compose.yaml b/examples/kiwix-serve/example/compose.yaml new file mode 100644 index 00000000..c5b181d0 --- /dev/null +++ b/examples/kiwix-serve/example/compose.yaml @@ -0,0 +1,20 @@ +version: "3.9" + +services: + kiwix-serve: +# image: hty1024/kiwix-serve:3.5.0-2 + image: hty1024/kiwix-serve:3.5.0-2-alpine + container_name: kiwix-serve + restart: always + volumes: + - /etc/localtime:/etc/localtime:ro + - ./data:/data + ports: + - "10080:10080" + networks: + - app_network + +networks: + app_network: + external: true + name: app_network diff --git a/examples/kiwix-serve/example/data/wikipedia_zh_computer_maxi_2023-07.zim b/examples/kiwix-serve/example/data/wikipedia_zh_computer_maxi_2023-07.zim new file mode 100644 index 00000000..f00a1238 Binary files /dev/null and b/examples/kiwix-serve/example/data/wikipedia_zh_computer_maxi_2023-07.zim differ diff --git a/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0-2.tar.gz b/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0-2.tar.gz new file mode 100644 index 00000000..5bbf2ae7 Binary files /dev/null and b/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0-2.tar.gz differ diff --git a/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0.tar.gz b/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0.tar.gz new file mode 100644 index 00000000..af9dd6c2 Binary files /dev/null and b/examples/kiwix-serve/example/kiwix-tools_linux-x86_64-3.5.0.tar.gz differ diff --git a/examples/kiwix-serve/standard/dockerfile b/examples/kiwix-serve/standard/dockerfile new file mode 100644 index 00000000..caeafc84 --- /dev/null +++ b/examples/kiwix-serve/standard/dockerfile @@ -0,0 +1,54 @@ +# 配置参数(指定基础镜像版本) +ARG BASE_TAG=15.5 + +# 基于 openSUSE 构建 +FROM opensuse/leap:$BASE_TAG + +# 指定端口号 +EXPOSE 10080 + +# 配置参数 +ARG GROUP_ID=1024 \ + GROUP_NAME=kiwix \ + USER_ID=1024 \ + USER_NAME=kiwix \ + USER_HOME=/home/kiwix \ + USER_SHELL=/bin/bash + +# 更新应用并安装基础应用、清除 zypper 缓存 +RUN set -ex && \ + zypper refresh && \ + zypper update -y && \ + zypper install -y curl && \ + zypper clean + +# 设置时区、新建用户组及用户、配置目录权限 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + groupadd $GROUP_NAME -g $GROUP_ID && \ + useradd $USER_NAME -g $GROUP_ID -d $USER_HOME -s $USER_SHELL -u $USER_ID && \ + mkdir -pv $USER_HOME && \ + chown -R $GROUP_NAME.$USER_NAME $USER_HOME + +# 配置环境变量 +ARG KIWIX_SERVE_VERSION=3.5.0 +ENV KIWIX_HOME=/opt/kiwix-serve/$KIWIX_SERVE_VERSION \ + KIWIX_ZIM_FILE_DIR=/data + +# 安装 Kiwix Server +COPY kiwix-serve $KIWIX_HOME/kiwix-serve +COPY entrypoint.sh $KIWIX_HOME/entrypoint.sh +RUN mkdir -pv $KIWIX_ZIM_FILE_DIR && \ + chown -R $GROUP_NAME.$USER_NAME $KIWIX_HOME $KIWIX_ZIM_FILE_DIR && \ + chmod -R 755 $KIWIX_HOME $KIWIX_ZIM_FILE_DIR + +# 健康检查 +HEALTHCHECK --interval=10s --timeout=3s CMD curl -f http://127.0.0.1:10080 || exit 1 + +# 设置工作目录 +WORKDIR $KIWIX_HOME + +# 设置启动用户 +USER $GROUP_NAME:$USER_NAME + +# 设置执行启动脚本 +CMD ["/bin/bash","-c","./entrypoint.sh"] diff --git a/examples/kiwix-serve/standard/entrypoint.sh b/examples/kiwix-serve/standard/entrypoint.sh new file mode 100755 index 00000000..22a2f21a --- /dev/null +++ b/examples/kiwix-serve/standard/entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo '====================================================================================================' +echo `date +%Y-%m-%d` `date +%H:%M:%S` +echo '============================== 开始启动 Kiwix Serve...... ==============================' +echo 'Kiwix Serve 工作目录:' $KIWIX_HOME +echo 'Kiwix Serve 监听端口:10080' +echo 'ZIM 文件目录:' $KIWIX_ZIM_FILE_DIR +echo '----------------------------------------------------------------------------------------------------' +$KIWIX_HOME/kiwix-serve -p 10080 $KIWIX_ZIM_FILE_DIR/*.zim diff --git a/examples/kiwix-serve/standard/kiwix-serve b/examples/kiwix-serve/standard/kiwix-serve new file mode 100755 index 00000000..857955f3 Binary files /dev/null and b/examples/kiwix-serve/standard/kiwix-serve differ diff --git a/examples/papermc/paper/alpine/dockerfile b/examples/papermc/paper/alpine/dockerfile new file mode 100644 index 00000000..6a1f6e92 --- /dev/null +++ b/examples/papermc/paper/alpine/dockerfile @@ -0,0 +1,60 @@ +# 配置参数(指定基础镜像版本) +ARG BASE_TAG=17.0.8-alpine3.18 + +# 基于 Amazon Corretto 构建 +FROM amazoncorretto:$BASE_TAG + +# 指定端口号 +EXPOSE 25565 25575 + +# 配置参数 +ARG GROUP_ID=1024 \ + GROUP_NAME=papermc \ + USER_ID=1024 \ + USER_NAME=papermc \ + USER_HOME=/home/papermc \ + USER_SHELL=/bin/bash + +# 更新应用并安装基础应用 +RUN set -ex && \ + apk add tzdata && \ + apk add --no-cache bash bash-doc bash-completion + +# 设置时区、新建用户组及用户、配置目录权限 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + addgroup $GROUP_NAME -g $GROUP_ID && \ + adduser $USER_NAME -G $GROUP_NAME -h $USER_HOME -s $USER_SHELL -u $USER_ID -D && \ + mkdir -pv $USER_HOME && \ + chown -R $GROUP_NAME.$USER_NAME $USER_HOME + +# 配置环境变量 +ARG PAPERMC_PAPER_VERSION=1.20.1-134 \ + MOJANG_VERSION=1.20.1 +ENV PAPERMC_PAPER_VERSION=$PAPERMC_PAPER_VERSION \ + MOJANG_VERSION=$MOJANG_VERSION \ + PAPERMC_PAPER_HOME=/opt/papermc/paper \ + PAPERMC_PAPER_DATA_DIR=/opt/papermc/paper + +# 安装 PaperMC Server +COPY paper-$PAPERMC_PAPER_VERSION.jar $PAPERMC_PAPER_HOME/paper-$PAPERMC_PAPER_VERSION.jar +COPY mojang_$MOJANG_VERSION.jar $PAPERMC_PAPER_HOME/cache/mojang_$MOJANG_VERSION.jar +COPY server.properties $PAPERMC_PAPER_HOME/server.properties +COPY paper-global.yml $PAPERMC_PAPER_HOME/config/paper-global.yml +COPY paper-world-defaults.yml $PAPERMC_PAPER_HOME/config/paper-world-defaults.yml +COPY eula.txt $PAPERMC_PAPER_HOME/eula.txt +COPY entrypoint.sh $PAPERMC_PAPER_HOME/entrypoint.sh +RUN mkdir -pv $PAPERMC_PAPER_DATA_DIR && \ + chown -R $GROUP_NAME.$USER_NAME $PAPERMC_PAPER_HOME $PAPERMC_PAPER_DATA_DIR && \ + chmod -R 755 $PAPERMC_PAPER_HOME $PAPERMC_PAPER_DATA_DIR + +# 设置工作目录 +WORKDIR $PAPERMC_PAPER_HOME + +# 指定默认挂载目录 +VOLUME [$PAPERMC_PAPER_HOME/world, $PAPERMC_PAPER_HOME/world_nether, $PAPERMC_PAPER_HOME/world_the_end, $PAPERMC_PAPER_HOME/config, $PAPERMC_PAPER_HOME/plugins, $PAPERMC_PAPER_HOME/logs] + +# 设置启动用户 +USER $GROUP_NAME:$USER_NAME + +# 设置执行启动脚本 +CMD ["/bin/bash","-c","./entrypoint.sh"] diff --git a/examples/papermc/paper/alpine/entrypoint.sh b/examples/papermc/paper/alpine/entrypoint.sh new file mode 100755 index 00000000..084184d9 --- /dev/null +++ b/examples/papermc/paper/alpine/entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo '====================================================================================================' +echo `date +%Y-%m-%d` `date +%H:%M:%S` +echo '============================== 开始启动 PaperMC Paper...... ==============================' +echo 'PaperMC Paper 版本号:' $PAPERMC_PAPER_VERSION +echo 'PaperMC Paper 工作目录:' $PAPERMC_PAPER_HOME +echo 'PaperMC Paper 监听端口:25565' +echo '数据文件目录:' $PAPERMC_PAPER_DATA_DIR +echo '----------------------------------------------------------------------------------------------------' +java -Xms2G -Xmx2G -jar $PAPERMC_PAPER_HOME/paper-$PAPERMC_PAPER_VERSION.jar --nogui diff --git a/examples/papermc/paper/alpine/eula.txt b/examples/papermc/paper/alpine/eula.txt new file mode 100644 index 00000000..05ad73ef --- /dev/null +++ b/examples/papermc/paper/alpine/eula.txt @@ -0,0 +1,3 @@ +#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). +#Mon Aug 21 11:07:07 CST 2023 +eula=false diff --git a/examples/papermc/paper/alpine/mojang_1.20.1.jar b/examples/papermc/paper/alpine/mojang_1.20.1.jar new file mode 100644 index 00000000..b89a7c53 Binary files /dev/null and b/examples/papermc/paper/alpine/mojang_1.20.1.jar differ diff --git a/examples/papermc/paper/alpine/paper-1.20.1-134.jar b/examples/papermc/paper/alpine/paper-1.20.1-134.jar new file mode 100755 index 00000000..fd608681 Binary files /dev/null and b/examples/papermc/paper/alpine/paper-1.20.1-134.jar differ diff --git a/examples/papermc/paper/alpine/paper-global.yml b/examples/papermc/paper/alpine/paper-global.yml new file mode 100644 index 00000000..1487f509 --- /dev/null +++ b/examples/papermc/paper/alpine/paper-global.yml @@ -0,0 +1,128 @@ +# This is the global configuration file for Paper. +# As you can see, there's a lot to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# The world configuration options have been moved inside +# their respective world folder. The files are named paper-world.yml +# +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +_version: 28 +block-updates: + disable-noteblock-updates: false + disable-tripwire-updates: false +chunk-loading-advanced: + auto-config-send-distance: true + player-max-concurrent-chunk-generates: 0 + player-max-concurrent-chunk-loads: 0 +chunk-loading-basic: + player-max-chunk-generate-rate: -1.0 + player-max-chunk-load-rate: 100.0 + player-max-chunk-send-rate: 75.0 +chunk-system: + gen-parallelism: default + io-threads: -1 + worker-threads: -1 +collisions: + enable-player-collisions: true + send-full-pos-for-hard-colliding-entities: true +commands: + fix-target-selector-tag-completion: true + suggest-player-names-when-null-tab-completions: true + time-command-affects-all-worlds: false +console: + enable-brigadier-completions: true + enable-brigadier-highlighting: true + has-all-permissions: false +item-validation: + book: + author: 8192 + page: 16384 + title: 8192 + book-size: + page-max: 2560 + total-multiplier: 0.98 + display-name: 8192 + lore-line: 8192 + resolve-selectors-in-books: false +logging: + deobfuscate-stacktraces: true + log-player-ip-addresses: true +messages: + kick: + authentication-servers-down: + connection-throttle: Connection throttled! Please wait before reconnecting. + flying-player: + flying-vehicle: + no-permission: I'm sorry, but you do not have permission to perform this command. + Please contact the server administrators if you believe that this is in error. + use-display-name-in-quit-message: false +misc: + chat-threads: + chat-executor-core-size: -1 + chat-executor-max-size: -1 + fix-entity-position-desync: true + lag-compensate-block-breaking: true + load-permissions-yml-before-plugins: true + max-joins-per-tick: 5 + region-file-cache-size: 256 + strict-advancement-dimension-check: false + use-alternative-luck-formula: false + use-dimension-type-for-custom-spawners: false +packet-limiter: + all-packets: + action: KICK + interval: 7.0 + max-packet-rate: 500.0 + kick-message: + overrides: + ServerboundPlaceRecipePacket: + action: DROP + interval: 4.0 + max-packet-rate: 5.0 +player-auto-save: + max-per-tick: -1 + rate: -1 +proxies: + bungee-cord: + online-mode: true + proxy-protocol: false + velocity: + enabled: false + online-mode: false + secret: '' +scoreboards: + save-empty-scoreboard-teams: false + track-plugin-scoreboards: false +spam-limiter: + incoming-packet-threshold: 300 + recipe-spam-increment: 1 + recipe-spam-limit: 20 + tab-spam-increment: 1 + tab-spam-limit: 500 +timings: + enabled: true + hidden-config-entries: + - database + - proxies.velocity.secret + history-interval: 300 + history-length: 3600 + server-name: Unknown Server + server-name-privacy: false + url: https://timings.aikar.co/ + verbose: true +unsupported-settings: + allow-grindstone-overstacking: false + allow-headless-pistons: false + allow-permanent-block-break-exploits: false + allow-piston-duplication: false + compression-format: ZLIB + perform-username-validation: true +watchdog: + early-warning-delay: 10000 + early-warning-every: 5000 diff --git a/examples/papermc/paper/alpine/paper-world-defaults.yml b/examples/papermc/paper/alpine/paper-world-defaults.yml new file mode 100644 index 00000000..201dfcbf --- /dev/null +++ b/examples/papermc/paper/alpine/paper-world-defaults.yml @@ -0,0 +1,290 @@ +# This is the world defaults configuration file for Paper. +# As you can see, there's a lot to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# Configuration options here apply to all worlds, unless you specify overrides inside +# the world-specific config file inside each world folder. +# +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +_version: 30 +anticheat: + anti-xray: + enabled: false + engine-mode: 1 + hidden-blocks: + - copper_ore + - deepslate_copper_ore + - gold_ore + - deepslate_gold_ore + - iron_ore + - deepslate_iron_ore + - coal_ore + - deepslate_coal_ore + - lapis_ore + - deepslate_lapis_ore + - mossy_cobblestone + - obsidian + - chest + - diamond_ore + - deepslate_diamond_ore + - redstone_ore + - deepslate_redstone_ore + - clay + - emerald_ore + - deepslate_emerald_ore + - ender_chest + lava-obscures: false + max-block-height: 64 + replacement-blocks: + - stone + - oak_planks + - deepslate + update-radius: 2 + use-permission: false + obfuscation: + items: + hide-durability: false + hide-itemmeta: false + hide-itemmeta-with-visual-effects: false +chunks: + auto-save-interval: default + delay-chunk-unloads-by: 10s + entity-per-chunk-save-limit: + arrow: -1 + ender_pearl: -1 + experience_orb: -1 + fireball: -1 + small_fireball: -1 + snowball: -1 + fixed-chunk-inhabited-time: -1 + flush-regions-on-save: false + max-auto-save-chunks-per-tick: 24 + prevent-moving-into-unloaded-chunks: false +collisions: + allow-player-cramming-damage: false + allow-vehicle-collisions: true + fix-climbing-bypassing-cramming-rule: false + max-entity-collisions: 8 + only-players-collide: false +entities: + armor-stands: + do-collision-entity-lookups: true + tick: true + behavior: + allow-spider-world-border-climbing: true + baby-zombie-movement-modifier: 0.5 + disable-chest-cat-detection: false + disable-creeper-lingering-effect: false + disable-player-crits: false + door-breaking-difficulty: + husk: + - HARD + vindicator: + - NORMAL + - HARD + zombie: + - HARD + zombie_villager: + - HARD + zombified_piglin: + - HARD + ender-dragons-death-always-places-dragon-egg: false + experience-merge-max-value: -1 + mobs-can-always-pick-up-loot: + skeletons: false + zombies: false + nerf-pigmen-from-nether-portals: false + parrots-are-unaffected-by-player-movement: false + phantoms-do-not-spawn-on-creative-players: true + phantoms-only-attack-insomniacs: true + phantoms-spawn-attempt-max-seconds: 119 + phantoms-spawn-attempt-min-seconds: 60 + piglins-guard-chests: true + pillager-patrols: + disable: false + spawn-chance: 0.2 + spawn-delay: + per-player: false + ticks: 12000 + start: + day: 5 + per-player: false + player-insomnia-start-ticks: 72000 + should-remove-dragon: false + spawner-nerfed-mobs-should-jump: false + zombie-villager-infection-chance: -1.0 + zombies-target-turtle-eggs: true + entities-target-with-follow-range: false + markers: + tick: true + mob-effects: + immune-to-wither-effect: + wither: true + wither-skeleton: true + spiders-immune-to-poison-effect: true + undead-immune-to-certain-effects: true + spawning: + all-chunks-are-slime-chunks: false + alt-item-despawn-rate: + enabled: false + items: + cobblestone: 300 + count-all-mobs-for-spawning: false + creative-arrow-despawn-rate: default + despawn-ranges: + ambient: + hard: 128 + soft: 32 + axolotls: + hard: 128 + soft: 32 + creature: + hard: 128 + soft: 32 + misc: + hard: 128 + soft: 32 + monster: + hard: 128 + soft: 32 + underground_water_creature: + hard: 128 + soft: 32 + water_ambient: + hard: 64 + soft: 32 + water_creature: + hard: 128 + soft: 32 + disable-mob-spawner-spawn-egg-transformation: false + duplicate-uuid: + mode: SAFE_REGEN + safe-regen-delete-range: 32 + filter-bad-tile-entity-nbt-from-falling-blocks: true + filtered-entity-tag-nbt-paths: + - Pos + - Motion + - SleepingX + - SleepingY + - SleepingZ + iron-golems-can-spawn-in-air: false + monster-spawn-max-light-level: -1 + non-player-arrow-despawn-rate: default + per-player-mob-spawns: true + scan-for-legacy-ender-dragon: true + skeleton-horse-thunder-spawn-chance: default + slime-spawn-height: + slime-chunk: + maximum: 40.0 + surface-biome: + maximum: 70.0 + minimum: 50.0 + spawn-limits: + ambient: -1 + axolotls: -1 + creature: -1 + monster: -1 + underground_water_creature: -1 + water_ambient: -1 + water_creature: -1 + wandering-trader: + spawn-chance-failure-increment: 25 + spawn-chance-max: 75 + spawn-chance-min: 25 + spawn-day-length: 24000 + spawn-minute-length: 1200 + wateranimal-spawn-height: + maximum: default + minimum: default +environment: + disable-explosion-knockback: false + disable-ice-and-snow: false + disable-teleportation-suffocation-check: false + disable-thunder: false + fire-tick-delay: 30 + frosted-ice: + delay: + max: 40 + min: 20 + enabled: true + generate-flat-bedrock: false + nether-ceiling-void-damage-height: disabled + optimize-explosions: false + portal-create-radius: 16 + portal-search-radius: 128 + portal-search-vanilla-dimension-scaling: true + treasure-maps: + enabled: true + find-already-discovered: + loot-tables: default + villager-trade: false + water-over-lava-flow-speed: 5 +feature-seeds: + generate-random-seeds-for-all: false +fishing-time-range: + maximum: 600 + minimum: 100 +fixes: + disable-unloaded-chunk-enderpearl-exploit: true + falling-block-height-nerf: disabled + fix-curing-zombie-villager-discount-exploit: true + fix-items-merging-through-walls: false + prevent-tnt-from-moving-in-water: false + split-overstacked-loot: true + tnt-entity-height-nerf: disabled +hopper: + cooldown-when-full: true + disable-move-event: false + ignore-occluding-blocks: false +lootables: + auto-replenish: false + max-refills: -1 + refresh-max: 2d + refresh-min: 12h + reset-seed-on-fill: true + restrict-player-reloot: true + restrict-player-reloot-time: disabled +maps: + item-frame-cursor-limit: 128 + item-frame-cursor-update-interval: 10 +max-growth-height: + bamboo: + max: 16 + min: 11 + cactus: 3 + reeds: 3 +misc: + disable-end-credits: false + disable-relative-projectile-velocity: false + disable-sprint-interruption-on-attack: false + light-queue-size: 20 + max-leash-distance: 10.0 + redstone-implementation: VANILLA + shield-blocking-delay: 5 + show-sign-click-command-failure-msgs-to-player: false + update-pathfinding-on-block-update: true +scoreboards: + allow-non-player-entities-on-scoreboards: true + use-vanilla-world-scoreboard-name-coloring: false +spawn: + allow-using-signs-inside-spawn-protection: false + keep-spawn-loaded: true + keep-spawn-loaded-range: 10 +tick-rates: + behavior: + villager: + validatenearbypoi: -1 + container-update: 1 + grass-spread: 1 + mob-spawner: 1 + sensor: + villager: + secondarypoisensor: 40 +unsupported-settings: + fix-invulnerable-end-crystal-exploit: true diff --git a/examples/papermc/paper/alpine/server.properties b/examples/papermc/paper/alpine/server.properties new file mode 100644 index 00000000..da18e4f3 --- /dev/null +++ b/examples/papermc/paper/alpine/server.properties @@ -0,0 +1,59 @@ +#Minecraft server properties +#Mon Aug 21 11:08:46 CST 2023 +enable-jmx-monitoring=false +rcon.port=25575 +level-seed= +gamemode=survival +enable-command-block=false +enable-query=false +generator-settings={} +enforce-secure-profile=true +level-name=world +motd=A Minecraft Server +query.port=25565 +pvp=true +generate-structures=true +max-chained-neighbor-updates=1000000 +difficulty=easy +network-compression-threshold=256 +max-tick-time=60000 +require-resource-pack=false +use-native-transport=true +max-players=20 +online-mode=false +enable-status=true +allow-flight=false +initial-disabled-packs= +broadcast-rcon-to-ops=true +view-distance=10 +server-ip= +resource-pack-prompt= +allow-nether=true +server-port=25565 +enable-rcon=false +sync-chunk-writes=true +op-permission-level=4 +prevent-proxy-connections=false +hide-online-players=false +resource-pack= +entity-broadcast-range-percentage=100 +simulation-distance=10 +rcon.password= +player-idle-timeout=0 +debug=false +force-gamemode=false +rate-limit=0 +hardcore=false +white-list=false +broadcast-console-to-ops=true +spawn-npcs=true +spawn-animals=true +function-permission-level=2 +initial-enabled-packs=vanilla +level-type=minecraft\:normal +text-filtering-config= +spawn-monsters=true +enforce-whitelist=false +spawn-protection=16 +resource-pack-sha1= +max-world-size=29999984 diff --git a/examples/papermc/paper/example/compose.yaml b/examples/papermc/paper/example/compose.yaml new file mode 100644 index 00000000..c66c5041 --- /dev/null +++ b/examples/papermc/paper/example/compose.yaml @@ -0,0 +1,27 @@ +version: "3.9" + +services: + papermc-paper: +# image: hty1024/papermc/paper:1.20.1-134 + image: hty1024/papermc/paper:1.20.1-134-alpine + container_name: papermc-paper + restart: always + volumes: + - /etc/localtime:/etc/localtime:ro + - ./world:/opt/papermc/paper/world + - ./world_nether:/opt/papermc/paper/world_nether + - ./world_the_end:/opt/papermc/paper/world_the_end + - ./config:/opt/papermc/paper/config + - ./server.properties:/opt/papermc/paper/server.properties + - ./eula.txt:/opt/papermc/paper/eula.txt + - ./plugins:/opt/papermc/paper/plugins + - ./logs:/opt/papermc/paper/logs + ports: + - "25565:25565" + networks: + - app_network + +networks: + app_network: + external: true + name: app_network diff --git a/examples/papermc/paper/example/config/paper-global.yml b/examples/papermc/paper/example/config/paper-global.yml new file mode 100644 index 00000000..1487f509 --- /dev/null +++ b/examples/papermc/paper/example/config/paper-global.yml @@ -0,0 +1,128 @@ +# This is the global configuration file for Paper. +# As you can see, there's a lot to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# The world configuration options have been moved inside +# their respective world folder. The files are named paper-world.yml +# +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +_version: 28 +block-updates: + disable-noteblock-updates: false + disable-tripwire-updates: false +chunk-loading-advanced: + auto-config-send-distance: true + player-max-concurrent-chunk-generates: 0 + player-max-concurrent-chunk-loads: 0 +chunk-loading-basic: + player-max-chunk-generate-rate: -1.0 + player-max-chunk-load-rate: 100.0 + player-max-chunk-send-rate: 75.0 +chunk-system: + gen-parallelism: default + io-threads: -1 + worker-threads: -1 +collisions: + enable-player-collisions: true + send-full-pos-for-hard-colliding-entities: true +commands: + fix-target-selector-tag-completion: true + suggest-player-names-when-null-tab-completions: true + time-command-affects-all-worlds: false +console: + enable-brigadier-completions: true + enable-brigadier-highlighting: true + has-all-permissions: false +item-validation: + book: + author: 8192 + page: 16384 + title: 8192 + book-size: + page-max: 2560 + total-multiplier: 0.98 + display-name: 8192 + lore-line: 8192 + resolve-selectors-in-books: false +logging: + deobfuscate-stacktraces: true + log-player-ip-addresses: true +messages: + kick: + authentication-servers-down: + connection-throttle: Connection throttled! Please wait before reconnecting. + flying-player: + flying-vehicle: + no-permission: I'm sorry, but you do not have permission to perform this command. + Please contact the server administrators if you believe that this is in error. + use-display-name-in-quit-message: false +misc: + chat-threads: + chat-executor-core-size: -1 + chat-executor-max-size: -1 + fix-entity-position-desync: true + lag-compensate-block-breaking: true + load-permissions-yml-before-plugins: true + max-joins-per-tick: 5 + region-file-cache-size: 256 + strict-advancement-dimension-check: false + use-alternative-luck-formula: false + use-dimension-type-for-custom-spawners: false +packet-limiter: + all-packets: + action: KICK + interval: 7.0 + max-packet-rate: 500.0 + kick-message: + overrides: + ServerboundPlaceRecipePacket: + action: DROP + interval: 4.0 + max-packet-rate: 5.0 +player-auto-save: + max-per-tick: -1 + rate: -1 +proxies: + bungee-cord: + online-mode: true + proxy-protocol: false + velocity: + enabled: false + online-mode: false + secret: '' +scoreboards: + save-empty-scoreboard-teams: false + track-plugin-scoreboards: false +spam-limiter: + incoming-packet-threshold: 300 + recipe-spam-increment: 1 + recipe-spam-limit: 20 + tab-spam-increment: 1 + tab-spam-limit: 500 +timings: + enabled: true + hidden-config-entries: + - database + - proxies.velocity.secret + history-interval: 300 + history-length: 3600 + server-name: Unknown Server + server-name-privacy: false + url: https://timings.aikar.co/ + verbose: true +unsupported-settings: + allow-grindstone-overstacking: false + allow-headless-pistons: false + allow-permanent-block-break-exploits: false + allow-piston-duplication: false + compression-format: ZLIB + perform-username-validation: true +watchdog: + early-warning-delay: 10000 + early-warning-every: 5000 diff --git a/examples/papermc/paper/example/config/paper-world-defaults.yml b/examples/papermc/paper/example/config/paper-world-defaults.yml new file mode 100644 index 00000000..201dfcbf --- /dev/null +++ b/examples/papermc/paper/example/config/paper-world-defaults.yml @@ -0,0 +1,290 @@ +# This is the world defaults configuration file for Paper. +# As you can see, there's a lot to configure. Some options may impact gameplay, so use +# with caution, and make sure you know what each option does before configuring. +# +# If you need help with the configuration or have any questions related to Paper, +# join us in our Discord or check the docs page. +# +# Configuration options here apply to all worlds, unless you specify overrides inside +# the world-specific config file inside each world folder. +# +# Docs: https://docs.papermc.io/ +# Discord: https://discord.gg/papermc +# Website: https://papermc.io/ + +_version: 30 +anticheat: + anti-xray: + enabled: false + engine-mode: 1 + hidden-blocks: + - copper_ore + - deepslate_copper_ore + - gold_ore + - deepslate_gold_ore + - iron_ore + - deepslate_iron_ore + - coal_ore + - deepslate_coal_ore + - lapis_ore + - deepslate_lapis_ore + - mossy_cobblestone + - obsidian + - chest + - diamond_ore + - deepslate_diamond_ore + - redstone_ore + - deepslate_redstone_ore + - clay + - emerald_ore + - deepslate_emerald_ore + - ender_chest + lava-obscures: false + max-block-height: 64 + replacement-blocks: + - stone + - oak_planks + - deepslate + update-radius: 2 + use-permission: false + obfuscation: + items: + hide-durability: false + hide-itemmeta: false + hide-itemmeta-with-visual-effects: false +chunks: + auto-save-interval: default + delay-chunk-unloads-by: 10s + entity-per-chunk-save-limit: + arrow: -1 + ender_pearl: -1 + experience_orb: -1 + fireball: -1 + small_fireball: -1 + snowball: -1 + fixed-chunk-inhabited-time: -1 + flush-regions-on-save: false + max-auto-save-chunks-per-tick: 24 + prevent-moving-into-unloaded-chunks: false +collisions: + allow-player-cramming-damage: false + allow-vehicle-collisions: true + fix-climbing-bypassing-cramming-rule: false + max-entity-collisions: 8 + only-players-collide: false +entities: + armor-stands: + do-collision-entity-lookups: true + tick: true + behavior: + allow-spider-world-border-climbing: true + baby-zombie-movement-modifier: 0.5 + disable-chest-cat-detection: false + disable-creeper-lingering-effect: false + disable-player-crits: false + door-breaking-difficulty: + husk: + - HARD + vindicator: + - NORMAL + - HARD + zombie: + - HARD + zombie_villager: + - HARD + zombified_piglin: + - HARD + ender-dragons-death-always-places-dragon-egg: false + experience-merge-max-value: -1 + mobs-can-always-pick-up-loot: + skeletons: false + zombies: false + nerf-pigmen-from-nether-portals: false + parrots-are-unaffected-by-player-movement: false + phantoms-do-not-spawn-on-creative-players: true + phantoms-only-attack-insomniacs: true + phantoms-spawn-attempt-max-seconds: 119 + phantoms-spawn-attempt-min-seconds: 60 + piglins-guard-chests: true + pillager-patrols: + disable: false + spawn-chance: 0.2 + spawn-delay: + per-player: false + ticks: 12000 + start: + day: 5 + per-player: false + player-insomnia-start-ticks: 72000 + should-remove-dragon: false + spawner-nerfed-mobs-should-jump: false + zombie-villager-infection-chance: -1.0 + zombies-target-turtle-eggs: true + entities-target-with-follow-range: false + markers: + tick: true + mob-effects: + immune-to-wither-effect: + wither: true + wither-skeleton: true + spiders-immune-to-poison-effect: true + undead-immune-to-certain-effects: true + spawning: + all-chunks-are-slime-chunks: false + alt-item-despawn-rate: + enabled: false + items: + cobblestone: 300 + count-all-mobs-for-spawning: false + creative-arrow-despawn-rate: default + despawn-ranges: + ambient: + hard: 128 + soft: 32 + axolotls: + hard: 128 + soft: 32 + creature: + hard: 128 + soft: 32 + misc: + hard: 128 + soft: 32 + monster: + hard: 128 + soft: 32 + underground_water_creature: + hard: 128 + soft: 32 + water_ambient: + hard: 64 + soft: 32 + water_creature: + hard: 128 + soft: 32 + disable-mob-spawner-spawn-egg-transformation: false + duplicate-uuid: + mode: SAFE_REGEN + safe-regen-delete-range: 32 + filter-bad-tile-entity-nbt-from-falling-blocks: true + filtered-entity-tag-nbt-paths: + - Pos + - Motion + - SleepingX + - SleepingY + - SleepingZ + iron-golems-can-spawn-in-air: false + monster-spawn-max-light-level: -1 + non-player-arrow-despawn-rate: default + per-player-mob-spawns: true + scan-for-legacy-ender-dragon: true + skeleton-horse-thunder-spawn-chance: default + slime-spawn-height: + slime-chunk: + maximum: 40.0 + surface-biome: + maximum: 70.0 + minimum: 50.0 + spawn-limits: + ambient: -1 + axolotls: -1 + creature: -1 + monster: -1 + underground_water_creature: -1 + water_ambient: -1 + water_creature: -1 + wandering-trader: + spawn-chance-failure-increment: 25 + spawn-chance-max: 75 + spawn-chance-min: 25 + spawn-day-length: 24000 + spawn-minute-length: 1200 + wateranimal-spawn-height: + maximum: default + minimum: default +environment: + disable-explosion-knockback: false + disable-ice-and-snow: false + disable-teleportation-suffocation-check: false + disable-thunder: false + fire-tick-delay: 30 + frosted-ice: + delay: + max: 40 + min: 20 + enabled: true + generate-flat-bedrock: false + nether-ceiling-void-damage-height: disabled + optimize-explosions: false + portal-create-radius: 16 + portal-search-radius: 128 + portal-search-vanilla-dimension-scaling: true + treasure-maps: + enabled: true + find-already-discovered: + loot-tables: default + villager-trade: false + water-over-lava-flow-speed: 5 +feature-seeds: + generate-random-seeds-for-all: false +fishing-time-range: + maximum: 600 + minimum: 100 +fixes: + disable-unloaded-chunk-enderpearl-exploit: true + falling-block-height-nerf: disabled + fix-curing-zombie-villager-discount-exploit: true + fix-items-merging-through-walls: false + prevent-tnt-from-moving-in-water: false + split-overstacked-loot: true + tnt-entity-height-nerf: disabled +hopper: + cooldown-when-full: true + disable-move-event: false + ignore-occluding-blocks: false +lootables: + auto-replenish: false + max-refills: -1 + refresh-max: 2d + refresh-min: 12h + reset-seed-on-fill: true + restrict-player-reloot: true + restrict-player-reloot-time: disabled +maps: + item-frame-cursor-limit: 128 + item-frame-cursor-update-interval: 10 +max-growth-height: + bamboo: + max: 16 + min: 11 + cactus: 3 + reeds: 3 +misc: + disable-end-credits: false + disable-relative-projectile-velocity: false + disable-sprint-interruption-on-attack: false + light-queue-size: 20 + max-leash-distance: 10.0 + redstone-implementation: VANILLA + shield-blocking-delay: 5 + show-sign-click-command-failure-msgs-to-player: false + update-pathfinding-on-block-update: true +scoreboards: + allow-non-player-entities-on-scoreboards: true + use-vanilla-world-scoreboard-name-coloring: false +spawn: + allow-using-signs-inside-spawn-protection: false + keep-spawn-loaded: true + keep-spawn-loaded-range: 10 +tick-rates: + behavior: + villager: + validatenearbypoi: -1 + container-update: 1 + grass-spread: 1 + mob-spawner: 1 + sensor: + villager: + secondarypoisensor: 40 +unsupported-settings: + fix-invulnerable-end-crystal-exploit: true diff --git a/examples/papermc/paper/example/eula.txt b/examples/papermc/paper/example/eula.txt new file mode 100644 index 00000000..c64555c2 --- /dev/null +++ b/examples/papermc/paper/example/eula.txt @@ -0,0 +1,3 @@ +#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). +#Mon Aug 21 11:07:07 CST 2023 +eula=true diff --git a/examples/papermc/paper/example/logs/2023-08-22-1.log.gz b/examples/papermc/paper/example/logs/2023-08-22-1.log.gz new file mode 100644 index 00000000..d31f45cc Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-22-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/2023-08-23-1.log.gz b/examples/papermc/paper/example/logs/2023-08-23-1.log.gz new file mode 100644 index 00000000..6195b138 Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-23-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/2023-08-27-1.log.gz b/examples/papermc/paper/example/logs/2023-08-27-1.log.gz new file mode 100644 index 00000000..c139584b Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-27-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/2023-08-28-1.log.gz b/examples/papermc/paper/example/logs/2023-08-28-1.log.gz new file mode 100644 index 00000000..8ebb6b2a Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-28-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/2023-08-29-1.log.gz b/examples/papermc/paper/example/logs/2023-08-29-1.log.gz new file mode 100644 index 00000000..151bbdbf Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-29-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/2023-08-30-1.log.gz b/examples/papermc/paper/example/logs/2023-08-30-1.log.gz new file mode 100644 index 00000000..14bfa94c Binary files /dev/null and b/examples/papermc/paper/example/logs/2023-08-30-1.log.gz differ diff --git a/examples/papermc/paper/example/logs/latest.log b/examples/papermc/paper/example/logs/latest.log new file mode 100644 index 00000000..60ff7db6 --- /dev/null +++ b/examples/papermc/paper/example/logs/latest.log @@ -0,0 +1,34 @@ +[04:00:45] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 7445ms or 148 ticks behind +[09:26:12] [Yggdrasil Key Fetcher/ERROR]: Failed to request yggdrasil public key +com.mojang.authlib.exceptions.AuthenticationUnavailableException: Cannot contact authentication server + at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:119) ~[authlib-4.0.43.jar:?] + at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:91) ~[authlib-4.0.43.jar:?] + at com.mojang.authlib.yggdrasil.YggdrasilServicesKeyInfo.fetch(YggdrasilServicesKeyInfo.java:94) ~[authlib-4.0.43.jar:?] + at com.mojang.authlib.yggdrasil.YggdrasilServicesKeyInfo.lambda$get$1(YggdrasilServicesKeyInfo.java:81) ~[authlib-4.0.43.jar:?] + at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?] + at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?] + at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?] + at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] + at java.lang.Thread.run(Thread.java:833) ~[?:?] +Caused by: java.net.SocketTimeoutException: Connect timed out + at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:551) ~[?:?] + at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) ~[?:?] + at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[?:?] + at java.net.Socket.connect(Socket.java:633) ~[?:?] + at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:304) ~[?:?] + at sun.net.NetworkClient.doConnect(NetworkClient.java:178) ~[?:?] + at sun.net.www.http.HttpClient.openServer(HttpClient.java:533) ~[?:?] + at sun.net.www.http.HttpClient.openServer(HttpClient.java:638) ~[?:?] + at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:266) ~[?:?] + at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380) ~[?:?] + at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:193) ~[?:?] + at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1287) ~[?:?] + at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1128) ~[?:?] + at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:179) ~[?:?] + at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[?:?] + at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?] + at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224) ~[?:?] + at com.mojang.authlib.HttpAuthenticationService.performGetRequest(HttpAuthenticationService.java:140) ~[authlib-4.0.43.jar:?] + at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:96) ~[authlib-4.0.43.jar:?] + ... 9 more diff --git a/examples/papermc/paper/example/plugins/bStats/config.yml b/examples/papermc/paper/example/plugins/bStats/config.yml new file mode 100644 index 00000000..51aa05f2 --- /dev/null +++ b/examples/papermc/paper/example/plugins/bStats/config.yml @@ -0,0 +1,8 @@ +# bStats collects some data for plugin authors like how many servers are using their plugins. +# To honor their work, you should not disable it. +# This has nearly no effect on the server performance! +# Check out https://bStats.org/ to learn more :) + +enabled: true +serverUuid: 4062765f-c9ca-4314-8170-5b58a1d2a7ba +logFailedRequests: false diff --git a/examples/papermc/paper/example/server.properties b/examples/papermc/paper/example/server.properties new file mode 100644 index 00000000..05e986ac --- /dev/null +++ b/examples/papermc/paper/example/server.properties @@ -0,0 +1,59 @@ +#Minecraft server properties +#Tue Aug 22 09:25:57 CST 2023 +enable-jmx-monitoring=false +rcon.port=25575 +level-seed= +gamemode=survival +enable-command-block=false +enable-query=false +generator-settings={} +enforce-secure-profile=true +level-name=world +motd=A Minecraft Server +query.port=25565 +pvp=true +generate-structures=true +max-chained-neighbor-updates=1000000 +difficulty=easy +network-compression-threshold=256 +max-tick-time=60000 +require-resource-pack=false +use-native-transport=true +max-players=20 +online-mode=false +enable-status=true +allow-flight=false +initial-disabled-packs= +broadcast-rcon-to-ops=true +view-distance=10 +server-ip= +resource-pack-prompt= +allow-nether=true +server-port=25565 +enable-rcon=false +sync-chunk-writes=true +op-permission-level=4 +prevent-proxy-connections=false +hide-online-players=false +resource-pack= +entity-broadcast-range-percentage=100 +simulation-distance=10 +rcon.password= +player-idle-timeout=0 +debug=false +force-gamemode=false +rate-limit=0 +hardcore=false +white-list=false +broadcast-console-to-ops=true +spawn-npcs=true +spawn-animals=true +function-permission-level=2 +initial-enabled-packs=vanilla +level-type=minecraft\:normal +text-filtering-config= +spawn-monsters=true +enforce-whitelist=false +spawn-protection=16 +resource-pack-sha1= +max-world-size=29999984 diff --git a/examples/papermc/paper/example/world/data/raids.dat b/examples/papermc/paper/example/world/data/raids.dat new file mode 100644 index 00000000..f92ca8db Binary files /dev/null and b/examples/papermc/paper/example/world/data/raids.dat differ diff --git a/examples/papermc/paper/example/world/data/random_sequences.dat b/examples/papermc/paper/example/world/data/random_sequences.dat new file mode 100644 index 00000000..bbf7206b Binary files /dev/null and b/examples/papermc/paper/example/world/data/random_sequences.dat differ diff --git a/examples/papermc/paper/example/world/datapacks/bukkit/pack.mcmeta b/examples/papermc/paper/example/world/datapacks/bukkit/pack.mcmeta new file mode 100644 index 00000000..6a7353a3 --- /dev/null +++ b/examples/papermc/paper/example/world/datapacks/bukkit/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "Data pack for resources provided by Bukkit plugins", + "pack_format": 15 + } +} diff --git a/examples/papermc/paper/example/world/entities/r.-1.-1.mca b/examples/papermc/paper/example/world/entities/r.-1.-1.mca new file mode 100644 index 00000000..9dca8f00 Binary files /dev/null and b/examples/papermc/paper/example/world/entities/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world/entities/r.-1.0.mca b/examples/papermc/paper/example/world/entities/r.-1.0.mca new file mode 100644 index 00000000..2eb105e3 Binary files /dev/null and b/examples/papermc/paper/example/world/entities/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world/entities/r.0.-1.mca b/examples/papermc/paper/example/world/entities/r.0.-1.mca new file mode 100644 index 00000000..e76669bc Binary files /dev/null and b/examples/papermc/paper/example/world/entities/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world/entities/r.0.0.mca b/examples/papermc/paper/example/world/entities/r.0.0.mca new file mode 100644 index 00000000..05312cda Binary files /dev/null and b/examples/papermc/paper/example/world/entities/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world/level.dat b/examples/papermc/paper/example/world/level.dat new file mode 100644 index 00000000..ff9a30be Binary files /dev/null and b/examples/papermc/paper/example/world/level.dat differ diff --git a/examples/papermc/paper/example/world/level.dat_old b/examples/papermc/paper/example/world/level.dat_old new file mode 100644 index 00000000..f756cc06 Binary files /dev/null and b/examples/papermc/paper/example/world/level.dat_old differ diff --git a/examples/papermc/paper/example/world/paper-world.yml b/examples/papermc/paper/example/world/paper-world.yml new file mode 100644 index 00000000..3fb7f7cd --- /dev/null +++ b/examples/papermc/paper/example/world/paper-world.yml @@ -0,0 +1,6 @@ +# This is a world configuration file for Paper. +# This file may start empty but can be filled with settings to override ones in the config/paper-world-defaults.yml +# +# World: world (minecraft:overworld) + +_version: 30 diff --git a/examples/papermc/paper/example/world/poi/r.-1.-1.mca b/examples/papermc/paper/example/world/poi/r.-1.-1.mca new file mode 100644 index 00000000..c1c7bf58 Binary files /dev/null and b/examples/papermc/paper/example/world/poi/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world/poi/r.0.-1.mca b/examples/papermc/paper/example/world/poi/r.0.-1.mca new file mode 100644 index 00000000..18ed1ec4 Binary files /dev/null and b/examples/papermc/paper/example/world/poi/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world/poi/r.0.0.mca b/examples/papermc/paper/example/world/poi/r.0.0.mca new file mode 100644 index 00000000..da9e1838 Binary files /dev/null and b/examples/papermc/paper/example/world/poi/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world/region/r.-1.-1.mca b/examples/papermc/paper/example/world/region/r.-1.-1.mca new file mode 100644 index 00000000..c1097825 Binary files /dev/null and b/examples/papermc/paper/example/world/region/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world/region/r.-1.0.mca b/examples/papermc/paper/example/world/region/r.-1.0.mca new file mode 100644 index 00000000..dd69ea25 Binary files /dev/null and b/examples/papermc/paper/example/world/region/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world/region/r.0.-1.mca b/examples/papermc/paper/example/world/region/r.0.-1.mca new file mode 100644 index 00000000..898c66a6 Binary files /dev/null and b/examples/papermc/paper/example/world/region/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world/region/r.0.0.mca b/examples/papermc/paper/example/world/region/r.0.0.mca new file mode 100644 index 00000000..67884c03 Binary files /dev/null and b/examples/papermc/paper/example/world/region/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world/session.lock b/examples/papermc/paper/example/world/session.lock new file mode 100644 index 00000000..0d7e5f85 --- /dev/null +++ b/examples/papermc/paper/example/world/session.lock @@ -0,0 +1 @@ +☃ \ No newline at end of file diff --git a/examples/papermc/paper/example/world/uid.dat b/examples/papermc/paper/example/world/uid.dat new file mode 100644 index 00000000..fd1454cf --- /dev/null +++ b/examples/papermc/paper/example/world/uid.dat @@ -0,0 +1 @@ +oEZ! A \ No newline at end of file diff --git a/examples/papermc/paper/example/world_nether/DIM-1/data/raids.dat b/examples/papermc/paper/example/world_nether/DIM-1/data/raids.dat new file mode 100644 index 00000000..f92ca8db Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/data/raids.dat differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.-1.mca b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.-1.mca new file mode 100644 index 00000000..49fecfa6 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.0.mca b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.0.mca new file mode 100644 index 00000000..2b3ee843 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.-1.mca b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.-1.mca new file mode 100644 index 00000000..20791022 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.0.mca b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.0.mca new file mode 100644 index 00000000..a66be52a Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/entities/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.-1.mca b/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.-1.mca new file mode 100644 index 00000000..eae47fd2 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.0.mca b/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.0.mca new file mode 100644 index 00000000..7f89ad66 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/region/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.-1.mca b/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.-1.mca new file mode 100644 index 00000000..cbc378cf Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.0.mca b/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.0.mca new file mode 100644 index 00000000..2c149099 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/DIM-1/region/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world_nether/level.dat b/examples/papermc/paper/example/world_nether/level.dat new file mode 100644 index 00000000..1829acd1 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/level.dat differ diff --git a/examples/papermc/paper/example/world_nether/level.dat_old b/examples/papermc/paper/example/world_nether/level.dat_old new file mode 100644 index 00000000..019d6081 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/level.dat_old differ diff --git a/examples/papermc/paper/example/world_nether/paper-world.yml b/examples/papermc/paper/example/world_nether/paper-world.yml new file mode 100644 index 00000000..3f276e79 --- /dev/null +++ b/examples/papermc/paper/example/world_nether/paper-world.yml @@ -0,0 +1,6 @@ +# This is a world configuration file for Paper. +# This file may start empty but can be filled with settings to override ones in the config/paper-world-defaults.yml +# +# World: world_nether (minecraft:the_nether) + +_version: 30 diff --git a/examples/papermc/paper/example/world_nether/session.lock b/examples/papermc/paper/example/world_nether/session.lock new file mode 100644 index 00000000..0d7e5f85 --- /dev/null +++ b/examples/papermc/paper/example/world_nether/session.lock @@ -0,0 +1 @@ +☃ \ No newline at end of file diff --git a/examples/papermc/paper/example/world_nether/uid.dat b/examples/papermc/paper/example/world_nether/uid.dat new file mode 100644 index 00000000..9fe49f54 Binary files /dev/null and b/examples/papermc/paper/example/world_nether/uid.dat differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/data/raids_end.dat b/examples/papermc/paper/example/world_the_end/DIM1/data/raids_end.dat new file mode 100644 index 00000000..f92ca8db Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/data/raids_end.dat differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.-1.mca b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.-1.mca new file mode 100644 index 00000000..586003c9 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.0.mca b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.0.mca new file mode 100644 index 00000000..aad189de Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.-1.mca b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.-1.mca new file mode 100644 index 00000000..e1a15441 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.0.mca b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.0.mca new file mode 100644 index 00000000..9a690fea Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/entities/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.-1.mca b/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.-1.mca new file mode 100644 index 00000000..765a288e Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.-1.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.0.mca b/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.0.mca new file mode 100644 index 00000000..97e96ce0 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/region/r.-1.0.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.-1.mca b/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.-1.mca new file mode 100644 index 00000000..f15cf57e Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.-1.mca differ diff --git a/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.0.mca b/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.0.mca new file mode 100644 index 00000000..55054dc4 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/DIM1/region/r.0.0.mca differ diff --git a/examples/papermc/paper/example/world_the_end/level.dat b/examples/papermc/paper/example/world_the_end/level.dat new file mode 100644 index 00000000..e285abb2 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/level.dat differ diff --git a/examples/papermc/paper/example/world_the_end/level.dat_old b/examples/papermc/paper/example/world_the_end/level.dat_old new file mode 100644 index 00000000..6fca5ec3 Binary files /dev/null and b/examples/papermc/paper/example/world_the_end/level.dat_old differ diff --git a/examples/papermc/paper/example/world_the_end/paper-world.yml b/examples/papermc/paper/example/world_the_end/paper-world.yml new file mode 100644 index 00000000..adf1f4fc --- /dev/null +++ b/examples/papermc/paper/example/world_the_end/paper-world.yml @@ -0,0 +1,6 @@ +# This is a world configuration file for Paper. +# This file may start empty but can be filled with settings to override ones in the config/paper-world-defaults.yml +# +# World: world_the_end (minecraft:the_end) + +_version: 30 diff --git a/examples/papermc/paper/example/world_the_end/session.lock b/examples/papermc/paper/example/world_the_end/session.lock new file mode 100644 index 00000000..0d7e5f85 --- /dev/null +++ b/examples/papermc/paper/example/world_the_end/session.lock @@ -0,0 +1 @@ +☃ \ No newline at end of file diff --git a/examples/papermc/paper/example/world_the_end/uid.dat b/examples/papermc/paper/example/world_the_end/uid.dat new file mode 100644 index 00000000..81db57dd --- /dev/null +++ b/examples/papermc/paper/example/world_the_end/uid.dat @@ -0,0 +1 @@ +S|B!]| D4 \ No newline at end of file diff --git a/examples/papermc/velocity/alpine/dockerfile b/examples/papermc/velocity/alpine/dockerfile new file mode 100644 index 00000000..3c0809f0 --- /dev/null +++ b/examples/papermc/velocity/alpine/dockerfile @@ -0,0 +1,55 @@ +# 配置参数(指定基础镜像版本) +ARG BASE_TAG=11.0.20-alpine3.18 + +# 基于 Amazon Corretto 构建 +FROM amazoncorretto:$BASE_TAG + +# 指定端口号 +EXPOSE 25577 + +# 配置参数 +ARG GROUP_ID=1024 \ + GROUP_NAME=papermc \ + USER_ID=1024 \ + USER_NAME=papermc \ + USER_HOME=/home/papermc \ + USER_SHELL=/bin/bash + +# 更新应用并安装基础应用 +RUN set -ex && \ + apk add tzdata && \ + apk add --no-cache bash bash-doc bash-completion + +# 设置时区、新建用户组及用户、配置目录权限 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ + addgroup $GROUP_NAME -g $GROUP_ID && \ + adduser $USER_NAME -G $GROUP_NAME -h $USER_HOME -s $USER_SHELL -u $USER_ID -D && \ + mkdir -pv $USER_HOME && \ + chown -R $GROUP_NAME.$USER_NAME $USER_HOME + +# 配置环境变量 +ARG PAPERMC_VELOCITY_VERSION=3.2.0-SNAPSHOT-265 +ENV PAPERMC_VELOCITY_VERSION=$PAPERMC_VELOCITY_VERSION \ + PAPERMC_VELOCITY_HOME=/opt/papermc/velocity \ + PAPERMC_VELOCITY_DATA_DIR=/opt/papermc/velocity + +# 安装 PaperMC Server +COPY velocity-$PAPERMC_VELOCITY_VERSION.jar $PAPERMC_VELOCITY_HOME/velocity-$PAPERMC_VELOCITY_VERSION.jar +COPY velocity.toml $PAPERMC_VELOCITY_HOME/velocity.toml +COPY forwarding.secret $PAPERMC_VELOCITY_HOME/forwarding.secret +COPY entrypoint.sh $PAPERMC_VELOCITY_HOME/entrypoint.sh +RUN mkdir -pv $PAPERMC_VELOCITY_DATA_DIR && \ + chown -R $GROUP_NAME.$USER_NAME $PAPERMC_VELOCITY_HOME $PAPERMC_VELOCITY_DATA_DIR && \ + chmod -R 755 $PAPERMC_VELOCITY_HOME $PAPERMC_VELOCITY_DATA_DIR + +# 设置工作目录 +WORKDIR $PAPERMC_VELOCITY_HOME + +# 设置默认挂载目录 +VOLUME [$PAPERMC_VELOCITY_HOME/plugins, $PAPERMC_VELOCITY_HOME/logs] + +# 设置启动用户 +USER $GROUP_NAME:$USER_NAME + +# 设置执行启动脚本 +CMD ["/bin/bash","-c","./entrypoint.sh"] diff --git a/examples/papermc/velocity/alpine/entrypoint.sh b/examples/papermc/velocity/alpine/entrypoint.sh new file mode 100755 index 00000000..43a801c8 --- /dev/null +++ b/examples/papermc/velocity/alpine/entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo '====================================================================================================' +echo `date +%Y-%m-%d` `date +%H:%M:%S` +echo '============================== 开始启动 PaperMC Velocity...... ==============================' +echo 'PaperMC Velocity 版本号:' $PAPERMC_VELOCITY_VERSION +echo 'PaperMC Velocity 工作目录:' $PAPERMC_VELOCITY_HOME +echo 'PaperMC Velocity 监听端口:25577' +echo '数据文件目录:' $PAPERMC_VELOCITY_DATA_DIR +echo '----------------------------------------------------------------------------------------------------' +java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar $PAPERMC_VELOCITY_HOME/velocity-$PAPERMC_VELOCITY_VERSION.jar diff --git a/examples/papermc/velocity/alpine/forwarding.secret b/examples/papermc/velocity/alpine/forwarding.secret new file mode 100644 index 00000000..d0f8811f --- /dev/null +++ b/examples/papermc/velocity/alpine/forwarding.secret @@ -0,0 +1 @@ +OiXweorTzCig \ No newline at end of file diff --git a/examples/papermc/velocity/alpine/velocity-3.2.0-SNAPSHOT-265.jar b/examples/papermc/velocity/alpine/velocity-3.2.0-SNAPSHOT-265.jar new file mode 100644 index 00000000..37b38ed2 Binary files /dev/null and b/examples/papermc/velocity/alpine/velocity-3.2.0-SNAPSHOT-265.jar differ diff --git a/examples/papermc/velocity/alpine/velocity.toml b/examples/papermc/velocity/alpine/velocity.toml new file mode 100644 index 00000000..0f18208b --- /dev/null +++ b/examples/papermc/velocity/alpine/velocity.toml @@ -0,0 +1,155 @@ +# Config version. Do not change this +config-version = "2.6" + +# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577. +bind = "0.0.0.0:25577" + +# What should be the MOTD? This gets displayed when the player adds your server to +# their server list. Only MiniMessage format is accepted. +motd = "<#09add3>A Velocity Server" + +# What should we display for the maximum number of players? (Velocity does not support a cap +# on the number of players online.) +show-max-players = 500 + +# Should we authenticate players with Mojang? By default, this is on. +online-mode = true + +# Should the proxy enforce the new public key security standard? By default, this is on. +force-key-authentication = true + +# If client's ISP/AS sent from this proxy is different from the one from Mojang's +# authentication server, the player is kicked. This disallows some VPN and proxy +# connections but is a weak form of protection. +prevent-client-proxy-connections = false + +# Should we forward IP addresses and other data to backend servers? +# Available options: +# - "none": No forwarding will be done. All players will appear to be connecting +# from the proxy and will have offline-mode UUIDs. +# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this +# if you run servers using Minecraft 1.12 or lower. +# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard +# plugin. Use this if you run servers using Minecraft 1.12 or lower, and are +# unable to implement network level firewalling (on a shared host). +# - "modern": Forward player IPs and UUIDs as part of the login process using +# Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher. +player-info-forwarding-mode = "NONE" + +# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here. +# The file is expected to be UTF-8 encoded and not empty. +forwarding-secret-file = "forwarding.secret" + +# Announce whether or not your server supports Forge. If you run a modded server, we +# suggest turning this on. +# +# If your network runs one modpack consistently, consider using ping-passthrough = "mods" +# instead for a nicer display in the server list. +announce-forge = false + +# If enabled (default is false) and the proxy is in online mode, Velocity will kick +# any existing player who is online if a duplicate connection attempt is made. +kick-existing-players = false + +# Should Velocity pass server list ping requests to a backend server? +# Available options: +# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png +# will determine the initial server list ping response. +# - "mods": Passes only the mod list from your backend server into the response. +# The first server in your try list (or forced host) with a mod list will be +# used. If no backend servers can be contacted, Velocity won't display any +# mod information. +# - "description": Uses the description and mod list from the backend server. The first +# server in the try (or forced host) list that responds is used for the +# description and mod list. +# - "all": Uses the backend server's response as the proxy response. The Velocity +# configuration is used if no servers could be contacted. +ping-passthrough = "DISABLED" + +# If not enabled (default is true) player IP addresses will be replaced by in logs +enable-player-address-logging = true + +[servers] +# Configure your servers here. Each key represents the server's name, and the value +# represents the IP address of the server to connect to. +lobby = "127.0.0.1:30066" +factions = "127.0.0.1:30067" +minigames = "127.0.0.1:30068" + +# In what order we should try servers when a player logs in or is kicked from a server. +try = [ + "lobby" +] + +[forced-hosts] +# Configure your forced hosts here. +"lobby.example.com" = [ + "lobby" +] +"factions.example.com" = [ + "factions" +] +"minigames.example.com" = [ + "minigames" +] + +[advanced] +# How large a Minecraft packet has to be before we compress it. Setting this to zero will +# compress all packets, and setting it to -1 will disable compression entirely. +compression-threshold = 256 + +# How much compression should be done (from 0-9). The default is -1, which uses the +# default level of 6. +compression-level = -1 + +# How fast (in milliseconds) are clients allowed to connect after the last connection? By +# default, this is three seconds. Disable this by setting this to 0. +login-ratelimit = 3000 + +# Specify a custom timeout for connection timeouts here. The default is five seconds. +connection-timeout = 5000 + +# Specify a read timeout for connections here. The default is 30 seconds. +read-timeout = 30000 + +# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then +# don't enable it. +haproxy-protocol = false + +# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux. +tcp-fast-open = false + +# Enables BungeeCord plugin messaging channel support on Velocity. +bungee-plugin-message-channel = true + +# Shows ping requests to the proxy from clients. +show-ping-requests = false + +# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly +# loses connection to the server without an explicit disconnect message by attempting to fall the +# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You +# can disable this setting to use the BungeeCord behavior. +failover-on-unexpected-server-disconnect = true + +# Declares the proxy commands to 1.13+ clients. +announce-proxy-commands = true + +# Enables the logging of commands +log-command-executions = false + +# Enables logging of player connections when connecting to the proxy, switching servers +# and disconnecting from the proxy. +log-player-connections = true + +[query] +# Whether to enable responding to GameSpy 4 query responses or not. +enabled = false + +# If query is enabled, on what port should the query protocol listen on? +port = 25577 + +# This is the map name that is reported to the query services. +map = "Velocity" + +# Whether plugins should be shown in query response by default or not +show-plugins = false diff --git a/examples/papermc/velocity/example/compose.yaml b/examples/papermc/velocity/example/compose.yaml new file mode 100644 index 00000000..4f72bcd0 --- /dev/null +++ b/examples/papermc/velocity/example/compose.yaml @@ -0,0 +1,23 @@ +version: "3.9" + +services: + papermc-velocity: +# image: hty1024/papermc/velocity:3.2.0-SNAPSHOT-265 + image: hty1024/papermc/velocity:3.2.0-SNAPSHOT-265-alpine + container_name: papermc-velocity + restart: always + volumes: + - /etc/localtime:/etc/localtime:ro + - ./velocity.toml:/opt/papermc/velocity/velocity.toml + - ./forwarding.secret:/opt/papermc/velocity/forwarding.secret + - ./plugins:/opt/papermc/velocity/plugins + - ./logs:/opt/papermc/velocity/logs + ports: + - "25577:25577" + networks: + - app_network + +networks: + app_network: + external: true + name: app_network diff --git a/examples/papermc/velocity/example/forwarding.secret b/examples/papermc/velocity/example/forwarding.secret new file mode 100644 index 00000000..bf64d304 --- /dev/null +++ b/examples/papermc/velocity/example/forwarding.secret @@ -0,0 +1 @@ +CEqNAMuCv85AGSjn diff --git a/examples/papermc/velocity/example/logs/latest.log b/examples/papermc/velocity/example/logs/latest.log new file mode 100644 index 00000000..b31b9574 --- /dev/null +++ b/examples/papermc/velocity/example/logs/latest.log @@ -0,0 +1,13 @@ +[09:29:40] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Booting up Velocity 3.2.0-SNAPSHOT (git-19abb909-b265)... +[09:29:40] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loading localizations... +[09:29:40] [main/INFO] [com.velocitypowered.proxy.network.ConnectionManager]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 3.0.x (Linux x86_64) ciphers +[09:29:40] [main/WARN] [com.velocitypowered.proxy.config.VelocityConfiguration]: Player info forwarding is disabled! All players will appear to be connecting from the proxy and will have offline-mode UUIDs. +[09:29:40] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loading plugins... +[09:29:40] [main/INFO] [com.velocitypowered.proxy.VelocityServer]: Loaded 0 plugins +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Metrics]: Velocity and some of its plugins collect metrics and send them to bStats (https://bStats.org). +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Metrics]: bStats collects some basic information for plugin authors, like how many people use +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Metrics]: their plugin and their total player count. It's recommended to keep bStats enabled, but +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Metrics]: if you're not comfortable with this, you can opt-out by editing the config.txt file in +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Metrics]: the '/plugins/bStats/' folder and setting enabled to false. +[09:29:41] [main/INFO] [com.velocitypowered.proxy.Velocity]: Done (1.57s)! +[09:29:41] [Netty epoll Boss #0/INFO] [com.velocitypowered.proxy.network.ConnectionManager]: Listening on /0.0.0.0:25577 diff --git a/examples/papermc/velocity/example/plugins/bStats/config.txt b/examples/papermc/velocity/example/plugins/bStats/config.txt new file mode 100644 index 00000000..df696e1e --- /dev/null +++ b/examples/papermc/velocity/example/plugins/bStats/config.txt @@ -0,0 +1,10 @@ +# bStats (https://bStats.org) collects some basic information for plugin authors, like +# how many people use their plugin and their total player count. It's recommended to keep +# bStats enabled, but if you're not comfortable with this, you can turn this setting off. +# There is no performance penalty associated with having metrics enabled, and data sent to +# bStats is fully anonymous. +enabled=true +server-uuid=3a00e61a-2c29-4da7-a066-755532f7d936 +log-errors=false +log-sent-data=false +log-response-status-text=false diff --git a/examples/papermc/velocity/example/velocity.toml b/examples/papermc/velocity/example/velocity.toml new file mode 100644 index 00000000..0f18208b --- /dev/null +++ b/examples/papermc/velocity/example/velocity.toml @@ -0,0 +1,155 @@ +# Config version. Do not change this +config-version = "2.6" + +# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577. +bind = "0.0.0.0:25577" + +# What should be the MOTD? This gets displayed when the player adds your server to +# their server list. Only MiniMessage format is accepted. +motd = "<#09add3>A Velocity Server" + +# What should we display for the maximum number of players? (Velocity does not support a cap +# on the number of players online.) +show-max-players = 500 + +# Should we authenticate players with Mojang? By default, this is on. +online-mode = true + +# Should the proxy enforce the new public key security standard? By default, this is on. +force-key-authentication = true + +# If client's ISP/AS sent from this proxy is different from the one from Mojang's +# authentication server, the player is kicked. This disallows some VPN and proxy +# connections but is a weak form of protection. +prevent-client-proxy-connections = false + +# Should we forward IP addresses and other data to backend servers? +# Available options: +# - "none": No forwarding will be done. All players will appear to be connecting +# from the proxy and will have offline-mode UUIDs. +# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use this +# if you run servers using Minecraft 1.12 or lower. +# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard +# plugin. Use this if you run servers using Minecraft 1.12 or lower, and are +# unable to implement network level firewalling (on a shared host). +# - "modern": Forward player IPs and UUIDs as part of the login process using +# Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher. +player-info-forwarding-mode = "NONE" + +# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here. +# The file is expected to be UTF-8 encoded and not empty. +forwarding-secret-file = "forwarding.secret" + +# Announce whether or not your server supports Forge. If you run a modded server, we +# suggest turning this on. +# +# If your network runs one modpack consistently, consider using ping-passthrough = "mods" +# instead for a nicer display in the server list. +announce-forge = false + +# If enabled (default is false) and the proxy is in online mode, Velocity will kick +# any existing player who is online if a duplicate connection attempt is made. +kick-existing-players = false + +# Should Velocity pass server list ping requests to a backend server? +# Available options: +# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png +# will determine the initial server list ping response. +# - "mods": Passes only the mod list from your backend server into the response. +# The first server in your try list (or forced host) with a mod list will be +# used. If no backend servers can be contacted, Velocity won't display any +# mod information. +# - "description": Uses the description and mod list from the backend server. The first +# server in the try (or forced host) list that responds is used for the +# description and mod list. +# - "all": Uses the backend server's response as the proxy response. The Velocity +# configuration is used if no servers could be contacted. +ping-passthrough = "DISABLED" + +# If not enabled (default is true) player IP addresses will be replaced by in logs +enable-player-address-logging = true + +[servers] +# Configure your servers here. Each key represents the server's name, and the value +# represents the IP address of the server to connect to. +lobby = "127.0.0.1:30066" +factions = "127.0.0.1:30067" +minigames = "127.0.0.1:30068" + +# In what order we should try servers when a player logs in or is kicked from a server. +try = [ + "lobby" +] + +[forced-hosts] +# Configure your forced hosts here. +"lobby.example.com" = [ + "lobby" +] +"factions.example.com" = [ + "factions" +] +"minigames.example.com" = [ + "minigames" +] + +[advanced] +# How large a Minecraft packet has to be before we compress it. Setting this to zero will +# compress all packets, and setting it to -1 will disable compression entirely. +compression-threshold = 256 + +# How much compression should be done (from 0-9). The default is -1, which uses the +# default level of 6. +compression-level = -1 + +# How fast (in milliseconds) are clients allowed to connect after the last connection? By +# default, this is three seconds. Disable this by setting this to 0. +login-ratelimit = 3000 + +# Specify a custom timeout for connection timeouts here. The default is five seconds. +connection-timeout = 5000 + +# Specify a read timeout for connections here. The default is 30 seconds. +read-timeout = 30000 + +# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then +# don't enable it. +haproxy-protocol = false + +# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux. +tcp-fast-open = false + +# Enables BungeeCord plugin messaging channel support on Velocity. +bungee-plugin-message-channel = true + +# Shows ping requests to the proxy from clients. +show-ping-requests = false + +# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly +# loses connection to the server without an explicit disconnect message by attempting to fall the +# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You +# can disable this setting to use the BungeeCord behavior. +failover-on-unexpected-server-disconnect = true + +# Declares the proxy commands to 1.13+ clients. +announce-proxy-commands = true + +# Enables the logging of commands +log-command-executions = false + +# Enables logging of player connections when connecting to the proxy, switching servers +# and disconnecting from the proxy. +log-player-connections = true + +[query] +# Whether to enable responding to GameSpy 4 query responses or not. +enabled = false + +# If query is enabled, on what port should the query protocol listen on? +port = 25577 + +# This is the map name that is reported to the query services. +map = "Velocity" + +# Whether plugins should be shown in query response by default or not +show-plugins = false