Proxmox VE
Proxmox VE
Purpose
Proxmox VE is the primary hypervisor for the Bytek homelab.
Proxmox hosts and manages:
- Virtual machines.
- Linux containers.
- Virtual networking.
- Proxmox firewall rules.
- LVM-thin storage.
- VM and LXC snapshots.
- Scheduled backups.
- Backup restoration.
- Physical-device passthrough.
- Emergency guest consoles.
Proxmox is a critical management system and must remain accessible independently of Pi-hole, Traefik, and Authentik.
Service Information
| Setting | Value |
|---|---|
| Private hostname | pve.bytek.ca |
| Private IP address | 192.168.2.254 |
| Web interface port | TCP 8006 |
| SSH port | TCP 22 |
| Access scope | Home LAN or trusted VPN |
| Normal authentication | Authentik OIDC |
| Emergency authentication | root@pam |
| General DNS resolver | 9.9.9.9 |
| Backup storage | pve-backup |
| Primary VM storage | local-lvm |
| Large-data storage | user-data |
Management interface:
Access Policy
The Proxmox management interface must remain private.
Approved access paths include:
- A workstation on the home LAN.
- A trusted remote-access VPN.
- The Proxmox physical console.
- A deliberately configured emergency SSH tunnel.
The following access methods are prohibited:
- Public WHC DNS record for
pve.bytek.ca. - Bell router forwarding of TCP 8006.
- VPS forwarding of TCP 8006.
- Public Traefik routing to Proxmox.
- Direct internet exposure of SSH.
Pi-hole resolves pve.bytek.ca directly to 192.168.2.254.
DNS Design
The Proxmox host intentionally uses Quad9 at 9.9.9.9 instead of Pi-hole.
This prevents the hypervisor from depending on a guest VM or LXC for its own DNS service.
The DNS behavior differs depending on the requester:
| Requester | Hostname | Result |
|---|---|---|
| LAN workstation using Pi-hole | pve.bytek.ca |
192.168.2.254 |
| Proxmox using Quad9 | portal.bytek.ca |
38.29.213.101 |
| LAN workstation using Pi-hole | portal.bytek.ca |
192.168.2.182 |
Proxmox may therefore reach Authentik through the public VPS, WireGuard, and Traefik path.
If that path becomes unreliable for OIDC, a single static entry can map portal.bytek.ca to 192.168.2.182 in the Proxmox /etc/hosts file without changing the general DNS resolver.
Browser DNS Requirement
The private hostname pve.bytek.ca exists only in Pi-hole.
Firefox-based browsers such as Zen may bypass Pi-hole when enhanced DNS protection or DNS over HTTPS is forced.
Recommended browser configuration:
- DNS over HTTPS: Off or Default Protection.
- Proxy: No proxy or system proxy settings.
- VPN: Must allow access to the home LAN.
If the private hostname does not load but the IP address works, verify browser DNS protection before changing Proxmox.
Useful Windows checks:
Resolve-DnsName pve.bytek.canslookup pve.bytek.ca 192.168.2.65Test-NetConnection pve.bytek.ca -Port 8006Clear-DnsClientCacheipconfig /flushdns
Expected results:
pve.bytek.caresolves to192.168.2.254.- TCP port 8006 is reachable.
Authentication Model
Normal Authentication
Normal administration uses native OpenID Connect with Authentik.
| OIDC Setting | Value |
|---|---|
| Realm | authentik |
| Issuer | https://portal.bytek.ca/application/o/proxmox/ |
| Username claim | username |
| Scopes | email profile |
| Automatically create users | Enabled |
| Default realm | Optional after validation |
The matching Authentik provider requires:
- Application slug:
proxmox - Client type: Confidential
- Subject mode: User UUID
- Signing key: Selected
- Encryption key: None
- Authorization redirect:
https://pve.bytek.ca:8006
Required Authentik bindings:
- Group
bytek-admin. - Policy
Allow bytek.ca users. - Policy engine mode
ALL.
A user must satisfy both the group and policy requirements.
Authentik Scope Mappings
The Proxmox Authentik provider must include the following selected scope mappings:
openidemailprofile
Missing scope mappings can allow the browser authorization step to succeed while causing Proxmox to fail at the Authentik userinfo endpoint.
A previously observed failure was:
- OpenID authentication failure.
- Failed to contact the userinfo endpoint.
- Proxmox returned authentication failure 401.
Selecting the expected mappings in the Authentik provider resolved the authentication flow.
Authentication and Authorization Are Separate
Successful Authentik authentication creates the Proxmox user but does not grant access to VMs, containers, nodes, or storage.
A newly created OIDC user may initially see an empty interface.
The user requires an explicit Proxmox access-control entry.
For the primary administrator:
| Permission Setting | Value |
|---|---|
| Path | / |
| Role | Administrator |
| Propagate | Enabled |
| User | Authentik-created Proxmox user |
The username normally ends with the realm:
- Example:
brygag1@authentik
Do not accidentally grant the permission to the PAM version of the username.
Break-Glass Authentication
The local Proxmox PAM account must remain available.
| Setting | Value |
|---|---|
| Account | root@pam |
| Authentication source | Proxmox host PAM |
| Purpose | Emergency recovery |
| Password storage | Password manager |
| Removal permitted | No |
Never:
- Delete
root@pam. - Disable the PAM realm.
- Make Authentik the only possible administrative login.
- Depend on public ingress for emergency Proxmox access.
The root@pam account should be tested periodically in a private browser session.
Web Service Health
The Proxmox web interface is provided by pveproxy.
Check service state with:
systemctl is-active pveproxy
Expected result:
active
Check the listener with:
ss -lntp | grep ':8006'
Expected result:
- A listener on TCP port 8006.
pveproxyand worker processes appear.
Test locally with:
curl -k https://127.0.0.1:8006/
A 501 method HEAD not available response from a command using curl -I does not indicate an outage. That response confirms the HTTPS service was reached, but the endpoint does not support the HTTP HEAD method.
Network Validation
Test from another LAN VM:
nc -zv -w 5 192.168.2.254 8006
A successful result confirms TCP reachability.
Test HTTPS by IP:
curl -k https://192.168.2.254:8006/
Test HTTPS by private hostname:
curl -k https://pve.bytek.ca:8006/
If the hostname fails but the IP works, investigate DNS rather than pveproxy.
OIDC Validation
Verify that Proxmox can retrieve Authentik discovery information:
curl -fsS https://portal.bytek.ca/application/o/proxmox/.well-known/openid-configuration
The response should contain OIDC metadata such as:
A request to the userinfo endpoint without a bearer token should return an authentication error.
That response is expected and proves the endpoint is reachable.
OIDC Troubleshooting
Review recent Proxmox authentication logs with:
journalctl -u pvedaemon --since "10 minutes ago" --no-pager
Look for terms such as:
- OpenID.
- Userinfo.
- Token.
- Claim.
- Signature.
- Issuer.
- Authentication.
Authentication Failure 401
Possible causes include:
- Incorrect client ID.
- Incorrect client secret.
- Missing Authentik scope mappings.
- Incorrect redirect URI.
- Missing signing key.
- Token encryption enabled.
- Userinfo endpoint failure.
- Browser callback hostname mismatch.
Failed to Contact Userinfo Endpoint
Check:
- Authentik readiness.
- OIDC discovery.
- The userinfo endpoint.
- Selected Authentik
emailandprofilemappings. - Proxmox realm scopes.
- VPS and WireGuard connectivity.
- Traefik routing.
Login Works but No VMs Appear
The OIDC user has not been assigned a Proxmox ACL.
Assign the required role at / with propagation enabled.
Private Hostname Does Not Resolve
Check:
- Pi-hole record.
- Workstation DNS server.
- Browser DNS over HTTPS.
- Active VPN.
- Browser proxy.
- Windows DNS cache.
Firewall Policy
Proxmox TCP port 8006 should accept traffic only from approved management sources.
Potential management sources include:
- Home LAN.
- Reserved administrative workstation.
- Future WireGuard remote-access gateway.
- Emergency SSH tunnel endpoint.
Do not create an internet-wide accept rule for TCP 8006.
SSH should use:
- Key-based authentication.
- No root password login over SSH where hardening permits.
- LAN or trusted VPN access.
- Firewall restrictions.
Storage Attached to Proxmox
| Storage ID | Type | Primary Role |
|---|---|---|
local |
Directory | ISOs, templates, and selected local content |
local-lvm |
LVM-thin | VM and LXC operating-system disks |
user-data |
LVM-thin | Large application and user-data disks |
pve-backup |
Directory on ext4 | VZDump backup files |
Review storage state using:
pvesm status
All required storage should show as active.
Backup System
Proxmox uses its built-in scheduled backup system.
Backups are written to:
- Storage ID:
pve-backup - Mount point:
/mnt/pve/pve-backup - Physical disk: Dedicated internal 4 TB HDD
The general job uses:
- Snapshot mode.
- ZSTD compression.
- A retention policy.
- Selection of production VMs and LXCs.
The backup mount uses mount-point validation to prevent writing backup data to the Proxmox root filesystem if the HDD is unavailable.
Snapshots
Snapshots are used only for short-term rollback.
Appropriate snapshot cases include:
- Before Authentik changes.
- Before Traefik changes.
- Before operating-system upgrades.
- Before enabling GPU passthrough.
- Before risky application changes.
Snapshots are not backups.
Delete snapshots after the associated change has been validated.
Long-lived snapshots consume thin-pool capacity and increase storage risk.
Planned GPU Passthrough
The RTX 2060 is planned for a dedicated Plex VM.
Before passthrough:
- Confirm VT-d and IOMMU.
- Identify GPU and audio PCI functions.
- Review the IOMMU group.
- Confirm the group contains no critical host devices.
- Create a Proxmox backup.
- Preserve console recovery.
- Use a Q35 and OVMF Plex VM.
- Attach all required RTX 2060 functions.
- Keep the GPU non-primary for the headless Plex VM.
A VM with passed-through hardware cannot use normal live migration.
Proxmox Recovery
If Authentik authentication fails:
- Open the Proxmox login page.
- Select the PAM realm.
- Sign in as
root@pam. - Verify Authentik readiness.
- Verify the Authentik Proxmox provider.
- Verify selected scope mappings.
- Verify the Proxmox realm.
- Review
pvedaemonlogs. - Verify the OIDC user ACL.
- Retest from a private browser session.
If the web interface fails:
- Access the Proxmox console or SSH.
- Verify the Proxmox IP address.
- Verify
pveproxy. - Verify TCP port 8006.
- Review firewall rules.
- Verify storage.
- Restart
pveproxyonly if the service is unhealthy.
If the system disk fails:
- Preserve the user-data NVMe and backup HDD.
- Reinstall Proxmox on replacement system storage.
- Restore networking and storage definitions.
- Reconnect
user-data. - Remount
pve-backup. - Restore guests from backup.
- Recreate the Authentik realm.
- Verify
root@pam. - Test OIDC only after local management works.
Validation Checklist
- Proxmox owns
192.168.2.254. - Pi-hole resolves
pve.bytek.cato192.168.2.254. - Zen or Firefox does not force public DNS for the private hostname.
- TCP port 8006 is reachable from the administrative workstation.
pveproxyis active.root@pamlogin works.- Authentik OIDC login works.
- Authentik user has an explicit Proxmox ACL.
local-lvmis active.user-datais active.pve-backupis active.- Backup jobs complete successfully.
- The backup HDD is mounted before scheduled jobs run.
- No Proxmox management port is exposed publicly.
Document Control
- Owner: Bryan Gagne-Plante
- Private hostname:
pve.bytek.ca - Private address:
192.168.2.254 - Normal authentication: Authentik OIDC
- Emergency authentication:
root@pam - General DNS resolver:
9.9.9.9 - Last verified: YYYY-MM-DD
- Last backup test: YYYY-MM-DD
- Last restore test: YYYY-MM-DD
- OIDC recovery tested: Yes / No
- Known limitations: Single Proxmox host and no current high-availability cluster
No comments to display
No comments to display