# Services Everything I'm running, grouped by what it does. URLs, ports, and which host runs what are operational details — those live in the private repo. ## Identity & access | Service | What it does | |---|---| | Authentik | SSO for everything internal. OIDC where the app supports it, Caddy forward auth where it doesn't. | | Pi-hole | DNS for the LAN, ad blocking, and the source of truth for internal hostnames. | | WireGuard | The only way in from outside. All admin work happens through the tunnel. | ## Reverse proxy & TLS Two Caddy instances, by design: - **Internal Caddy** — fronts everything internal. Reachable from inside the LAN or via VPN. Does most of the routing. - **DMZ Caddy** — fronts the small set of things I want public. Lives on its own VLAN with no inbound access to internal services beyond a tight, firewall-enforced allowlist. Both use Cloudflare DNS-01 for ACME, which is how internal-only services get valid public certs without ever being exposed to the internet for issuance. ## Productivity & knowledge | Service | What it replaces | |---|---| | Outline | Notion / Confluence | | Vikunja | Todoist / Asana | | Hoarder | Pocket / Raindrop | | Memos | Apple Notes (the quick-capture kind) | | FreshRSS | Feedly | | Bytestash | gist / pastebin | | Filebrowser | Dropbox-style file access | | Baikal | iCloud calendar/contacts (CalDAV / CardDAV) | ## Money | Service | What it replaces | |---|---| | Actual Budget | YNAB / Mint | | Ghostfolio | Personal Capital | ## Operations & day-to-day | Service | What it does | |---|---| | Grist | Lightweight relational tracking — anything that wants to be in a spreadsheet but shouldn't be | | Glance | Personal landing page / dashboard | | Traggo | Time tracking | ## Media | Service | What it does | |---|---| | Plex | Media library (legacy clients) | | Jellyfin | Media library (primary, open source) | | *arr stack | Library automation | | qBittorrent | Downloads | | Immich | Self-hosted Google Photos replacement | ## Home / IoT | Service | What it does | |---|---| | Home Assistant OS | Home automation hub | ## Secrets | Service | What it does | |---|---| | Vaultwarden | Bitwarden-compatible password manager. **Planned, not deployed yet.** | ## Bots & automation | Service | What it does | |---|---| | Vocard | Discord music bot | | MonitorRSS | RSS-to-Discord notifications | | ntfy | Push notifications for ops alerts | ## Monitoring | Service | What it does | |---|---| | Victoria Metrics | Time-series store | | Grafana | Dashboards | | Beszel | Lightweight host metrics | | Uptime Kuma | Synthetic uptime checks | ## Public services A small, intentional set of things that are reachable from the open internet. They all sit behind the DMZ reverse proxy on a VLAN with no inbound access to internal subnets. | Service | Why it's public | |---|---| | Portfolio | It's a portfolio. | | Self-hosted Git | Where you're reading this. | | SSO endpoint | Has to be reachable for an OIDC flow on one specific public-facing service (the Discord bot dashboard). It's the only internal-VLAN backend the public proxy is allowed to talk to, and the firewall enforces that — not just the proxy config. | | One Authentik-gated app | The Discord bot dashboard. Public so I can hit it from outside the LAN; gated by Authentik forward auth before anything responds. | ## Who can access what Three audiences, three levels: - **Internet, anonymous** — sees only the small public set above. - **Internet, signed into Authentik** — same as above, plus access to the Authentik-gated public services. - **Connected via WireGuard** — gets everything: internal apps and admin surfaces (hypervisor, firewall, backup server, network controller, monitoring). This is the only way to reach any admin surface. The WFH and IoT VLANs are deliberately *outside* this access model. Those are for me-as-a-user (work laptop, smart devices), not me-as-an-operator. They never see the internal service plane.