From 861e6c89f1a92176011a6317fcc375d590616900 Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Sun, 1 Jun 2025 22:10:20 +0300 Subject: [PATCH 1/5] change project structure to be able to integrate with docker --- .gitignore | 17 +---------------- forwarding.secret | 1 - src/forwarding.secret | 1 + {lang => src/lang}/messages.properties | 0 {lang => src/lang}/messages_ar_SA.properties | 0 {lang => src/lang}/messages_bg_BG.properties | 0 {lang => src/lang}/messages_cs_CZ.properties | 0 {lang => src/lang}/messages_da_DK.properties | 0 {lang => src/lang}/messages_de_DE.properties | 0 {lang => src/lang}/messages_es_ES.properties | 0 {lang => src/lang}/messages_et_EE.properties | 0 {lang => src/lang}/messages_fi_FI.properties | 0 {lang => src/lang}/messages_fr_FR.properties | 0 {lang => src/lang}/messages_he_IL.properties | 0 {lang => src/lang}/messages_hu_HU.properties | 0 {lang => src/lang}/messages_it_IT.properties | 0 {lang => src/lang}/messages_ja_JP.properties | 0 {lang => src/lang}/messages_ko_KR.properties | 0 {lang => src/lang}/messages_nb_NO.properties | 0 {lang => src/lang}/messages_nl_NL.properties | 0 {lang => src/lang}/messages_nn_NO.properties | 0 {lang => src/lang}/messages_pl_PL.properties | 0 {lang => src/lang}/messages_pt_BR.properties | 0 {lang => src/lang}/messages_ro_RO.properties | 0 {lang => src/lang}/messages_ru_RU.properties | 0 {lang => src/lang}/messages_sk_SK.properties | 0 {lang => src/lang}/messages_sq_AL.properties | 0 {lang => src/lang}/messages_sr_CS.properties | 0 {lang => src/lang}/messages_sr_Latn.properties | 0 {lang => src/lang}/messages_sv_SE.properties | 0 {lang => src/lang}/messages_tl_PH.properties | 0 {lang => src/lang}/messages_tr_TR.properties | 0 {lang => src/lang}/messages_uk_UA.properties | 0 {lang => src/lang}/messages_vi_VN.properties | 0 {lang => src/lang}/messages_zh_CN.properties | 0 {lang => src/lang}/messages_zh_HK.properties | 0 {lang => src/lang}/messages_zh_TW.properties | 0 {plugins => src/plugins}/bStats/config.txt | 0 run.bat => src/run.bat | 2 +- run.sh => src/run.sh | 2 +- .../velocity-3.4.0-SNAPSHOT-503.jar | 0 velocity.toml => src/velocity.toml | 0 42 files changed, 4 insertions(+), 19 deletions(-) delete mode 100644 forwarding.secret create mode 100644 src/forwarding.secret rename {lang => src/lang}/messages.properties (100%) rename {lang => src/lang}/messages_ar_SA.properties (100%) rename {lang => src/lang}/messages_bg_BG.properties (100%) rename {lang => src/lang}/messages_cs_CZ.properties (100%) rename {lang => src/lang}/messages_da_DK.properties (100%) rename {lang => src/lang}/messages_de_DE.properties (100%) rename {lang => src/lang}/messages_es_ES.properties (100%) rename {lang => src/lang}/messages_et_EE.properties (100%) rename {lang => src/lang}/messages_fi_FI.properties (100%) rename {lang => src/lang}/messages_fr_FR.properties (100%) rename {lang => src/lang}/messages_he_IL.properties (100%) rename {lang => src/lang}/messages_hu_HU.properties (100%) rename {lang => src/lang}/messages_it_IT.properties (100%) rename {lang => src/lang}/messages_ja_JP.properties (100%) rename {lang => src/lang}/messages_ko_KR.properties (100%) rename {lang => src/lang}/messages_nb_NO.properties (100%) rename {lang => src/lang}/messages_nl_NL.properties (100%) rename {lang => src/lang}/messages_nn_NO.properties (100%) rename {lang => src/lang}/messages_pl_PL.properties (100%) rename {lang => src/lang}/messages_pt_BR.properties (100%) rename {lang => src/lang}/messages_ro_RO.properties (100%) rename {lang => src/lang}/messages_ru_RU.properties (100%) rename {lang => src/lang}/messages_sk_SK.properties (100%) rename {lang => src/lang}/messages_sq_AL.properties (100%) rename {lang => src/lang}/messages_sr_CS.properties (100%) rename {lang => src/lang}/messages_sr_Latn.properties (100%) rename {lang => src/lang}/messages_sv_SE.properties (100%) rename {lang => src/lang}/messages_tl_PH.properties (100%) rename {lang => src/lang}/messages_tr_TR.properties (100%) rename {lang => src/lang}/messages_uk_UA.properties (100%) rename {lang => src/lang}/messages_vi_VN.properties (100%) rename {lang => src/lang}/messages_zh_CN.properties (100%) rename {lang => src/lang}/messages_zh_HK.properties (100%) rename {lang => src/lang}/messages_zh_TW.properties (100%) rename {plugins => src/plugins}/bStats/config.txt (100%) rename run.bat => src/run.bat (74%) rename run.sh => src/run.sh (73%) rename velocity-3.4.0-SNAPSHOT-503.jar => src/velocity-3.4.0-SNAPSHOT-503.jar (100%) rename velocity.toml => src/velocity.toml (100%) diff --git a/.gitignore b/.gitignore index ed708a8..9e0bfdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1 @@ -cache -libraries -logs -versions - -world -world_nether -world_the_end - -./.console_history - -banned-ips.json -banned-players.json -ops.json -whitelist.json -usercache.json +*/logs diff --git a/forwarding.secret b/forwarding.secret deleted file mode 100644 index 48550f9..0000000 --- a/forwarding.secret +++ /dev/null @@ -1 +0,0 @@ -gWlMDmsD2kAI \ No newline at end of file diff --git a/src/forwarding.secret b/src/forwarding.secret new file mode 100644 index 0000000..329f8df --- /dev/null +++ b/src/forwarding.secret @@ -0,0 +1 @@ +${PROXY_FORWARDING_SECRET} diff --git a/lang/messages.properties b/src/lang/messages.properties similarity index 100% rename from lang/messages.properties rename to src/lang/messages.properties diff --git a/lang/messages_ar_SA.properties b/src/lang/messages_ar_SA.properties similarity index 100% rename from lang/messages_ar_SA.properties rename to src/lang/messages_ar_SA.properties diff --git a/lang/messages_bg_BG.properties b/src/lang/messages_bg_BG.properties similarity index 100% rename from lang/messages_bg_BG.properties rename to src/lang/messages_bg_BG.properties diff --git a/lang/messages_cs_CZ.properties b/src/lang/messages_cs_CZ.properties similarity index 100% rename from lang/messages_cs_CZ.properties rename to src/lang/messages_cs_CZ.properties diff --git a/lang/messages_da_DK.properties b/src/lang/messages_da_DK.properties similarity index 100% rename from lang/messages_da_DK.properties rename to src/lang/messages_da_DK.properties diff --git a/lang/messages_de_DE.properties b/src/lang/messages_de_DE.properties similarity index 100% rename from lang/messages_de_DE.properties rename to src/lang/messages_de_DE.properties diff --git a/lang/messages_es_ES.properties b/src/lang/messages_es_ES.properties similarity index 100% rename from lang/messages_es_ES.properties rename to src/lang/messages_es_ES.properties diff --git a/lang/messages_et_EE.properties b/src/lang/messages_et_EE.properties similarity index 100% rename from lang/messages_et_EE.properties rename to src/lang/messages_et_EE.properties diff --git a/lang/messages_fi_FI.properties b/src/lang/messages_fi_FI.properties similarity index 100% rename from lang/messages_fi_FI.properties rename to src/lang/messages_fi_FI.properties diff --git a/lang/messages_fr_FR.properties b/src/lang/messages_fr_FR.properties similarity index 100% rename from lang/messages_fr_FR.properties rename to src/lang/messages_fr_FR.properties diff --git a/lang/messages_he_IL.properties b/src/lang/messages_he_IL.properties similarity index 100% rename from lang/messages_he_IL.properties rename to src/lang/messages_he_IL.properties diff --git a/lang/messages_hu_HU.properties b/src/lang/messages_hu_HU.properties similarity index 100% rename from lang/messages_hu_HU.properties rename to src/lang/messages_hu_HU.properties diff --git a/lang/messages_it_IT.properties b/src/lang/messages_it_IT.properties similarity index 100% rename from lang/messages_it_IT.properties rename to src/lang/messages_it_IT.properties diff --git a/lang/messages_ja_JP.properties b/src/lang/messages_ja_JP.properties similarity index 100% rename from lang/messages_ja_JP.properties rename to src/lang/messages_ja_JP.properties diff --git a/lang/messages_ko_KR.properties b/src/lang/messages_ko_KR.properties similarity index 100% rename from lang/messages_ko_KR.properties rename to src/lang/messages_ko_KR.properties diff --git a/lang/messages_nb_NO.properties b/src/lang/messages_nb_NO.properties similarity index 100% rename from lang/messages_nb_NO.properties rename to src/lang/messages_nb_NO.properties diff --git a/lang/messages_nl_NL.properties b/src/lang/messages_nl_NL.properties similarity index 100% rename from lang/messages_nl_NL.properties rename to src/lang/messages_nl_NL.properties diff --git a/lang/messages_nn_NO.properties b/src/lang/messages_nn_NO.properties similarity index 100% rename from lang/messages_nn_NO.properties rename to src/lang/messages_nn_NO.properties diff --git a/lang/messages_pl_PL.properties b/src/lang/messages_pl_PL.properties similarity index 100% rename from lang/messages_pl_PL.properties rename to src/lang/messages_pl_PL.properties diff --git a/lang/messages_pt_BR.properties b/src/lang/messages_pt_BR.properties similarity index 100% rename from lang/messages_pt_BR.properties rename to src/lang/messages_pt_BR.properties diff --git a/lang/messages_ro_RO.properties b/src/lang/messages_ro_RO.properties similarity index 100% rename from lang/messages_ro_RO.properties rename to src/lang/messages_ro_RO.properties diff --git a/lang/messages_ru_RU.properties b/src/lang/messages_ru_RU.properties similarity index 100% rename from lang/messages_ru_RU.properties rename to src/lang/messages_ru_RU.properties diff --git a/lang/messages_sk_SK.properties b/src/lang/messages_sk_SK.properties similarity index 100% rename from lang/messages_sk_SK.properties rename to src/lang/messages_sk_SK.properties diff --git a/lang/messages_sq_AL.properties b/src/lang/messages_sq_AL.properties similarity index 100% rename from lang/messages_sq_AL.properties rename to src/lang/messages_sq_AL.properties diff --git a/lang/messages_sr_CS.properties b/src/lang/messages_sr_CS.properties similarity index 100% rename from lang/messages_sr_CS.properties rename to src/lang/messages_sr_CS.properties diff --git a/lang/messages_sr_Latn.properties b/src/lang/messages_sr_Latn.properties similarity index 100% rename from lang/messages_sr_Latn.properties rename to src/lang/messages_sr_Latn.properties diff --git a/lang/messages_sv_SE.properties b/src/lang/messages_sv_SE.properties similarity index 100% rename from lang/messages_sv_SE.properties rename to src/lang/messages_sv_SE.properties diff --git a/lang/messages_tl_PH.properties b/src/lang/messages_tl_PH.properties similarity index 100% rename from lang/messages_tl_PH.properties rename to src/lang/messages_tl_PH.properties diff --git a/lang/messages_tr_TR.properties b/src/lang/messages_tr_TR.properties similarity index 100% rename from lang/messages_tr_TR.properties rename to src/lang/messages_tr_TR.properties diff --git a/lang/messages_uk_UA.properties b/src/lang/messages_uk_UA.properties similarity index 100% rename from lang/messages_uk_UA.properties rename to src/lang/messages_uk_UA.properties diff --git a/lang/messages_vi_VN.properties b/src/lang/messages_vi_VN.properties similarity index 100% rename from lang/messages_vi_VN.properties rename to src/lang/messages_vi_VN.properties diff --git a/lang/messages_zh_CN.properties b/src/lang/messages_zh_CN.properties similarity index 100% rename from lang/messages_zh_CN.properties rename to src/lang/messages_zh_CN.properties diff --git a/lang/messages_zh_HK.properties b/src/lang/messages_zh_HK.properties similarity index 100% rename from lang/messages_zh_HK.properties rename to src/lang/messages_zh_HK.properties diff --git a/lang/messages_zh_TW.properties b/src/lang/messages_zh_TW.properties similarity index 100% rename from lang/messages_zh_TW.properties rename to src/lang/messages_zh_TW.properties diff --git a/plugins/bStats/config.txt b/src/plugins/bStats/config.txt similarity index 100% rename from plugins/bStats/config.txt rename to src/plugins/bStats/config.txt diff --git a/run.bat b/src/run.bat similarity index 74% rename from run.bat rename to src/run.bat index 1614d1a..b2f5831 100755 --- a/run.bat +++ b/src/run.bat @@ -1,3 +1,3 @@ @echo off -java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar +java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar pause diff --git a/run.sh b/src/run.sh similarity index 73% rename from run.sh rename to src/run.sh index 5508703..1acd63e 100755 --- a/run.sh +++ b/src/run.sh @@ -1,3 +1,3 @@ #!/bin/sh -java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity*.jar +java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar diff --git a/velocity-3.4.0-SNAPSHOT-503.jar b/src/velocity-3.4.0-SNAPSHOT-503.jar similarity index 100% rename from velocity-3.4.0-SNAPSHOT-503.jar rename to src/velocity-3.4.0-SNAPSHOT-503.jar diff --git a/velocity.toml b/src/velocity.toml similarity index 100% rename from velocity.toml rename to src/velocity.toml From f2510b37f20bed731b4d2887370beec52c27e672 Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Sun, 1 Jun 2025 22:10:31 +0300 Subject: [PATCH 2/5] add Dockerfile --- .dockerignore | 1 + Dockerfile | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9e0bfdc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +*/logs diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d33cca9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM sapmachine:21-jre-headless-ubuntu + + +ENV WORKDIR_PATH=/workspace +ENV CONFIG_PATH=${WORKDIR_PATH}/config +ENV DATA_PATH=${WORKDIR_PATH}/data + +ADD ./src ${CONFIG_PATH} +RUN mkdir ${DATA_PATH} + + +RUN mkdir ${DATA_PATH}/logs && \ + ln -sf ${DATA_PATH}/logs ${CONFIG_PATH} + +VOLUME ${DATA_PATH} + + +ENV MEMORY=4G + +WORKDIR ${WORKDIR_PATH}/config + +EXPOSE 25565/tcp + +CMD java -Xms${MEMORY} -Xmx${MEMORY} -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar From 80a5cca4c9dd7d09683b4760011d0bc6d69b0b8b Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Mon, 2 Jun 2025 00:38:07 +0300 Subject: [PATCH 3/5] add action to build docker containers --- .github/workflows/build-docker.yml | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/build-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 0000000..f6b4558 --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,47 @@ +--- + +on: + push: + branches: + - main + - develop + - feature-42 + +jobs: + build-docker: + runs-on: ubuntu-latest + env: + registry: gitea.cuqmbr.xyz + steps: + - name: Login to Docker Container Registry + uses: docker/login-action@v3 + with: + registry: ${{env.registry}} + username: ${{vars.DOCKER_USER}} + password: ${{secrets.DOCKER_TOKEN}} + - name: Checkout repository + uses: actions/checkout@v4 + # https://github.com/actions/checkout/issues/1830 + # https://gitea.com/gitea/act_runner/issues/164 + - name: Checkout lfs + run: | + git lfs install --local + AUTH=$(git config --local http.${{ github.server_url }}/.extraheader) + git config --local --unset http.${{ github.server_url }}/.extraheader + git config --local http.${{ github.server_url }}/${{ github.repository }}.git/info/lfs/objects/batch.extraheader "$AUTH" + git lfs pull + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + platforms: linux/arm64,linux/amd64 + push: true + # TODO: split tag names into multiple lines + tags: | + ${{env.registry}}/${{github.repository_owner}}/${{github.event.repository.name}}/${{github.ref_name}}:${{github.sha}} + ${{env.registry}}/${{github.repository_owner}}/${{github.event.repository.name}}/${{github.ref_name}}:latest From c391c0c1ee7053582d97e375cba1f93feac29e08 Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Mon, 2 Jun 2025 00:38:40 +0300 Subject: [PATCH 4/5] remove feature-42 branch from build-docker workflow --- .github/workflows/build-docker.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index f6b4558..04b167f 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -5,7 +5,6 @@ on: branches: - main - develop - - feature-42 jobs: build-docker: From ab1897b829b4ab62b09a8b18328f247c4a524191 Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Wed, 4 Jun 2025 01:06:40 +0300 Subject: [PATCH 5/5] add docker container secret management via env --- Dockerfile | 11 ++++++++++- src/forwarding.secret | 2 +- src/velocity.toml | 28 +++++++++++++--------------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index d33cca9..5ce3ed5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,9 +16,18 @@ VOLUME ${DATA_PATH} ENV MEMORY=4G +ENV PROXY_SECRET=change_me +ENV SERVERS=lobby="lobby:25565";survival="survival:25565" +ENV TRY=lobby;survival WORKDIR ${WORKDIR_PATH}/config EXPOSE 25565/tcp -CMD java -Xms${MEMORY} -Xmx${MEMORY} -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar +# TODO: Make awk commands sapn multiple lines +# TODO: Use one call to awk to perform substitutions +CMD \ + sed -i "s/_PROXY_SECRET_/${PROXY_SECRET}/g" forwarding.secret && \ + awk -v servers_str="${SERVERS}" '{ count=split(servers_str,servers_arr,";"); servers_fmt_str = ""; for (i = 1; i <= count; i++) servers_fmt_str = servers_fmt_str servers_arr[i] "\n"; sub(/_SERVERS_/,servers_fmt_str); print }' velocity.toml > velocity.toml.tmp && mv -T -f velocity.toml.tmp velocity.toml &&\ + awk -v try_str="${TRY}" '{ count=split(try_str,try_arr,";"); try_fmt_str = ""; for (i = 1; i <= count; i++) try_fmt_str = try_fmt_str "\"" try_arr[i] "\"" ",\n "; sub(/_TRY_/,try_fmt_str); print }' velocity.toml > velocity.toml.tmp && mv -T -f velocity.toml.tmp velocity.toml && \ + java -Xms${MEMORY} -Xmx${MEMORY} -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar *.jar diff --git a/src/forwarding.secret b/src/forwarding.secret index 329f8df..ba0206a 100644 --- a/src/forwarding.secret +++ b/src/forwarding.secret @@ -1 +1 @@ -${PROXY_FORWARDING_SECRET} +_PROXY_SECRET_ diff --git a/src/velocity.toml b/src/velocity.toml index 4d71e58..a0b8732 100644 --- a/src/velocity.toml +++ b/src/velocity.toml @@ -13,7 +13,7 @@ motd = "<#09add3>A Velocity Server" show-max-players = 500 # Should we authenticate players with Mojang? By default, this is on. -online-mode = true +online-mode = false # Should the proxy enforce the new public key security standard? By default, this is on. force-key-authentication = true @@ -34,7 +34,7 @@ prevent-client-proxy-connections = false # 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" +player-info-forwarding-mode = "modern" # 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. @@ -77,26 +77,24 @@ 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" +_SERVERS_ # In what order we should try servers when a player logs in or is kicked from a server. try = [ - "lobby" + _TRY_ ] [forced-hosts] # Configure your forced hosts here. -"lobby.example.com" = [ - "lobby" -] -"factions.example.com" = [ - "factions" -] -"minigames.example.com" = [ - "minigames" -] +# "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