phasheen/homelab
Homelab
The self-hosted stack I run at home and in the cloud, and the rules that keep it boring.
Stack
| layer | what | how it's used |
|---|---|---|
| hosts | Unraid · Proxmox VE · Oracle Cloud | Storage and hardware-bound services on Unraid, VMs and containers on Proxmox, a few always-on services in the cloud. |
| edge | Pangolin + Newt | A reverse proxy on a small VPS in Seoul. Hosts dial out to it through Newt tunnels. |
| private network | Tailscale | One private mesh for my devices and hosts. |
| identity | Pocket ID | One OIDC sign-on for the services that support it. |
| deploys | Komodo · Docker Compose | Every service is a Compose file in git, deployed by Komodo. |
| ops | AI-assisted, read-only first | Agents diagnose through read-only MCP tools; changes arrive as Compose diffs in pull requests that I review and merge. |
services include
- Vaultwarden
- Immich
- Home Assistant
- Obsidian sync (CouchDB)
- Komodo
- Pocket ID
- Pangolin
House rules
- 01Compose by default
Everything goes through Komodo. Unraid templates only where a service needs the hardware: USB passthrough, GPU transcoding.
- 02Read before write
Diagnostics run through read-only tools. Anything that changes state is a diff I can read.
- 03Pin versions
Core pieces such as the tunnel client run pinned versions and are upgraded on purpose.
At the lab
TL-02 →The same habits run my lab's shared stack, which I co-admin for about 20 researchers: Proxmox, Komodo deployments, Pangolin with Auth0 single sign-on, Grafana and InfluxDB monitoring, and Label Studio for annotation.