move everything top level so it can be used by the k3s built-in helm-controller. add woodpecker ci config.

This commit is contained in:
Madison Grubb
2025-07-10 10:21:39 -04:00
parent 85ff210135
commit bc2debdea0
58 changed files with 188 additions and 704 deletions

View File

@@ -0,0 +1,38 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: mineclonia-config
namespace: mineclonia
data:
minetest.conf: |
enable_server = true
default_game = mineclonia
game_id = mineclonia
mapgen = mineclonia
server_name = Runestone
worldname = Runestone
server_description = "Explore vast landscapes, uncover ancient secrets, and shape your legacy in the land of Runestone."
server_address = 0.0.0.0
server_port = 30000
max_users = 50
debug_log_level = warning
time_speed = 72 # set to 20 minutes day/night cycles like minecraft.
worldname = Runestone
# network optimizations
enable_ipv6 = false
max_packets_per_iteration = 1024
chat_message_max_length = 200
# Authentication
name = socialsyndrome
require_password = true
password_hashing = true
enable_mods = true
player_name = true
auth_backend = sqlite3
auth_fail_ban_time = 10
enable_password_protection = true
admin.txt: |
socialsyndrome

View File

@@ -0,0 +1,69 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: mineclonia
namespace: mineclonia
spec:
replicas: 1
selector:
matchLabels:
app: mineclonia
template:
metadata:
labels:
app: mineclonia
spec:
initContainers:
- name: mineclonia-updater
image: alpine
command: ["/bin/sh", "-c"]
args:
- |
set -e
apk add --no-cache curl unzip jq
mkdir -p /var/lib/minetest/.minetest
latest_release=$(curl -s https://codeberg.org/api/v1/repos/mineclonia/mineclonia/releases/latest | jq -r '.tag_name')
if [ ! -d "/var/lib/minetest/.minetest/games/mineclonia" ] || [ "$(cat /var/lib/minetest/.minetest/games/mineclonia/version.txt)" != "$latest_release" ]; then
echo "Updating Mineclonia to version $latest_release"
rm -rf /var/lib/minetest/.minetest/games/mineclonia
curl -L https://codeberg.org/mineclonia/mineclonia/archive/$latest_release.zip -o /tmp/mineclonia.zip
unzip /tmp/mineclonia.zip -d /var/lib/minetest/.minetest/games/
echo "$latest_release" > /var/lib/minetest/.minetest/games/mineclonia/version.txt
else
echo "Mineclonia is up to date"
fi
# Ensure ownership of all data
chown -R 30000:30000 /var/lib/minetest
ls -ahl /var/lib/minetest
volumeMounts:
- name: data
mountPath: /var/lib/minetest
containers:
- name: mineclonia
image: ghcr.io/luanti-org/luanti
ports:
- containerPort: 30000
protocol: UDP
- containerPort: 30000
protocol: TCP
volumeMounts:
- name: data
mountPath: /var/lib/minetest
- name: config
mountPath: /etc/minetest
- name: admins
mountPath: /var/lib/minetest/worlds/Runestone/admin.txt
subPath: admin.txt
args: ["minetest", "--gameid", "mineclonia"]
stdin: true
tty: true
volumes:
- name: config
configMap:
name: mineclonia-config
- name: data
persistentVolumeClaim:
claimName: mineclonia-data
- name: admins
configMap:
name: mineclonia-config

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mineclonia-data
namespace: mineclonia
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi
storageClassName: longhorn

View File

@@ -0,0 +1,19 @@
apiVersion: v1
kind: Service
metadata:
name: mineclonia
namespace: mineclonia
annotations:
metallb.universe.tf/allow-shared-ip: mineclonia
spec:
selector:
app: mineclonia
ports:
- protocol: UDP
port: 30000
targetPort: 30000
- protocol: TCP
port: 30000
targetPort: 30000
type: LoadBalancer
loadBalancerIP: 192.168.1.4

View File

@@ -0,0 +1,4 @@
kind: Namespace
apiVersion: v1
metadata:
name: mineclonia