Deployment files for my Kubernetes cluster "Artemis-Cluster"
  • YAML 66.6%
  • MARKDOWN 26.2%
  • Python 3.7%
  • JUST 1.3%
  • JSON5 0.8%
  • Other 1.4%
Find a file
dusk-bot e2980f97ab
All checks were successful
kustomization/unpoller/df4687d1 reconciliation succeeded
kustomization/echo/7269528b reconciliation succeeded
kustomization/victoria-logs/df4687d1 reconciliation succeeded
kustomization/blackbox-exporter/df4687d1 reconciliation succeeded
kustomization/flaresolverr/6d67e041 reconciliation succeeded
kustomization/grafana/df4687d1 reconciliation succeeded
kustomization/rook-ceph-operator/65b2e497 reconciliation succeeded
kustomization/external-secrets/eb6ce560 reconciliation succeeded
kustomization/openebs/2935a6ab reconciliation succeeded
kustomization/artemis-cluster/b15f4d5a reconciliation succeeded
kustomization/text-embeddings-inference/880984c4 reconciliation succeeded
kustomization/toolhive/880984c4 reconciliation succeeded
kustomization/flux-operator/b15f4d5a reconciliation succeeded
kustomization/forgejo-runner/ccc4516f reconciliation succeeded
kustomization/toolhive-crds/880984c4 reconciliation succeeded
kustomization/certificates-import/7269528b reconciliation succeeded
kustomization/pve-exporter/df4687d1 reconciliation succeeded
kustomization/rook-ceph-csi-drivers/65b2e497 reconciliation succeeded
kustomization/cert-manager/5f9a1f3c reconciliation succeeded
kustomization/smartctl-exporter/df4687d1 reconciliation succeeded
kustomization/tuppr/d23b6d26 reconciliation succeeded
kustomization/certificates-export/7269528b reconciliation succeeded
kustomization/volsync/4821fe54 reconciliation succeeded
kustomization/paperless-gotenberg/6d67e041 reconciliation succeeded
kustomization/truenas-exporter/df4687d1 reconciliation succeeded
kustomization/paperless-tika/6d67e041 reconciliation succeeded
kustomization/victoria-logs-collector/df4687d1 reconciliation succeeded
kustomization/etcd-defrag/cd8e3795 reconciliation succeeded
kustomization/cloudflare-tunnel/7269528b reconciliation succeeded
kustomization/unifi-dns/7269528b reconciliation succeeded
kustomization/flux-instance/b15f4d5a reconciliation succeeded
kustomization/tuppr-upgrades/d23b6d26 reconciliation succeeded
kustomization/envoy-gateway/7269528b reconciliation succeeded
kustomization/cloudflare-dns/7269528b reconciliation succeeded
kustomization/k8tz/cd8e3795 reconciliation succeeded
kustomization/external-endpoints/da18bfa0 reconciliation succeeded
kustomization/flux-webhook/b15f4d5a reconciliation succeeded
kustomization/forgesync/ccc4516f reconciliation succeeded
kustomization/onepassword-connect/eb6ce560 reconciliation succeeded
kustomization/volsync-maintenance/4821fe54 reconciliation succeeded
kustomization/kopia/4821fe54 reconciliation succeeded
kustomization/searxng/880984c4 reconciliation succeeded
kustomization/jellyfin/6d67e041 reconciliation succeeded
kustomization/xbrowsersync/d61ba267 reconciliation succeeded
kustomization/autopulse/6d67e041 reconciliation succeeded
kustomization/agentmemory/880984c4 reconciliation succeeded
kustomization/home-assistant/d26781c6 reconciliation succeeded
kustomization/rook-ceph-cluster/65b2e497 reconciliation succeeded
kustomization/komga/d61ba267 reconciliation succeeded
kustomization/matter-server/d26781c6 reconciliation succeeded
kustomization/thelounge/6d67e041 reconciliation succeeded
kustomization/kapowarr/6d67e041 reconciliation succeeded
kustomization/toolhive-config/880984c4 reconciliation succeeded
kustomization/dispatcharr/6d67e041 reconciliation succeeded
kustomization/pocket-id/7871a86d reconciliation succeeded
kustomization/sabnzbd/6d67e041 reconciliation succeeded
kustomization/bazarr/6d67e041 reconciliation succeeded
kustomization/autobrr/6d67e041 reconciliation succeeded
kustomization/bookboss/6d67e041 reconciliation succeeded
kustomization/lldap/7871a86d reconciliation succeeded
kustomization/homebridge/d26781c6 reconciliation succeeded
kustomization/kube-prometheus-stack/df4687d1 reconciliation succeeded
kustomization/esphome/d26781c6 reconciliation succeeded
kustomization/streamystats/6d67e041 reconciliation succeeded
kustomization/grafana-mcp/880984c4 reconciliation succeeded
kustomization/github-mcp/880984c4 reconciliation succeeded
kustomization/kaizoku/6d67e041 reconciliation succeeded
kustomization/mosquitto/d26781c6 reconciliation succeeded
kustomization/prowlarr/6d67e041 reconciliation succeeded
kustomization/zigbee/d26781c6 reconciliation succeeded
kustomization/paperless-database/6d67e041 reconciliation succeeded
kustomization/context7-mcp/880984c4 reconciliation succeeded
kustomization/gatus/df4687d1 reconciliation succeeded
kustomization/minecraft/c4178113 reconciliation succeeded
kustomization/ha-mcp/880984c4 reconciliation succeeded
kustomization/silence-operator/df4687d1 reconciliation succeeded
kustomization/forgejo-mcp/880984c4 reconciliation succeeded
kustomization/pipelines/880984c4 reconciliation succeeded
kustomization/k8s-mcp/880984c4 reconciliation succeeded
kustomization/immich-database/d61ba267 reconciliation succeeded
kustomization/prometheus-adapter/df4687d1 reconciliation succeeded
kustomization/searxng-mcp/880984c4 reconciliation succeeded
kustomization/silence-operator-silences/df4687d1 reconciliation succeeded
kustomization/shelfmark/6d67e041 reconciliation succeeded
kustomization/kromgo/df4687d1 reconciliation succeeded
kustomization/arr-mcp/880984c4 reconciliation succeeded
kustomization/sonarr/6d67e041 reconciliation succeeded
kustomization/node-red/d26781c6 reconciliation succeeded
kustomization/komf/6d67e041 reconciliation succeeded
kustomization/agentmemory-mcp/880984c4 reconciliation succeeded
kustomization/immich-microservices/d61ba267 reconciliation succeeded
kustomization/recyclarr/6d67e041 reconciliation succeeded
kustomization/qbittorrent/6d67e041 reconciliation succeeded
kustomization/seerr/6d67e041 reconciliation succeeded
kustomization/open-webui/880984c4 reconciliation succeeded
kustomization/radarr/6d67e041 reconciliation succeeded
kustomization/qui/6d67e041 reconciliation succeeded
kustomization/paperless-app/6d67e041 reconciliation succeeded
kustomization/grafana-instance/df4687d1 reconciliation succeeded
kustomization/seerr-mcp/880984c4 reconciliation succeeded
kustomization/immich-app/d61ba267 reconciliation succeeded
kustomization/immich-machine-learning/d61ba267 reconciliation succeeded
kustomization/flux-system/b15f4d5a reconciliation succeeded
kustomization/snapshot-controller/cd8e3795 reconciliation succeeded
kustomization/renovate-operator/cd8e3795 reconciliation succeeded
kustomization/spegel/cd8e3795 reconciliation succeeded
kustomization/renovate-operator-jobs/cd8e3795 reconciliation succeeded
kustomization/coredns/cd8e3795 reconciliation succeeded
kustomization/metrics-server/cd8e3795 reconciliation succeeded
kustomization/multus/cd8e3795 reconciliation succeeded
kustomization/intel-gpu-resource-driver/cd8e3795 reconciliation succeeded
kustomization/reflector/cd8e3795 reconciliation succeeded
kustomization/multus-networks/cd8e3795 reconciliation succeeded
kustomization/reloader/cd8e3795 reconciliation succeeded
kustomization/descheduler/cd8e3795 reconciliation succeeded
kustomization/cilium/cd8e3795 reconciliation succeeded
feat(container): update image ghcr.io/renovatebot/renovate (43.213.3 ➔ 43.214.0) (#257)
2026-06-05 21:10:12 +00:00
.agents docs(agents): remove stale mem0 reference, clean up global MCP table 2026-06-05 01:34:08 -04:00
.claude/commands chore: consolidate MCP config into single root .mcp.json (#152) 2026-05-30 06:46:00 +00:00
.forgejo ci(github-action): update action https://github.com/home-operations/flate (0.2.6 ➔ 0.2.11) (#220) 2026-06-04 04:50:55 +00:00
.vscode chore: add session journal instructions and vscode linter reformat (#155) 2026-05-30 13:29:40 +00:00
bootstrap fix(container): update envoy-gateway group to v1.8.1 (#243) 2026-06-05 10:09:14 +00:00
docs docs: remove private tracker name and forwarded port from media docs 2026-04-17 00:35:32 -04:00
kubernetes feat(container): update image ghcr.io/renovatebot/renovate (43.213.3 ➔ 43.214.0) (#257) 2026-06-05 21:10:12 +00:00
scripts chore: remove unused scripts (force-update-deployment, kubeconform) 2026-05-10 01:32:27 -04:00
talos fix(talos): reinstall workers on virtio-blk with non-secureboot installer (#161) 2026-06-01 03:53:10 +00:00
.editorconfig chore: remove SOPS gitattributes, add mise/shellcheck hooks, fix sh indent 2026-05-22 20:56:43 -04:00
.gitattributes chore: remove SOPS gitattributes, add mise/shellcheck hooks, fix sh indent 2026-05-22 20:56:43 -04:00
.gitignore fix: update proxmox CA cert and gitignore after pantheon rebuild 2026-05-31 23:50:03 -04:00
.justfile chore: switch to onedr0p shared lefthook config, drop prettier, rename mise.toml (#82) 2026-05-23 16:08:58 +00:00
.lefthook.toml chore: disable lefthook colors 2026-06-05 05:27:44 +00:00
.mcp.json chore: consolidate MCP config into single root .mcp.json (#152) 2026-05-30 06:46:00 +00:00
.mcp.json.example feat(cortex): deploy agentmemory with GitHub Actions image build 2026-05-14 21:20:54 -04:00
.minijinja.toml chore: add talos nodes and specific config, use onedr0ps minijinjna templating as base, modify jsutfile a bit for it, will continue after 2026-04-08 20:45:52 -04:00
.mise.toml chore: deploy oxfmt, yamlls, and flate tooling 2026-06-02 16:21:32 -04:00
.oxfmtrc.json chore: deploy oxfmt, yamlls, and flate tooling 2026-06-02 16:21:32 -04:00
.renovaterc.json5 ci(renovate): disable upload/download-artifact updates — Forgejo v3 only 2026-06-04 01:01:58 -04:00
.shellcheckrc chore: add shellcheck and zizmor to mise, add shellcheckrc 2026-06-01 20:45:05 -04:00
.yamlls.yaml chore: deploy oxfmt, yamlls, and flate tooling 2026-06-02 16:21:32 -04:00
AGENTS.md feat(cortex): refactor MCP servers into individual kustomizations, add TEI + context7 2026-06-02 17:45:20 -04:00
CLAUDE.md chore: add session journal instructions and vscode linter reformat (#155) 2026-05-30 13:29:40 +00:00
entities.json chore(agents): modularize skills, integrate memory/MCP config (#84) 2026-05-23 23:14:08 +00:00
LICENSE chore(git): update license lol 2026-01-02 22:07:10 -05:00
mempalace.yaml chore(agents): track mempalace.yaml and entities.json 2026-05-17 21:33:55 -04:00
mise.lock chore: deploy oxfmt, yamlls, and flate tooling 2026-06-02 16:21:32 -04:00
README.md chore(observability): clean up badge layout and increase size 2026-06-04 22:15:38 -04:00

The Artemis Cluster

... where YAML is law, Renovate never sleeps, and 2am
is just debugging hours.

Talos   Kubernetes   Flux   Renovate

Home-Internet   Status-Page   Alertmanager

Age   Uptime   Nodes   Pods   CPU   Memory   Alerts


📖 Overview

Artemis is my homelab Kubernetes cluster, built on Talos Linux and managed entirely through Git. Three bare-metal control planes, three VM workers (one with a GPU), all reconciled automatically by Flux CD — push to main, it shows up in the cluster.


Kubernetes

Directories

📁 kubernetes
├── 📁 apps
│   ├── 📁 actions-runner-system  # Self-hosted GitHub Actions runners for CI workflows
│   ├── 📁 cert-manager           # Automated TLS certificates via Let's Encrypt
│   ├── 📁 cortex                 # AI stack — Open WebUI, SearXNG, text-embeddings-inference, ToolHive (9 MCP servers)
│   ├── 📁 default                # Personal apps — Immich (photos), Komga (comics), Bookboss (books)
│   ├── 📁 external-endpoints     # ExternalName services bridging off-cluster resources into the mesh
│   ├── 📁 external-secrets       # 1Password-backed ExternalSecret operator for all cluster secrets
│   ├── 📁 flux-system            # Flux Operator, FluxInstance, and GitOps sync entrypoint
│   ├── 📁 home-automation        # Home Assistant, Frigate, Zigbee2MQTT, Mosquitto, Matter Server, ESPHome
│   ├── 📁 kube-system            # Cilium (CNI/BGP), CoreDNS, Multus, Intel GPU driver, cluster utilities
│   ├── 📁 media                  # Arr stack, Jellyfin, SABnzbd, qBittorrent+Gluetun, Prowlarr, Bazarr
│   ├── 📁 network                # Envoy Gateway ingress, ExternalDNS (Cloudflare + UniFi), Cloudflare Tunnel
│   ├── 📁 observability          # Prometheus, Grafana, VictoriaLogs, Fluent Bit, Gatus, Kromgo, KEDA
│   ├── 📁 openebs-system         # Local-path storage provisioner for single-node PVCs
│   ├── 📁 rook-ceph              # Distributed block storage across 3 OSD nodes (one per control plane)
│   ├── 📁 security               # Pocket-ID OIDC provider for cluster-wide SSO
│   ├── 📁 system-upgrade         # Tuppr — automated Talos and Kubernetes version upgrades
│   └── 📁 volsync-system         # PVC backup and restore via Kopia snapshots
├── 📁 components     # Reusable Kustomize components (volsync, etc.)
└── 📁 flux           # Flux sync entrypoint → kubernetes/apps

🔧 Hardware

Device Count Disk RAM OS Purpose
Lenovo M710q (talos-cp-01/02/03) 3 256GB NVMe (boot) + 256GB SATA SSD (Ceph OSD) 16GB Talos Linux Kubernetes Control Plane
Proxmox VM on pantheon (talos-w-01/02) 2 Virtualized 32GB Talos Linux Kubernetes Worker
Proxmox VM on pantheon (talos-gpu-01) 1 Virtualized 32GB Talos Linux Kubernetes GPU Worker (ASRock Arc A380 6GB passthrough)
HPE ML150 G9 (pantheon) 1 T-FORCE 1TB SSD 192GB Proxmox Virtualization Host
Supermicro (atlas) 1 3× RAIDZ2 6-wide (~41TB usable) 94.3GB ECC TrueNAS SCALE NAS / Media Storage

🌐 Networking

Device Role
UniFi Cloud Gateway Max WAN/NAT, L3 gateway, DHCP, BGP (FRR), DNS, UniFi controller
Mikrotik CRS309-1G-8S+ L2 switch only — downstream of UCG-Max on VLAN 1099 (LAB)
UniFi US-48 PoE 500W L2 switch (upstream: UCG-Max)
UniFi US-16 PoE 150W L2 switch (upstream: US-48)

🤝 Acknowledgments

Thanks to the following for their work and shared knowledge:


📝 License

This repository is available under the WTFPL License. See LICENSE for details.