From 2272e874f51867e085079c5904c83f2dc778f73e Mon Sep 17 00:00:00 2001 From: Matthew Tran Date: Wed, 6 Sep 2023 11:12:08 +0000 Subject: [PATCH] add minecraft service --- .gitignore | 3 ++ Makefile | 10 ------- README.md | 18 ++++-------- compose.yml | 8 ++++++ minecraft/Dockerfile | 17 +++++++++++ minecraft/entry.sh | 11 +++++++ minecraft/eula.txt | 2 ++ minecraft/ops.json | 8 ++++++ minecraft/server.properties | 57 +++++++++++++++++++++++++++++++++++++ 9 files changed, 112 insertions(+), 22 deletions(-) delete mode 100644 Makefile create mode 100644 compose.yml create mode 100644 minecraft/Dockerfile create mode 100644 minecraft/entry.sh create mode 100644 minecraft/eula.txt create mode 100644 minecraft/ops.json create mode 100644 minecraft/server.properties diff --git a/.gitignore b/.gitignore index ac712cf..49f05a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ .DS_Store __pycache__ +# minecraft +minecraft/world + # wireguard wireguard/*.conf diff --git a/Makefile b/Makefile deleted file mode 100644 index 5aca3de..0000000 --- a/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# temporary until I can figure out the rest - -all: - docker build -t matthewtran . - -run: - docker run --name matt -d --rm -p 80:80 matthewtran - -kill: - docker kill matt diff --git a/README.md b/README.md index ae2c1fa..a9010bf 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,9 @@ # matthewtran.com -Stuff that's deployed on matthewtran.com. +Stuff that's deployed on matthewtran.com. Tested on Ubuntu Server 22.04.3 LTS. ## setup -Tested on Ubuntu Server 22.04.3 LTS. - -### port forwarding - Forward the following ports to the server. | service | port | @@ -16,14 +12,12 @@ Forward the following ports to the server. | p2pool | 3333 | | monerod | 18081 | | minecraft | 25565 | +| terraria | 7777 | | wireguard | 51820 | -### build - -TODO all of this - ``` -make -make install # add service that runs on boot -make backup +docker compose build ``` + +TODO service that runs on boot (and restarts/stops gracefully) +TODO backup script diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..e821f1b --- /dev/null +++ b/compose.yml @@ -0,0 +1,8 @@ +services: + minecraft: + build: minecraft/. + entrypoint: ["/bin/sh", "/root/entry.sh"] + ports: + - "25565:25565" + volumes: + - ./minecraft/world:/root/world diff --git a/minecraft/Dockerfile b/minecraft/Dockerfile new file mode 100644 index 0000000..5ef22b7 --- /dev/null +++ b/minecraft/Dockerfile @@ -0,0 +1,17 @@ +FROM ubuntu:22.04 + +WORKDIR /root + +RUN apt-get update && apt-get upgrade +RUN apt-get install -y wget openjdk-18-jre + +RUN wget https://github.com/Tiiffi/mcrcon/releases/download/v0.7.2/mcrcon-0.7.2-linux-x86-64.tar.gz +RUN tar xvf mcrcon-0.7.2-linux-x86-64.tar.gz + +# from https://www.minecraft.net/en-us/download/server (currently 1.20.1) +RUN wget https://piston-data.mojang.com/v1/objects/84194a2f286ef7c14ed7ce0090dba59902951553/server.jar + +COPY eula.txt ./ +COPY entry.sh ./ +COPY server.properties ./ +COPY ops.json ./ diff --git a/minecraft/entry.sh b/minecraft/entry.sh new file mode 100644 index 0000000..7ca46b5 --- /dev/null +++ b/minecraft/entry.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +cleanup() { + ./mcrcon -p password stop +} + +trap 'cleanup' TERM + +java -Xmx1024M -Xms1024M -jar server.jar nogui & +wait $! # wait for SIGTERM +wait $! # wait for server to stop diff --git a/minecraft/eula.txt b/minecraft/eula.txt new file mode 100644 index 0000000..fea60bf --- /dev/null +++ b/minecraft/eula.txt @@ -0,0 +1,2 @@ +#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). +eula=true diff --git a/minecraft/ops.json b/minecraft/ops.json new file mode 100644 index 0000000..1b5c654 --- /dev/null +++ b/minecraft/ops.json @@ -0,0 +1,8 @@ +[ + { + "uuid": "f9986eb6-3de5-492d-a201-1fdbb693dd7e", + "name": "dragonlock2", + "level": 4, + "bypassesPlayerLimit": false + } +] diff --git a/minecraft/server.properties b/minecraft/server.properties new file mode 100644 index 0000000..1bc46be --- /dev/null +++ b/minecraft/server.properties @@ -0,0 +1,57 @@ +#Minecraft server properties +allow-flight=false +allow-nether=true +broadcast-console-to-ops=true +broadcast-rcon-to-ops=true +difficulty=normal +enable-command-block=false +enable-jmx-monitoring=false +enable-query=false +enable-rcon=true +enable-status=true +enforce-secure-profile=true +enforce-whitelist=false +entity-broadcast-range-percentage=100 +force-gamemode=false +function-permission-level=2 +gamemode=spectator +generate-structures=true +generator-settings={} +hardcore=false +hide-online-players=false +initial-disabled-packs= +initial-enabled-packs=vanilla +level-name=world +level-seed= +level-type=minecraft\:normal +max-chained-neighbor-updates=1000000 +max-players=20 +max-tick-time=60000 +max-world-size=29999984 +motd=A Minecraft Server +network-compression-threshold=256 +online-mode=true +op-permission-level=4 +player-idle-timeout=0 +prevent-proxy-connections=false +pvp=true +query.port=25565 +rate-limit=0 +rcon.password=password +rcon.port=25575 +require-resource-pack=false +resource-pack= +resource-pack-prompt= +resource-pack-sha1= +server-ip= +server-port=25565 +simulation-distance=10 +spawn-animals=true +spawn-monsters=true +spawn-npcs=true +spawn-protection=16 +sync-chunk-writes=true +text-filtering-config= +use-native-transport=true +view-distance=10 +white-list=false