79 Commits

Author SHA1 Message Date
5f0e0b41f7 switch to amazon corretto
All checks were successful
Minecraft Java Image / build-and-push (push) Successful in 18s
2025-11-07 10:02:48 -05:00
e038672457 fix bitnami java:24 missing issue
All checks were successful
Minecraft Java Image / build-and-push (push) Successful in 32s
2025-11-06 22:24:24 -05:00
c1ca80b09b use bitnami java image
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 15s
2025-07-16 00:10:09 -04:00
ed6638cebf add back creds
All checks were successful
Minecraft Java Image / build-and-push-ddns (push) Successful in 12s
2025-07-15 17:23:55 -04:00
3b62f0648a remove creds from build push action
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 23s
2025-07-15 17:20:50 -04:00
17be6f427d update pipeline branch to master
Some checks failed
Minecraft Java Image / build-and-push-ddns (push) Failing after 5s
2025-07-15 17:17:11 -04:00
d08e02a46c add gitea container build job 2025-07-15 17:13:42 -04:00
ducoterra
d9485d2fdf Merge update from Common 2021-12-13 12:58:41 -05:00
ducoterra
8096a291e6 Squashed '.gitlab/' changes from cf41f2e..16ee2f3
16ee2f3 Merge branch 'various-docker-fixes' into 'main'
5b3e196 fix docker build and remove release
4bf9d45 Merge branch 'prefix-docker-commands' into 'main'
91b77b3 don't reset head after subtree pull, it breaks things
66b4362 prefix all docker commands with docker-
ba2827a Merge branch 'allow-specify-branch' into 'main'
4de5558 ignore .gitlab
71ff227 Allow pulling specific branch with BRANCH_NAME
6430416 Merge branch 'add-helm-and-kube' into 'main'
bce675f Add install, upgrade, and uninstall for helm
1532f30 Add kubectl.makefile

git-subtree-dir: .gitlab
git-subtree-split: 16ee2f3ddcc1235cb4a6b7a38c82d52859e8408f
2021-12-13 12:58:40 -05:00
ducoterra
4a80310c33 setenv is deprecated 2021-12-13 12:58:05 -05:00
ducoterra
d77bfb210a add testcraft and camcraft values 2021-12-13 12:57:58 -05:00
ducoterra
1f7af65220 quote server version 2021-12-13 12:57:42 -05:00
ducoterra
44975664b6 Squashed '.gitlab/' changes from 731ada6..cf41f2e
cf41f2e Merge branch 'remove-push' into 'main'
ef81c95 Remove unused commands
81c19cc Don't use remote common
ea1e248 Update subtree add README
756cc8c Remove make-push
a4b7e34 Squash subtree on pull
524c5be Fix PROJECT_NAME variable
47dea48 Add automated commit to chart-release

git-subtree-dir: .gitlab
git-subtree-split: cf41f2e7768da3a340b86debcddc949b588448c7
2021-11-02 15:48:46 -04:00
ducoterra
05206686ad Merge update from Common 2021-11-02 15:48:46 -04:00
ducoterra
2de53def19 Remove .common 2021-11-02 12:46:40 -04:00
ducoterra
a85a7aa84f Merge branch 'common-subtree' 2021-11-02 12:45:47 -04:00
ducoterra
a07400506a Add '.gitlab/' from commit '731ada6a3d65b2347ccf204cfe09ee278a4f0594'
git-subtree-dir: .gitlab
git-subtree-mainline: 422f4d49bd
git-subtree-split: 731ada6a3d
2021-11-02 11:59:31 -04:00
ducoterra
422f4d49bd remove .gitlab subtree 2021-11-02 11:59:08 -04:00
Reese
731ada6a3d Merge branch 'make-update-fixes' into 'main'
Update README with "common" remote

See merge request services/common!4
2021-11-02 15:50:30 +00:00
ducoterra
c3e6d733c6 Switch to "subtree split" push strategy
Split the subtree into a new branch before pushing to common. This
creates a new branch automatically and ensures no weird histories get
committed to common.
2021-11-02 11:48:15 -04:00
ducoterra
3c91292fea Make user stash their own damn changes
Stashing is so annoying to deal with in a scripted way. Just force the
user to stash their own changes. Only subtree pull if it's possible.
2021-11-02 11:47:29 -04:00
ducoterra
d86b5052a8 Add PROJECT_NAME and VERSION
Add PROJECT_NAME and VERSION variables to Makefile.
2021-11-02 11:46:53 -04:00
ducoterra
9d0c9c6388 Update README with "common" remote
Add instructions for adding subtree using a remote called "common". You
need the remote to properly contribute back upstream from a child
project.
2021-11-02 11:45:57 -04:00
Reese
30fb8c2171 Merge branch 'docker-buidlx-overhaul' into 'main'
Switch to container-builder buildx platform

See merge request services/common!2
2021-11-02 15:44:36 +00:00
Reese
fd96b3f3a3 Merge branch 'git-release' into 'main'
Add make git-release

See merge request services/common!3
2021-11-02 15:44:26 +00:00
ducoterra
a6053ed3f0 Add make git-release
Add command which makes an automated release from the VERSION file.
Commits and tags everything not staged in the repo.
2021-11-02 10:25:18 -04:00
ducoterra
3563c5c2aa Add make docker-release
Add docker-release command which updates the image tag in the
docker-compose.yaml and runs a `make push`.
2021-11-02 10:23:53 -04:00
ducoterra
40a217b585 Use buildx to create multi-arch images
clear and set the buildx context on push. Then use --push with buildx
build to push the multi-arch images immediately after creating them.
This gets around the need to store them locally (which won't work for
something like an M1 mac).
2021-11-02 10:22:48 -04:00
ducoterra
5e2bc5f872 Switch to container-builder buildx platform
Continue using buildx with a new container builder name
"container-builder".
2021-11-02 10:19:21 -04:00
ducoterra
a5aa0cacbe Automated release for version 1.0.2 2021-11-02 10:08:38 -04:00
ducoterra
65b3a84e96 make subtree "split" overhaul
In order to create cleaner histories we should be using subtree split
and push in order to preview the changes as an MR before pushing to
main.
2021-11-02 10:07:50 -04:00
ducoterra
d181d452e8 Overhaul for get-server v. 2.0.0
Since get-server downloads its own jarfile this commit overhauls a lot
of the minecraft deploy to match the new strategy. It also updates the
README and adds makefile targets for a few new commands.
2021-11-02 10:05:01 -04:00
ducoterra
9eed50962c Don't squash on pull
Don't squash updates on pull
2021-11-01 20:32:27 -04:00
ducoterra
b07a2c095b Run update after make-push
To close things out we should re-run make-update to ensure changes are
pulled back into the repo we updated from.
2021-11-01 10:05:43 -04:00
ducoterra
22a952dd53 Remove warning from make-update
make-update isn't as destructive as it once was. It should be safe to
run as long as the developer is fixes any weird merge conflicts after
stash pop.
2021-11-01 10:02:35 -04:00
ducoterra
0f6eeb776e Add make-stash-drop command
Sometimes you can get stuck in a loop where git stash pop preserves the
stash commit. Dropping that commit if it's a STASH commit after an
update is totally fine.
2021-11-01 10:01:12 -04:00
ducoterra
f81d846f31 Only pop stash if changes
Only pop the stash if the most recent stash commit matches the STASH
name.
2021-11-01 09:56:37 -04:00
ducoterra
afed93f58a Add warning to make-update and make-push
Add warning before make-update and make-push to alert developers that
running the commands might be destructive. Allow cancelling the command
up to 3 seconds before continuing. Also explain that merge conflicts
warrant a re-run of the command.
2021-11-01 09:38:00 -04:00
ducoterra
6239af7f74 Ignore git stash pop failures
In the event the stash is empty, don't run stash pop.
2021-11-01 09:23:36 -04:00
ducoterra
2f767593ef Add make-push command
Add command to update the subtree from a child repo. This pushes to the
main branch of the common repo with only the relevant commits.
2021-11-01 09:20:11 -04:00
ducoterra
66b4fdb902 Ignore subtree pull failures
Rather than potentially leaving the developer in a state where `git
stash pop` wasn't run, ignore failures in git subtree and let the
developer fix issues and re-run the command. This makes `make-update`
more idempotent.
2021-11-01 09:13:15 -04:00
ducoterra
da69418b0d Switch to url-based subtree with make-update
Add new `make-update` make command to update the .gitlab subtree.
2021-10-31 22:56:47 -04:00
ducoterra
ba12c923ba Remove docker-run
Docker-run was only useful in very specific projects. Projects should
either define their own "run" in their Makefile, add a
docker-compose.yaml, or specify instructions in the README.
2021-10-31 20:59:29 -04:00
ducoterra
74a4a4e77f Transition to .gitlab prefix
Expect repo to be subtree'd as ".gitlab"
2021-10-31 20:33:47 -04:00
ducoterra
3e8ca71358 Add chart-release to truenas.makefile
Add chart-release to add a subtree chart to the charts releases in the
charts repo.
2021-10-31 20:22:20 -04:00
ducoterra
4146777f85 Add helm.makefile
Add helm.makefile with a helm-release command to make a helm release.
2021-10-31 20:21:08 -04:00
ducoterra
8a52a21a39 Switch to multi-makefile strategy
Instead of putting everything in one makefile switch to a folder called
"make" with multiple makefiles. Move the original makefile to
"docker.makefile" and add kaniko and truenas to fill in later.
2021-10-31 15:03:59 -04:00
Reese
0d2235b6a3 Merge branch 'common-makefile' into 'master'
Allow custom server versions

See merge request services/minecraft_vanilla!1
2021-10-31 03:05:14 +00:00
Reese
dbe0d47f99 Merge branch 'master' into 'common-makefile'
# Conflicts:
#   helm/questions.yaml
2021-10-31 03:05:11 +00:00
ducoterra
c7c547c80f Switch to common Makefile
Rather than writing our own Makefile use the common one.
2021-10-30 22:46:34 -04:00
ducoterra
a403f6f068 Merge commit '32cd04c7ec7aacf8e3a402e3aed310a6ea94b586' as '.common' 2021-10-30 22:43:08 -04:00
ducoterra
32cd04c7ec Squashed '.common/' content from commit f187522
git-subtree-dir: .common
git-subtree-split: f18752299d
2021-10-30 22:43:08 -04:00
ducoterra
8d190e478f Add minecraft logo
Add minecraft logo for use by nextcloud.
2021-10-30 22:32:59 -04:00
ducoterra
ba5ab53bdb Allow custom server versions
Allow user to specify server version. Download on server init.
2021-10-30 22:32:52 -04:00
ducoterra
f18752299d init 2021-10-30 22:28:20 -04:00
ducoterra
a820e9a297 Allow custom server versions
Allow user to specify server version. Download on server init.
2021-10-30 21:14:00 -04:00
ducoterra
9e788ee711 Add IMAGE and VERSION files
Makefile requires IMAGE and VERSION files available to build and push.
2021-10-30 21:02:40 -04:00
ducoterra
d3b0f86f40 Switch to openjdk-latest and don't copy server.jar
No longer copying server.jar since we expected it to exist already.
Build using the latest version of openjdk.
2021-10-30 21:02:01 -04:00
ducoterra
2f7d4c7f83 Add Makefile
Add Makefile with build, run, and push commands.
2021-10-30 21:01:43 -04:00
ducoterra
aa253e6688 Remove server.jar and docker-compose.yaml
Remove unused files.
2021-10-30 21:01:22 -04:00
ducoterra
773c1d6020 Move install-specific values to a values folder
To keep things tidy all the various values files have been moved to a
directory named "values".
2021-10-30 20:59:10 -04:00
ducoterra
dae5a097e9 Fix RAM issue with deploy
A deploy was running the same max ram for both the pod and the java
app. This led to issues where the java app would use its max ram and the
pod would think it was out of memory. It would kill the pod and the
minecraft server with it, often not saving the last few minutes of
progress.

Now the deploy runs 1GiB extra ram than the java app.
2021-09-11 14:08:38 -04:00
ducoterra
44053abdf8 truenas compatibility update 2021-08-29 15:24:11 -04:00
ducoterra
807b1866a8 set memory requirements to avoid sudden container death 2021-02-20 12:16:05 -05:00
ducoterra
99666bab94 add setenv 2021-02-05 21:47:13 -05:00
ducoterra
1b6b8bb281 update RAM for new cluster 2021-02-05 21:42:48 -05:00
ducoterra
95c7fa79f3 merge templates 2020-11-27 15:30:43 -05:00
ducoterra
7e0ff9e416 upgrade to 1.6.4 2020-11-21 15:29:21 -05:00
ducoterra
12fa8ecdbe remove extra opts and remove threading 2020-07-19 17:14:58 -04:00
ducoterra
7d34b3a36c add charts for each server 2020-07-17 13:48:19 -04:00
ducoterra
95b0bd6852 switch to configmap model 2020-07-11 17:50:43 -04:00
ducoterra
ff2c9affb5 servers to nvme 2020-07-10 12:15:55 -04:00
ducoterra
1dfb1f6202 nvme for minecraft 2020-06-28 18:05:52 -04:00
ducoterra
3faf5c9d95 don't auto deploy 2020-06-26 23:49:19 -04:00
ducoterra
072bee6e27 update to 1.16.1 2020-06-26 23:36:39 -04:00
ducoterra
e6a042948b fix port issue 2020-06-15 21:43:34 -04:00
ducoterra
7df518d7db set image 2020-05-16 17:40:04 -04:00
ducoterra
ca4d1eeb45 use tag in deploy 2020-05-16 12:47:04 -04:00
ducoterra
1ccc5cda35 fix tags 2020-05-16 12:43:30 -04:00
43 changed files with 534 additions and 155 deletions

View File

@@ -0,0 +1,32 @@
name: Minecraft Java Image
run-name: Build and Push the Minecraft Java Image
on:
push:
paths:
- Dockerfile
- IMAGE
- VERSION
- .gitea/workflows/minecraft.yaml
schedule:
- cron: '@daily'
jobs:
build-and-push:
runs-on: ubuntu-latest
if: gitea.ref == 'refs/heads/master'
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Login to Gitea Registry
uses: docker/login-action@v2
with:
registry: gitea.reeseapps.com
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build and push Docker image
uses: https://github.com/docker/build-push-action@v5
with:
context: ${{ gitea.workspace }}
file: ${{ gitea.workspace }}/Dockerfile
push: true
tags: "gitea.reeseapps.com/services/minecraft:latest,gitea.reeseapps.com/services/minecraft:${{gitea.sha}}"
no-cache: true

3
.gitignore vendored
View File

@@ -1 +1,2 @@
data/ data/
world/

View File

@@ -1,7 +1,7 @@
variables: variables:
CI_PROJECT_NAME: "minecraft" CI_PROJECT_NAME: "minecraft"
CI_PROJECT_DIR: "." CI_PROJECT_DIR: "."
CI_REGISTRY_IMAGE: hub.ducoterra.net/ducoterra/homer CI_REGISTRY_IMAGE: hub.ducoterra.net/ducoterra/minecraft
stages: stages:
- build - build
@@ -18,21 +18,4 @@ build:
entrypoint: [""] entrypoint: [""]
script: script:
- echo $DEPLOY - echo $DEPLOY
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
deploy_to_prod:
variables:
DEPLOY: prod
stage: deploy
only:
variables:
- $CI_COMMIT_TAG
image:
name: debian:10
entrypoint: [""]
script:
- apt -qq update >> /dev/null && apt -qq install -y curl >> /dev/null
- curl -L -o /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
- chmod +x /usr/local/bin/kubectl
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
- helm template $CI_PROJECT_NAME --set tag=1.1.1 ./helm | kubectl apply -f -

1
.gitlab/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.gitlab

21
.gitlab/Makefile Normal file
View File

@@ -0,0 +1,21 @@
SHELL := /bin/bash
PROJECT_NAME ?= $(shell git config --local remote.origin.url | sed -n 's\#.*/\([^.]*\)\.git\#\1\#p')
VERSION ?= $(shell cat VERSION)
IMAGE ?= $(shell cat IMAGE):$(VERSION)
IMAGE_LATEST ?= $(shell cat IMAGE):latest
PWD ?= $(shell pwd)
STASH ?= "common-update-stash"
MAKE_BRANCH ?= main
include .gitlab/make/docker.makefile
include .gitlab/make/helm.makefile
include .gitlab/make/kaniko.makefile
include .gitlab/make/truenas.makefile
include .gitlab/make/git.makefile
include .gitlab/make/kubectl.makefile
# git subtree add --prefix .gitlab --squash --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git main
.PHONY: make-update
make-update:
@git subtree pull --prefix .gitlab --squash --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git $(MAKE_BRANCH)

9
.gitlab/README.md Normal file
View File

@@ -0,0 +1,9 @@
# Adding the "common" subtree as your .gitlab folder
```bash
# Add the subtree as a remote
git subtree add --prefix .gitlab git@gitlab.ducoterra.net:services/common.git main --squash --message "Add Common .gitlab Subtree"
# Now you can run the following to update
make make-update
```

View File

@@ -0,0 +1,23 @@
.PHONY: docker-init
docker-init:
@touch VERSION
@touch IMAGE
.PHONY: docker-buildx-context
docker-buildx-context:
@docker buildx create --name container-builder --use --platform linux/amd64,linux/arm64
.PHONY: docker-buildx-clear
docker-buildx-clear:
@docker buildx rm container-builder
.PHONY: docker-build
docker-build:
docker build . -t $(IMAGE)
.PHONY: docker-push
docker-push:
-make docker-buildx-clear
@make docker-buildx-context
docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE)
@docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE_LATEST)

View File

@@ -0,0 +1,5 @@
.PHONY: git-release
git-release:
@git add .
@git commit -m "Automated release for version $(VERSION)"
@git tag $(VERSION)

View File

@@ -0,0 +1,16 @@
.PHONY: helm-release
helm-release:
@yq e ".version = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
@yq e ".appVersion = \"$(shell cat VERSION)\"" -i helm/Chart.yaml
.PHONY: install
install: set-namespace
helm install $(PROJECT_NAME) ./helm --set image=$(IMAGE)
.PHONY: upgrade
upgrade: set-namespace
helm upgrade $(PROJECT_NAME) ./helm --set image=$(IMAGE)
.PHONY: uninstall
uninstall: set-namespace
helm uninstall $(PROJECT_NAME)

View File

View File

@@ -0,0 +1,11 @@
.PHONY: set-namespace
set-namespace:
kubectl config set contexts.$(shell kubectl config current-context).namespace $(shell cat NAMESPACE)
.PHONY: create-regcred
create-regcred:
@kubectl create secret docker-registry regcred \
--docker-server=registry.ducoterra.net \
--docker-username=$(shell vault kv get -field username secret/duconet/basic-auth) \
--docker-password='$(shell vault kv get -field password secret/duconet/basic-auth)' \
--docker-email=$(shell vault kv get -field username secret/duconet/basic-auth)

View File

@@ -0,0 +1,5 @@
.PHONY: chart-release
chart-release:
@rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/
@git add charts/$(CHART)
@git commit -m "Automated release for chart $(CHART) version $(shell cat $(CHART)/VERSION)" -e

View File

@@ -1,15 +1,7 @@
FROM openjdk:8-slim # Read more about Corretto here:
# https://hub.docker.com/_/amazoncorretto
FROM docker.io/amazoncorretto:21
RUN apt update && apt install -y rsync
WORKDIR /mc_server
COPY ./server .
RUN groupadd -r minecraft && useradd --no-log-init -r -g minecraft minecraft
WORKDIR /mc_data WORKDIR /mc_data
RUN chown -R minecraft:minecraft .
USER minecraft CMD ["sh", "-c" , "java -Xmx${MAX_RAM}G -Xms${MIN_RAM}G -jar ./server.jar nogui"]
# Copy files only if they don't yet exist (server.jar, server.properties, etc) and start the server
CMD cp -r /mc_server/. . && \
java -server -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads="$THREADS" -XX:+AggressiveOpts -Xmx"$MAX_RAM"G -Xms"$MIN_RAM"G -jar server.jar nogui

1
IMAGE Normal file
View File

@@ -0,0 +1 @@
ducoterra/minecraft

28
Makefile Normal file
View File

@@ -0,0 +1,28 @@
SHELL := /bin/bash
include .gitlab/Makefile
.PHONY: build
build:
@podman build -f Dockerfile -t localhost/minecraft:latest
.PHONY: get-server
get-server:
@mkdir -p world
@echo 'eula=true' > world/eula.txt
@podman run \
-it \
--rm \
-e SERVER_VERSION=1.21.10 \
-v $(PWD)/world:/downloads \
--security-opt label=disable \
--userns keep-id \
docker.io/ducoterra/get-minecraft:latest
.PHONY: run
run:
docker compose -f compose.yaml up minecraft
.PHONY: stop
stop:
docker compose -f compose.yaml down

View File

@@ -1,69 +1,48 @@
# Minecraft # Minecraft
## Getting server.jar
![Click Installations](img/main.png)
![Select the Options Menu](img/menu.png)
![Click Edit](img/edit.png)
![Click Download Server](img/server.png)
## Running Locally ## Running Locally
```bash ```bash
docker-compose build minecraft # Build
docker-compose up minecraft make build
# download the most recent version of minecraft
make get-server
# Run the server
make run
# Stop the server
make stop
``` ```
## Uploading to Docker Hub ## Uploading to Docker Hub
In docker-compose.yaml, update the image tag to: 1. Update the version in the VERSION file.
2. Build and push the new version
```yaml ```bash
... make build
services: make push
minecraft: ```
build: .
image: <your_username>/minecraft:<version>-1
ports:
...
```
then run
```bash
docker-compose push
```
## Running in kubernetes ## Running in kubernetes
In k8s/deploy.yaml, edit the deploy Requires helm v3. Edit values.yaml and run the following:
```yaml
...
spec:
containers:
- name: minecraft
image: <your image from above>
ports:
...
```
Then run the following
```bash ```bash
kubectl apply -f k8s/pvc helm upgrade --install minecraft
kubectl apply -f k8s
``` ```
Your minecraft server will be available on port 25565 Your minecraft server will be available on port 25565 by default.
## Create a Backup ### Create a Backup in Kubernetes
```bash ```bash
kubectl cp <pod_name>:/mc_data <backup> kubectl cp <pod_name>:/mc_data <backup>
``` ```
## Restore from Backup ### Restore from Backup in Kubernetes
```bash ```bash
kubectl cp <backup> <pod_name>:/mc_data kubectl cp <backup> <pod_name>:/mc_data
@@ -71,4 +50,10 @@ kubectl cp <backup> <pod_name>:/mc_data
## Cool seeds ## Cool seeds
with an amplified world, -8018833100564192815 ### 7485786574821478084
Spawns you next to a nether portal with golden axe and pickaxe. River and Village close by.
### -8018833100564192815
Use with an amplified world, massive island

1
VERSION Normal file
View File

@@ -0,0 +1 @@
1.0.3

View File

@@ -1,3 +0,0 @@
docker-compose build mc
docker-compose push mc
kubectl apply -f k8s/

15
compose.yaml Normal file
View File

@@ -0,0 +1,15 @@
services:
minecraft:
image: localhost/minecraft:latest
stdin_open: true
tty: true
volumes:
- ./world:/mc_data
ports:
- 25565:25565
environment:
- MAX_RAM=1
- MIN_RAM=1
security_opt:
- "label=disable"
userns_mode: keep-id

View File

@@ -1,18 +0,0 @@
version: '3'
services:
minecraft:
build: .
image: hub.ducoterra.net/ducoterra/minecraft:1.15.2_1
ports:
- 25565:25565
volumes:
- ./data:/mc_data
tty: true
stdin_open: true
restart: always
environment:
- MAX_RAM=2
- MIN_RAM=1
- THREADS=2
user: minecraft

View File

@@ -1,7 +1,6 @@
apiVersion: v2 apiVersion: v2
name: charts name: minecraft
description: A Helm chart for Kubernetes description: A Minecraft server for kubernetes
# A chart can be either an 'application' or a 'library' chart. # A chart can be either an 'application' or a 'library' chart.
# #
# Application charts are a collection of templates that can be packaged into versioned archives # Application charts are a collection of templates that can be packaged into versioned archives
@@ -11,13 +10,11 @@ description: A Helm chart for Kubernetes
# a dependency of application charts to inject those utilities and functions into the rendering # a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed. # pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 1.0.2
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 1.16.0 appVersion: 1.0.2

3
helm/README.md Normal file
View File

@@ -0,0 +1,3 @@
# Minecraft Server
Creates a vanilla Minecraft server.

3
helm/app-readme.md Normal file
View File

@@ -0,0 +1,3 @@
# Minecraft Server
Creates a vanilla Minecraft server.

2
helm/ix_values.yaml Normal file
View File

@@ -0,0 +1,2 @@
image: ducoterra/minecraft:latest
server_version: "1.17.1"

BIN
helm/minecraft-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

38
helm/questions.yaml Normal file
View File

@@ -0,0 +1,38 @@
groups:
- name: "Server Config"
description: "Minecraft Server Configuration"
- name: "Storage"
description: "Minecraft Server Storage"
questions:
- variable: server_version
description: "Server Version"
label: "Version"
group: "Server Config"
schema:
type: string
default: "1.17.1"
required: false
- variable: port
description: "Listen Port"
group: "Server Config"
label: "Port"
schema:
type: int
default: 25565
required: true
- variable: max_ram
description: "Total RAM allocated to the server"
group: "Server Config"
label: "RAM Limit (GiB)"
schema:
type: int
default: 4
required: true
- variable: max_cpu
description: "# CPU Cores Allocated to the server"
group: "Server Config"
label: "CPU Limit (# Cores)"
schema:
type: int
default: 4
required: true

View File

@@ -0,0 +1,8 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
data:
eula.txt: |
eula=true
server.properties: {{ toYaml .Values.server_props | indent 2 }}

View File

@@ -6,36 +6,58 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: {{ .Release.Name }} app: {{ .Release.Name }}
strategy:
type: Recreate
template: template:
metadata: metadata:
labels: labels:
app: {{ .Release.Name }} app: {{ .Release.Name }}
spec: spec:
initContainers:
- name: get-version
image: {{ .Values.get_server.image }}
imagePullPolicy: Always
env:
- name: SERVER_VERSION
value: {{ .Values.server_version | quote }}
volumeMounts:
- mountPath: /downloads
name: data
containers: containers:
- name: {{ .Release.Name }} - name: {{ .Release.Name }}
image: {{ .Values.image }} image: {{ .Values.image }}
imagePullPolicy: Always
ports: ports:
- containerPort: 25565 - containerPort: 25565
volumeMounts: volumeMounts:
- mountPath: /mc_data - mountPath: /mc_data
name: data name: data
- name: properties
mountPath: /mc_data/server.properties
subPath: server.properties
- name: properties
mountPath: /mc_data/eula.txt
subPath: eula.txt
tty: true tty: true
stdin: true stdin: true
env: env:
- name: MAX_RAM - name: MAX_RAM
value: "4" value: {{ .Values.max_ram | quote }}
- name: MIN_RAM - name: MIN_RAM
value: "1" value: "1"
- name: THREADS
value: "4"
resources: resources:
requests: requests:
memory: "2Gi" memory: {{ div .Values.max_ram 2 }}Gi
cpu: 250m cpu: 1m
limits: limits:
memory: "4Gi" memory: {{ add 1 .Values.max_ram }}Gi
cpu: "4" cpu: {{ .Values.max_cpu | quote }}
volumes: volumes:
- name: data - name: data
persistentVolumeClaim: persistentVolumeClaim:
claimName: {{ .Release.Name }} claimName: {{ .Release.Name }}
- name: properties
configMap:
name: {{ .Release.Name }}
securityContext:
fsGroup: 2000

View File

@@ -2,10 +2,11 @@ apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: {{ .Release.Name }} name: {{ .Release.Name }}
annotations:
"helm.sh/resource-policy": keep
spec: spec:
storageClassName: nfs-encrypted
accessModes: accessModes:
- ReadWriteMany - ReadWriteOnce
resources: resources:
requests: requests:
storage: 32Gi storage: 32Gi

View File

@@ -6,7 +6,7 @@ spec:
selector: selector:
app: {{ .Release.Name }} app: {{ .Release.Name }}
ports: ports:
- port: 25565 - port: {{ .Values.port }}
targetPort: 25565 targetPort: 25565
name: {{ .Release.Name }} name: {{ .Release.Name }}
type: LoadBalancer type: LoadBalancer

View File

@@ -1 +1,45 @@
image: hub.ducoterra.net/ducoterra/minecraft:1.15.2_1 image: ducoterra/minecraft:latest
get_server:
image: ducoterra/get-minecraft:2.0.0
server_version: "1.17.1"
port: 20101
max_cpu: 4
max_ram: 4
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 481 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 348 KiB

View File

@@ -1 +0,0 @@
eula=true

Binary file not shown.

View File

@@ -1,39 +0,0 @@
#Minecraft server properties
#Thu Jan 02 01:15:23 UTC 2020
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=amplified
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=20
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=512
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

19
servers.md Normal file
View File

@@ -0,0 +1,19 @@
# Servers
## Minecraft
```bash
helm upgrade --install minecraft ./helm --set tag=1.15.2_7 --set port=25565
```
## Pubcraft
```bash
helm upgrade --install pubcraft ./helm --set tag=1.15.2_7 --set port=20100
```
## TestCraft
```bash
helm upgrade --install testcraft ./helm --set tag=1.16.1_2 --set port=25566
```

View File

@@ -0,0 +1,45 @@
image: ducoterra/minecraft:latest
get_server:
image: ducoterra/get-minecraft:2.0.0
server_version: "1.16.4"
port: 20101
max_cpu: 4
max_ram: 4
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

View File

@@ -0,0 +1,42 @@
image: hub.ducoterra.net/ducoterra/minecraft:1.16.4
port: 25565
max_cpu: 8
max_ram: 6
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

View File

@@ -0,0 +1,42 @@
image: hub.ducoterra.net/ducoterra/minecraft:1.16.4
port: 20100
max_cpu: 8
max_ram: 6
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=This is gonna be interesting
enable-rcon=false

View File

@@ -0,0 +1,45 @@
image: ducoterra/minecraft:latest
get_server:
image: ducoterra/get-minecraft:2.0.0
server_version: "1.18"
port: 20103
max_cpu: 8
max_ram: 8
server_props: |
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=3
spawn-monsters=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=true
level-name=world
view-distance=32
resource-pack=
spawn-animals=true
white-list=true
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=Welcome to testcraft!
enable-rcon=false