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

@@ -6,7 +6,7 @@ resources:
- ./traefik/config.yaml
- ./cert-manager/config.yaml
- ./routes/media.yaml
# - ./routes/minecraft.yaml
- ./routes/minecraft.yaml
- ./routes/gitea/ssh.yaml
- ./routes/gitea/http.yaml
- ./routes/longhorn.yaml

View File

@@ -0,0 +1,117 @@
apiVersion: batch/v1
kind: Job
metadata:
name: minecraft-restore
namespace: minecraft
labels:
app: minecraft-restore
spec:
backoffLimit: 0
ttlSecondsAfterFinished: 3600
template:
metadata:
labels:
app: minecraft-restore
spec:
restartPolicy: Never
securityContext:
fsGroup: 2000
runAsUser: 1000
runAsGroup: 3000
containers:
- name: restore
image: busybox:latest
command:
- sh
- -c
- |
set -e
echo "=========================================="
echo "Minecraft World Restore Job"
echo "=========================================="
echo ""
SERVER_NAME="${SERVER_NAME}"
BACKUP_FILE="${BACKUP_FILE:-latest.tgz}"
BACKUP_PATH="/backups/${BACKUP_FILE}"
DATA_DIR="/data"
echo "Configuration:"
echo " Server: ${SERVER_NAME}"
echo " Backup file: ${BACKUP_FILE}"
echo " Backup path: ${BACKUP_PATH}"
echo " Data directory: ${DATA_DIR}"
echo ""
if [ ! -f "${BACKUP_PATH}" ]; then
echo "ERROR: Backup file not found: ${BACKUP_PATH}"
echo ""
echo "Available backups for ${SERVER_NAME}:"
ls -lh /backups/ | grep "minecraft-${SERVER_NAME}" || echo " (none found)"
echo ""
echo "All backups:"
ls -lh /backups/
exit 1
fi
echo "✓ Backup file found"
echo " Size: $(du -hL ${BACKUP_PATH} | cut -f1)"
echo ""
if [ -d "${DATA_DIR}/world" ]; then
echo "⚠ WARNING: Existing world data found!"
echo " The following directories will be removed:"
echo " - ${DATA_DIR}/world"
echo " - ${DATA_DIR}/world_nether"
echo " - ${DATA_DIR}/world_the_end"
echo ""
echo "Removing existing world data..."
rm -rf "${DATA_DIR}/world" "${DATA_DIR}/world_nether" "${DATA_DIR}/world_the_end"
echo "✓ Old world data removed"
else
echo "✓ No existing world data found (clean slate)"
fi
echo ""
echo "Extracting backup..."
echo " From: ${BACKUP_PATH}"
echo " To: ${DATA_DIR}/"
echo ""
tar -xzf "${BACKUP_PATH}" -C "${DATA_DIR}/"
echo ""
echo "=========================================="
echo "Restore Complete!"
echo "=========================================="
echo ""
echo "Restored world information:"
if [ -d "${DATA_DIR}/world" ]; then
echo " World size: $(du -sh ${DATA_DIR}/world | cut -f1)"
fi
env:
- name: SERVER_NAME
value: "main"
- name: BACKUP_FILE
value: "latest.tgz"
volumeMounts:
- name: data
mountPath: /data
- name: backups
mountPath: /backups
readOnly: true
volumes:
- name: data
persistentVolumeClaim:
claimName: minecraft-main-datadir
- name: backups
nfs:
server: 192.168.27.2
path: /backup/minecraft

View File

@@ -8,7 +8,7 @@ spec:
- name: traefik-gateway
namespace: kube-system
hostnames:
- "git-new.lucalise.ca"
- "git.lucalise.ca"
rules:
- backendRefs:
- name: gitea-http