# Homelab status — 2026-05-22 Quick checklist after monitoring / sites / git pass. ## Done (automation) | Item | Notes | |------|--------| | Mailcow `alerts@levkine.ca` | Created via API | | Kuma + Dockge + Umami | LXC 218 @ `10.0.10.22`; Dockge stack **monitoring** active | | Old Kuma pve201 LXC 305 | Stopped, `onboot` off | | `stats.levkin.ca` | Caddy → Umami `:3000` | | Tracking scripts | levkin.ca + caseware + auto + portfolio (`iliadobkin.com`) | | **levkin.ca** | LXC **220** @ `10.0.10.60`; Caddy → nginx; `/` = spec, `/folders/` = stack | | Portfolio `iliadobkin.com` | Migrated pve201 LXC **306** → pve10 LXC **219** @ `10.0.10.106`; Caddy → nginx `:80` | | Kuma SMTP | Working (user confirmed) | | Git remote | `git@git.levkin.ca:ilia/...` (SSH → `10.0.10.169` via `~/.ssh/config` on site LXCs) | | auto repo | Pushed/pulled on `git.levkin.ca` | | caseware repo | Pushed to Gitea via bundle on server; LXCs pull via internal SSH | | Vault | Mailcow, Umami, Mattermost in vault; `make vault-export-env` → `.env`; `make vault-pull-infra-secrets` = hosts → vault | | Caddy root SSH | Works (`make bootstrap-root-ssh-caddy`) | | Hermes Mattermost | `mattermost.env` on VM; Telegram optional/off | ## Your list — still to do ### You (UI / hardware / DNS) - [x] **Kuma SMTP** — working - [ ] **DNS `levkin.ca` + `www`** — A records → home IP (`142.180.237.136`); apex currently parked at AWS, not homelab - [ ] **Gitea deploy key (levkin LXC 220)** — add `deploy-levkin-levkin.ca` pubkey in repo settings (SSH pull); HTTPS clone works meanwhile - [ ] **UniFi DHCP reservations** — [unifi-static-dhcp.md](unifi-static-dhcp.md) @ https://192.168.2.1/ - [ ] **Cal.com → Authentik OIDC** — first SSO (~1–2 h) — [levkin-selfhost-plan-2.md](levkin-selfhost-plan-2.md) - [ ] **Nextcloud VM 201 retire** — remove Kuma monitor, Caddy `nextcloud.levkin.ca`, stop VM - [ ] **NAS.SP00 disk replace** — then start Jellyfin (VM 101) - [x] **Gitea deploy key (portfolio)** — `git pull` works on LXC 219; Gitea VM SSH fixed (`/home/git/.ssh/authorized_keys` + `sudo` to `gitea`) - [ ] **`.env`** — optional mirror: `make vault-export-env` (vault already has secrets) - [ ] **Rotate** any secrets pasted in chat (Hermes token, etc.) ### Later / defer - [ ] Caddy → edge LXC `.20` - [ ] Immich, Crater, Beszel - [ ] Public SSH for `git.levkin.ca:22` (optional Caddy `layer4` or DNS split) ## Site LXCs (marketing) | VMID | Name | IP | Git remote | |------|------|-----|------------| | 220 | levkin | 10.0.10.60 | `git@git.levkin.ca:ilia/levkin.ca.git` | | 215 | caseware | 10.0.10.105 | `git@git.levkin.ca:ilia/caseware.git` | | 216 | auto | 10.0.10.59 | `git@git.levkin.ca:ilia/auto.git` | | 219 | portfolio | 10.0.10.106 | `git@git.levkin.ca:ilia/sdetProfile.git` | **Git SSH note:** `git.levkin.ca` in the URL; traffic goes to **10.0.10.169:22** (not `10.0.30.169`, not public `:22`). ```ssh # On each site LXC /root/.ssh/config Host git.levkin.ca HostName 10.0.10.169 User git IdentityFile ~/.ssh/id_ed25519 ``` ## Dockge Stack **monitoring** in UI = correct. Compose at `/opt/stacks/monitoring/compose.yaml`. Live stack also at `/opt/monitoring` (same containers). Use Dockge for edits/restarts; avoid starting a second copy.