feat(homelab): setup mc-backup, add restore job, change gitea host

This commit is contained in:
2025-12-26 23:37:40 -08:00
parent 4771603175
commit 98124678c3
6 changed files with 228 additions and 72 deletions

View File

@@ -56,19 +56,19 @@ releases:
defaultClassReplicaCount: 1
# Minecraft
# - name: minecraft-router
# namespace: minecraft
# chart: minecraft-charts/mc-router
# version: 1.4.0
# values:
# - values/minecraft/router.yaml
#
# - name: minecraft-main
# namespace: minecraft
# chart: minecraft-charts/minecraft
# version: 5.0.0
# values:
# - values/minecraft/main.yaml
- name: minecraft-router
namespace: minecraft
chart: minecraft-charts/mc-router
version: 1.4.0
values:
- values/minecraft/router.yaml
- name: minecraft-main
namespace: minecraft
chart: minecraft-charts/minecraft
version: 5.0.0
values:
- values/minecraft/main.yaml
- name: home-assistant
namespace: home

View File

@@ -13,66 +13,105 @@ minecraftServer:
difficulty: hard
motd: "A Minecraft Server."
memory: 6G
rcon:
enabled: true
withGeneratedPassword: false
port: 25575
existingSecret: rcon-credentials
secretKey: rcon-password
persistence:
dataDir:
enabled: true
Size: 4Gi
# extraVolumes:
# - volumeMounts:
# - name: backup-volume
# mountPath: /backup
# readOnly: true
# volumes:
# - name: backup-volume
# hostPath:
# path: /var/lib/minecraft
# type: DirectoryOrCreate
sidecarContainers:
- name: backup
image: itzg/mc-backup
imagePullPolicy: Always
env:
- name: RCON_PASSWORD
valueFrom:
secretKeyRef:
name: rcon-credentials
key: rcon-password
- name: BACKUP_METHOD
value: tar
- name: BACKUP_INTERVAL
value: "15m"
- name: INITIAL_DELAY
value: "5m"
- name: PRUNE_BACKUPS_COUNT
value: "15"
- name: DEST_DIR
value: /mnt/backups
- name: LINK_LATEST
value: "true"
- name: TAR_COMPRESS_METHOD
value: gzip
- name: BACKUP_NAME
value: minecraft-main
- name: TZ
value: "America/Vancouver"
volumeMounts:
- name: datadir
mountPath: /data
readOnly: true
- name: backups
mountPath: /mnt/backups
# initContainers:
# - name: world-restore
# image: busybox:latest
# command:
# - sh
# - -c
# - |
# set -e
#
# echo "=== Minecraft World Restore ==="
#
# BACKUP_FILE="/backup/main/latest.tar.gz"
#
# # Check if backup exists
# if [ ! -f "$BACKUP_FILE" ]; then
# echo "No backup found at $BACKUP_FILE"
# echo "Skipping restore, server will start with existing/new world"
# exit 0
# fi
#
# echo "✓ Backup found: $BACKUP_FILE"
# echo " Size: $(du -h $BACKUP_FILE | cut -f1)"
#
# # Check if world already exists
# if [ -f /data/world/level.dat ]; then
# echo "⚠ World already exists at /data/world/"
# echo " Replacing with backup..."
# rm -rf /data/world /data/world_nether /data/world_the_end
# fi
#
# # Extract backup
# echo "Extracting backup to /data/..."
# tar -xzf "$BACKUP_FILE" -C /data/
# echo "✓ Extraction complete"
#
# echo ""
# echo "=== Restore Complete ==="
# echo "Restored world size: $(du -sh /data/world 2>/dev/null | cut -f1 || echo 'unknown')"
# ls -lh /data/ | grep -E "^d" || true
# echo ""
# volumeMounts:
# - name: datadir
# mountPath: /data
# - name: backup-volume
# mountPath: /backup
# readOnly: true
extraVolumes:
- volumeMounts:
- name: backups
mountPath: /mnt/backups
volumes:
- name: backups
nfs:
server: 192.168.27.2
path: /backup/minecraft
initContainers:
- name: world-restore
image: busybox:latest
command:
- sh
- -c
- |
set -e
echo "=== Minecraft World Restore ==="
BACKUP_FILE="/backups/latest.tgz"
# Check if backup exists
if [[ ! -f "$BACKUP_FILE" ]]; then
echo "Skipping restore, server will start with existing/new world"
exit 0
fi
echo "✓ Backup found: $BACKUP_FILE"
echo " Size: $(du -h $BACKUP_FILE | cut -f1)"
# Check if world already exists
if [ -f /data/world/level.dat ]; then
echo "⚠ World already exists at /data/world/"
echo " Replacing with backup..."
rm -rf /data/world /data/world_nether /data/world_the_end
fi
# Extract backup
echo "Extracting backup to /data/..."
tar -xzf "$BACKUP_FILE" -C /data/
echo "✓ Extraction complete"
echo ""
echo "=== Restore Complete ==="
echo "Restored world size: $(du -sh /data/world 2>/dev/null | cut -f1 || echo 'unknown')"
ls -lh /data/ | grep -E "^d" || true
echo ""
volumeMounts:
- name: datadir
mountPath: /data
- name: backup-volume
mountPath: /backup
readOnly: true