User Access Matrix
Managing access to homelab services
Overview
This document outlines user access levels and permissions across homelab services. Access is managed through Authentik SSO with role-based access control.
User Roles
Role Definitions
| Role |
Description |
Access Level |
| Admin |
Full system access |
All services, all actions |
| Family |
Regular user |
Most services, limited config |
| Guest |
Limited access |
Read-only on shared services |
| Service |
Machine account |
API-only, no UI |
Service Access Matrix
Authentication Services
| Service |
Admin |
Family |
Guest |
Service |
| Authentik |
✅ Full |
❌ None |
❌ None |
❌ None |
| Vaultwarden |
✅ Full |
✅ Personal |
❌ None |
❌ None |
Media Services
| Service |
Admin |
Family |
Guest |
Service |
| Plex |
✅ Full |
✅ Stream |
✅ Stream (limited) |
❌ None |
| Jellyfin |
✅ Full |
✅ Stream |
✅ Stream |
❌ None |
| Sonarr |
✅ Full |
✅ Use |
❌ None |
✅ API |
| Radarr |
✅ Full |
✅ Use |
❌ None |
✅ API |
| Jellyseerr |
✅ Full |
✅ Request |
❌ None |
✅ API |
Infrastructure
| Service |
Admin |
Family |
Guest |
Service |
| Portainer |
✅ Full |
❌ None |
❌ None |
❌ None |
| Prometheus |
✅ Full |
⚠️ Read |
❌ None |
❌ None |
| Grafana |
✅ Full |
⚠️ View |
❌ None |
✅ API |
| Nginx Proxy Manager |
✅ Full |
❌ None |
❌ None |
❌ None |
Home Automation
| Service |
Admin |
Family |
Guest |
Service |
| Home Assistant |
✅ Full |
✅ User |
⚠️ Limited |
✅ API |
| Pi-hole |
✅ Full |
⚠️ DNS Only |
❌ None |
❌ None |
| AdGuard |
✅ Full |
⚠️ DNS Only |
❌ None |
❌ None |
Communication
| Service |
Admin |
Family |
Guest |
Service |
| Matrix |
✅ Full |
✅ User |
❌ None |
✅ Bot |
| Mastodon |
✅ Full |
✅ User |
❌ None |
✅ Bot |
| Mattermost |
✅ Full |
✅ User |
❌ None |
✅ Bot |
Productivity
| Service |
Admin |
Family |
Guest |
Service |
| Paperless |
✅ Full |
✅ Upload |
❌ None |
✅ API |
| Seafile |
✅ Full |
✅ User |
⚠️ Limited |
✅ API |
| Wallabag |
✅ Full |
✅ User |
❌ None |
❌ None |
Development
| Service |
Admin |
Family |
Guest |
Service |
| Gitea |
✅ Full |
✅ User |
⚠️ Public |
✅ Bot |
| OpenHands |
✅ Full |
❌ None |
❌ None |
❌ None |
Access Methods
VPN Required
These services are only accessible via VPN:
- Prometheus (192.168.0.210:9090)
- Grafana (192.168.0.210:3000)
- Home Assistant (192.168.0.20:8123)
- Authentik (192.168.0.11:9000)
- Vaultwarden (192.168.0.10:8080)
Public Access (via NPM)
- Plex: plex.vish.gg
- Jellyfin: jellyfin.vish.gg
- Matrix: matrix.vish.gg
- Mastodon: social.vish.gg
Authentik Configuration
Providers
| Service |
Protocol |
Client ID |
Auth Flow |
| Grafana |
OIDC |
grafana |
Default |
| Portainer |
OIDC |
portainer |
Default |
| Jellyseerr |
OIDC |
jellyseerr |
Default |
| Gitea |
OAuth2 |
gitea |
Default |
| Paperless |
OIDC |
paperless |
Default |
Flows
- Default Flow - Password + TOTP
- Password Only - Simplified (internal)
- Out-of-band - Recovery only
Adding New Users
1. Create User in Authentik
2. Assign Groups
3. Configure Service Access
For each service:
- Add user to service (if supported)
- Or add to group with access
- Test login
Revoking Access
Process
- Disable user in Authentik (do not delete)
- Remove from groups
- Remove from service-specific access
- Change shared passwords if needed
- Document in access log
Emergency Revocation
Password Policy
| Setting |
Value |
| Min Length |
12 characters |
| Require Numbers |
Yes |
| Require Symbols |
Yes |
| Require Uppercase |
Yes |
| Expiry |
90 days |
| History |
5 passwords |
Two-Factor Authentication
Required For
- Admin accounts
- Vaultwarden
- SSH access
Supported Methods
| Method |
Services |
| TOTP |
All SSO apps |
| WebAuthn |
Authentik |
| Backup Codes |
Recovery only |
SSH Access
Key-Based Only
Access Matrix
Service Accounts
Creating Service Accounts
- Create user in Authentik
- Set username:
svc-<service>
- Generate long random password
- Store in Vaultwarden
- Use for API access only
Service Account Usage
| Service |
Account |
Use Case |
| Prometheus |
svc-prometheus |
Scraping metrics |
| Backup |
svc-backup |
Backup automation |
| Monitoring |
svc-alert |
Alert delivery |
| arrstack |
svc-arr |
API automation |
Audit Log
What's Logged
- Login attempts (success/failure)
- Password changes
- Group membership changes
- Service access (where supported)
Accessing Logs
Password Managers
Vaultwarden Organization
- Homelab Admin: Full access to all items
- Family: Personal vaults only
- Shared: Service credentials
Shared Credentials
| Service |
Credential Location |
| NPM |
Vaultwarden → Shared → Infrastructure |
| Database |
Vaultwarden → Shared → Databases |
| API Keys |
Vaultwarden → Shared → APIs |
Links