HomeLab-Portfolio

Private AI Homelab Platform

This project is a production-style self-hosted infrastructure stack running on an Apple Silicon Mac Mini with Docker Desktop, Tailscale, Traefik, Authentik, AdGuard DNS, Open WebUI, n8n, monitoring, media automation, photo hosting, and custom internal tooling. It also includes an on-demand IGA lab using midPoint to simulate identity lifecycle, role governance, access review evidence, and guarded provisioning into Authentik lab groups.

The design goal is simple: useful self-hosted services with no public internet exposure, strong operational documentation, and an AI operator that can answer live infrastructure questions from both runbooks and read-only system tools.

Executive Summary

Highlights:

Architecture

flowchart TB user["Tailnet client
Mac / iPhone / browser"] dns["AdGuard Home
home.arpa DNS rewrites"] ts["Tailscale private network"] traefik["Traefik
HTTPS reverse proxy
tailnet-only :8443"] auth["Authentik
SSO / forward-auth / OIDC"] subgraph docker["Docker Desktop on Apple Silicon Mac Mini"] homepage["Homepage"] wiki["Wiki.js"] immich["Immich"] openwebui["Open WebUI
Homelab Operator"] n8n["n8n workflows"] uptime["Uptime Kuma"] dozzle["Dozzle"] dockge["Dockge"] media["Jellyfin / Seerr / Radarr / Sonarr / Prowlarr / qBittorrent"] tools["openwebui-tools
read-only OpenAPI"] power["power-api
constrained Docker control/status"] receipts["Receipts DB/API
PostgreSQL + OCR workflow"] midpoint["midPoint IGA Lab
on demand"] provisioner["IGA provisioner
lab-* Authentik groups"] end user --> ts --> dns --> traefik traefik --> auth auth --> homepage auth --> wiki auth --> uptime auth --> dozzle auth --> dockge traefik --> immich immich -. OIDC .-> auth traefik --> openwebui traefik --> n8n traefik --> media auth --> midpoint midpoint --> provisioner --> auth openwebui --> tools tools --> power tools --> uptime tools --> receipts

Security Model

Core controls:

Access Model

Layer Purpose
Tailscale Private network access only
AdGuard Home Private DNS rewrites for *.home.arpa
Traefik HTTPS routing and security middleware
Authentik forward-auth Browser/admin SSO gate
App-native OIDC Mobile/API-safe SSO for supported apps
App-local auth Used where OIDC/forward-auth would break workflows

Service Inventory

Area Services
Ingress and DNS Traefik, AdGuard Home, Tailscale
Identity Authentik forward-auth, Authentik OIDC
Operations Homepage, Dockge, Dozzle, Uptime Kuma, Wiki.js
AI Open WebUI, Ollama, Homelab Operator, OpenAPI tools
Automation n8n, receipt workflows, power-panel API
Productivity Vikunja, Wiki.js
Photos Immich with Authentik OIDC
Media Jellyfin, Seerr, Radarr, Sonarr, Prowlarr, qBittorrent
Security Trivy scripts, validation scripts, Nmap/ZAP workflow
Governance lab midPoint IGA simulation, HR source, role catalog, access review evidence, guarded Authentik provisioning
Backup readiness Restic scripts and readiness checks

AI Operator

Open WebUI is configured as a private operations assistant:

Current tool operations:

Tool Purpose
service_inventory List homelab services, URLs, and auth model
media_status Check whether the media stack is up
docker_summary Summarize running, exited, and unhealthy containers
security_posture Prioritize Docker and access-model findings
receipt_summary Summarize receipt spending from PostgreSQL
uptime_summary Read Uptime Kuma status from SQLite
backup_readiness Report whether Restic backup setup is ready

Representative prompts:

docker_summary: Which containers need attention?
backup_readiness: What is missing before backups are safe to run?
security_posture(max_issues=8): Top findings by severity.

Screenshot Evidence

The public screenshot set highlights the major architecture, operations, identity, and governance surfaces. All images are sanitized for public sharing.

Screenshot File What It Shows
Homepage Dashboard Service organization and private app launchpad
Authentik Apps SSO and access-control layer
Uptime Kuma Status Monitoring coverage
Open WebUI Operator AI assistant with runbooks and live tools
Open WebUI Tool Call Live Docker/security/backup status from Open WebUI
Wiki.js Runbooks Operational documentation layer
Traefik Dashboard Reverse proxy routing and middleware
Immich OIDC App-native OIDC pattern
midPoint Users IGA demo users and lifecycle states
midPoint Role Catalog Business role catalog for app access
midPoint Access Review Access review evidence and SoD check
Authentik Lab Provisioning Users Dummy users provisioned into Authentik
Authentik Lab Provisioning Groups Lab-only Authentik groups created by the provisioner
Wiki.js IGA Provisioning Runbook Finished provisioning runbook in Wiki.js
Wiki.js IGA Report Executive-friendly IGA provisioning report

Screenshots

Homepage Dashboard

Homepage dashboard

Homelab Operator

Open WebUI Homelab Operator

Live Tool Call

Open WebUI tool call

Uptime Monitoring

Uptime Kuma status

Authentik Applications

Authentik apps

Wiki Runbooks

Wiki.js runbooks

Traefik Routing

Traefik dashboard

Immich OIDC

Immich OIDC

midPoint IGA Users

midPoint users

midPoint Role Catalog

midPoint role catalog

Access Review Evidence

midPoint access review

Authentik Lab Users

Authentik lab provisioning users

Authentik Lab Groups

Authentik lab provisioning groups

IGA Provisioning Runbook

Wiki.js IGA provisioning runbook

IGA Provisioning Report

Wiki.js IGA report

Project Highlights

What This Demonstrates

Engineering skills demonstrated:

Roadmap

Explore More