diff --git a/nix/homelab/helm/helmfile.yaml b/nix/homelab/helm/helmfile.yaml index e522d1a..a1450b8 100644 --- a/nix/homelab/helm/helmfile.yaml +++ b/nix/homelab/helm/helmfile.yaml @@ -9,6 +9,8 @@ repositories: url: https://dl.gitea.com/charts - name: longhorn url: https://charts.longhorn.io + - name: home-assistant + url: https://pajikos.github.io/home-assistant-helm-chart releases: # Load Balancer @@ -54,9 +56,23 @@ releases: defaultClassReplicaCount: 1 # Minecraft - - name: minecraft-main - namespace: minecraft - chart: minecraft-charts/minecraft - version: 5.0.0 + # - 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 + chart: home-assistant/home-assistant + version: 0.3.36 values: - - values/minecraft/main.yaml + - values/home-assistant.yaml diff --git a/nix/homelab/helm/values/home-assistant.yaml b/nix/homelab/helm/values/home-assistant.yaml new file mode 100644 index 0000000..c74cede --- /dev/null +++ b/nix/homelab/helm/values/home-assistant.yaml @@ -0,0 +1,17 @@ +persistence: + enabled: true + +resources: + requests: + cpu: 1 + memory: 1Gi + limits: + cpu: 2 + memory: 2Gi + +configuration: + enabled: true + +ingress: + enabled: false + external: true diff --git a/nix/homelab/helm/values/jellyfin.yaml b/nix/homelab/helm/values/jellyfin.yaml index a31301f..2e11300 100644 --- a/nix/homelab/helm/values/jellyfin.yaml +++ b/nix/homelab/helm/values/jellyfin.yaml @@ -1,5 +1,5 @@ persistence: config: - size: 4Gi + size: 5Gi media: size: 2Gi diff --git a/nix/homelab/helm/values/minecraft/main.yaml b/nix/homelab/helm/values/minecraft/main.yaml index 1261db1..d2f50b3 100644 --- a/nix/homelab/helm/values/minecraft/main.yaml +++ b/nix/homelab/helm/values/minecraft/main.yaml @@ -1,6 +1,9 @@ resources: + requests: + cpu: 1 + memory: 500Mi limits: - memory: 1Gi + memory: 6Gi cpu: 2500m minecraftServer: @@ -9,9 +12,67 @@ minecraftServer: version: "1.21.11" difficulty: hard motd: "A Minecraft Server." - memory: 512M + memory: 6G persistence: dataDir: enabled: true - size: 2Gi + Size: 4Gi + +# extraVolumes: +# - volumeMounts: +# - name: backup-volume +# mountPath: /backup +# readOnly: true +# volumes: +# - name: backup-volume +# hostPath: +# path: /var/lib/minecraft +# type: DirectoryOrCreate + +# 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 diff --git a/nix/homelab/helm/values/minecraft/router.yaml b/nix/homelab/helm/values/minecraft/router.yaml new file mode 100644 index 0000000..ada2f7c --- /dev/null +++ b/nix/homelab/helm/values/minecraft/router.yaml @@ -0,0 +1,13 @@ +resources: + requests: + cpu: 100m + memory: 50Mi + limits: + cpu: 500m + memory: 128Mi + +minecraftRouter: + mappings: + - externalHostname: "mc-rocket.duckdns.org" + host: "minecraft-main" + port: 25565 diff --git a/nix/homelab/kustomize/kustomization.yaml b/nix/homelab/kustomize/kustomization.yaml index e6cc4ed..4df3e27 100644 --- a/nix/homelab/kustomize/kustomization.yaml +++ b/nix/homelab/kustomize/kustomization.yaml @@ -6,7 +6,8 @@ resources: - ./traefik/config.yaml - ./cert-manager/config.yaml - ./routes/media.yaml - - ./routes/minecraft/main.yaml + # - ./routes/minecraft.yaml - ./routes/gitea/ssh.yaml - ./routes/gitea/http.yaml - ./routes/longhorn.yaml + - ./routes/home-assistant.yaml diff --git a/nix/homelab/kustomize/routes/home-assistant.yaml b/nix/homelab/kustomize/routes/home-assistant.yaml new file mode 100644 index 0000000..cd42fd2 --- /dev/null +++ b/nix/homelab/kustomize/routes/home-assistant.yaml @@ -0,0 +1,15 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: home-assistant + namespace: home +spec: + parentRefs: + - name: traefik-gateway + namespace: kube-system + hostnames: + - "home-assistant.lucalise.ca" + rules: + - backendRefs: + - name: home-assistant + port: 8080 diff --git a/nix/homelab/kustomize/routes/minecraft/main.yaml b/nix/homelab/kustomize/routes/minecraft.yaml similarity index 68% rename from nix/homelab/kustomize/routes/minecraft/main.yaml rename to nix/homelab/kustomize/routes/minecraft.yaml index 114dbc3..ea3858b 100644 --- a/nix/homelab/kustomize/routes/minecraft/main.yaml +++ b/nix/homelab/kustomize/routes/minecraft.yaml @@ -1,13 +1,13 @@ apiVersion: traefik.io/v1alpha1 kind: IngressRouteTCP metadata: - name: minecraft-main + name: minecraft-router namespace: minecraft spec: entryPoints: - - minecraft-main + - minecraft routes: - match: HostSNI(`*`) services: - - name: minecraft-main + - name: minecraft-router-mc-router port: 25565 diff --git a/nix/modules/dns.nix b/nix/modules/dns.nix index 5e4e9b2..727f545 100644 --- a/nix/modules/dns.nix +++ b/nix/modules/dns.nix @@ -22,6 +22,8 @@ 192.168.18.31 media.lucalise.ca 192.168.18.31 git-new.lucalise.ca 192.168.18.31 storage.lucalise.ca + 192.168.18.31 home-assistant.lucalise.ca + 192.168.18.31 mc-rocket.duckdns.org ''; services.resolved = {