01 - Architecture

Global Architecture and Request Flow

Purpose

The Bytek homelab provides privately hosted identity, collaboration, documentation, monitoring, project-management, and infrastructure services.

The environment is hosted on Proxmox VE and follows these design principles:

Main Components

Component Address Primary Role
Public VPS 38.29.213.101 Public HTTPS entry point
WireGuard gateway 192.168.2.64 VPS-to-home tunnel gateway
Pi-hole 192.168.2.65 DNS, split DNS, and DHCP reservations
Nextcloud AIO 192.168.2.100 File storage and collaboration
Uptime Kuma 192.168.2.115 Service monitoring
Vikunja 192.168.2.121 Project and task management
Authentik 192.168.2.162 Identity, authorization, and MFA
Traefik 192.168.2.182 HTTPS reverse proxy
Proxmox VE 192.168.2.254 Hypervisor
BookStack Confirm current IP Infrastructure documentation

Core Infrastructure Roles

Proxmox VE

Proxmox VE hosts the Bytek VMs and LXCs.

Proxmox provides:

Proxmox management address:

Open Proxmox VE

Proxmox is intended for LAN or trusted VPN access only.

Public VPS

The VPS is the public entry point for applications hosted at home.

The VPS receives public HTTPS traffic at 38.29.213.101 and forwards permitted traffic through WireGuard.

The VPS prevents each home service from requiring its own public router port forwarding rule.

WireGuard Gateway

The home WireGuard gateway connects the VPS tunnel to the home LAN.

The gateway performs:

Pi-hole

Pi-hole provides:

Pi-hole allows the same application hostname to work both inside and outside the home network.

Traefik

Traefik is the central HTTPS reverse proxy.

Traefik provides:

Authentik

Authentik is the central identity provider.

Authentik provides:

External Application Traffic

When an external user opens an application, traffic moves through the following components:

  1. The user enters an application hostname such as cloud.bytek.ca.
  2. WHC public DNS resolves the hostname to the VPS at 38.29.213.101.
  3. The VPS accepts the HTTPS connection on TCP port 443.
  4. The VPS forwards the traffic through the WireGuard tunnel.
  5. The home WireGuard gateway receives the tunneled traffic.
  6. The gateway forwards the request to Traefik at 192.168.2.182.
  7. Traefik examines the requested hostname.
  8. Traefik forwards the request to the correct internal application.

Nextcloud Example

A public Nextcloud request follows this path:

  1. The browser opens cloud.bytek.ca.
  2. WHC DNS returns 38.29.213.101.
  3. The VPS receives the connection.
  4. The VPS forwards the connection through WireGuard.
  5. The home gateway forwards the request to Traefik.
  6. Traefik forwards the request to Nextcloud at 192.168.2.100 on TCP port 11000.

BookStack Example

A public BookStack request follows this path:

  1. The browser opens docs.bytek.ca.
  2. WHC DNS returns 38.29.213.101.
  3. The VPS receives the connection.
  4. The VPS forwards the connection through WireGuard.
  5. The home gateway forwards the request to Traefik.
  6. Traefik forwards the request to the BookStack VM on TCP port 6875.

Vikunja Example

A public Vikunja request follows this path:

  1. The browser opens projects.bytek.ca.
  2. WHC DNS returns 38.29.213.101.
  3. The VPS receives the connection.
  4. The VPS forwards the connection through WireGuard.
  5. The home gateway forwards the request to Traefik.
  6. Traefik forwards the request to Vikunja at 192.168.2.121 on TCP port 3456.

Internal Application Traffic

LAN devices do not need to leave the home network and return through the VPS.

Pi-hole resolves public application hostnames directly to Traefik.

Hostname Internal Address
cloud.bytek.ca 192.168.2.182
docs.bytek.ca 192.168.2.182
portal.bytek.ca 192.168.2.182
projects.bytek.ca 192.168.2.182
proxy.bytek.ca 192.168.2.182
status.bytek.ca 192.168.2.182

An internal request follows this path:

  1. The LAN client queries Pi-hole.
  2. Pi-hole returns 192.168.2.182.
  3. The client connects directly to Traefik.
  4. Traefik routes the request to the private application backend.

This internal route provides:

Proxmox Private Access

Proxmox does not sit behind Traefik.

Pi-hole resolves:

The administrative path is:

  1. The administrative workstation queries Pi-hole.
  2. Pi-hole returns 192.168.2.254.
  3. The workstation connects to Proxmox on TCP port 8006.

The Proxmox host itself uses Quad9 at 9.9.9.9 rather than Pi-hole.

This prevents the hypervisor from depending on Pi-hole for its own DNS resolution.

Native OIDC Authentication

The following services use native Authentik OpenID Connect:

The authentication sequence is:

  1. The application redirects the browser to portal.bytek.ca.
  2. Authentik requests credentials and MFA.
  3. Authentik evaluates application group and policy bindings.
  4. Authentik redirects the browser to the application callback.
  5. The application validates the returned token.
  6. The application creates or matches the local user.
  7. The application applies its own internal permissions.

OIDC Callback Reference

Application Callback
Nextcloud https://cloud.bytek.ca/apps/user_oidc/code
Vikunja https://projects.bytek.ca/auth/openid/authentik
BookStack https://docs.bytek.ca/oidc/callback
Proxmox VE https://pve.bytek.ca:8006

Proxy Authentication

Some services do not support native OIDC.

Authentik Proxy Providers or ForwardAuth are used for:

Traefik Dashboard

The dashboard request follows this sequence:

  1. The administrator opens proxy.bytek.ca.
  2. Traefik invokes the Authentik ForwardAuth middleware.
  3. The embedded Authentik outpost validates the user.
  4. Authentik requires membership in bytek-admin.
  5. The authenticated request returns to the Traefik dashboard.

Uptime Kuma

The Uptime Kuma request follows this sequence:

  1. The administrator opens status.bytek.ca.
  2. Traefik forwards the request to the Authentik embedded outpost.
  3. Authentik validates the user and policies.
  4. The outpost forwards the request to Uptime Kuma.
  5. Selected public status-page paths may bypass authentication when intentionally configured.

Standard User Access

The Authentik group bytek-users grants access to:

These applications also apply the Allow bytek.ca users policy.

Policy engine mode is set to ALL.

A user must therefore:

Administrator Access

The Authentik group bytek-admin grants access to:

Administrative applications also apply the Allow bytek.ca users policy.

An administrator may belong to both bytek-admin and bytek-users.

Application Access Matrix

Service Authentication Intended Group
Nextcloud Native Authentik OIDC bytek-users
Vikunja Native Authentik OIDC bytek-users
BookStack Native Authentik OIDC bytek-users
Proxmox VE Native Authentik OIDC bytek-admin
Traefik dashboard Authentik ForwardAuth bytek-admin
Uptime Kuma dashboard Authentik Proxy Provider bytek-admin
Pi-hole Local authentication Administrators on LAN
Nextcloud AIO AIO local authentication Administrators on LAN
WireGuard gateway SSH key authentication Administrators
VPS SSH key authentication Administrators

Service URLs

Service URL Access Scope
Authentik Open Authentik Public through Traefik
Nextcloud Open Nextcloud Public through Traefik
Vikunja Open Vikunja Public through Traefik
BookStack Open BookStack Public through Traefik
Uptime Kuma Open Uptime Kuma Authentik-protected
Traefik dashboard Open Traefik Administrators only
Proxmox VE Open Proxmox LAN or VPN only
Nextcloud AIO https://192.168.2.100:8080/ LAN or VPN only

Break-Glass Access

Central authentication must not be the only recovery path.

Proxmox VE

Authentik

Nextcloud

BookStack

Uptime Kuma

Traefik

Pi-hole

Critical Dependencies

Function Dependency Chain
Public applications WHC DNS, VPS, WireGuard, Traefik, application
Internal applications Pi-hole, Traefik, application
OIDC login Application, Traefik, Authentik, Authentik database
Certificate issuance Traefik, DNS, Let’s Encrypt, WHC cPanel API
Monitoring Uptime Kuma, Pi-hole, monitored services
Backups Proxmox, mounted backup HDD

Failure Impact

Failed Component Expected Impact
Pi-hole Internal hostname resolution may fail
VPS External access fails; LAN access should continue
WireGuard External VPS ingress fails
Traefik HTTPS routing fails
Authentik New SSO logins fail
Proxmox VM management fails; running guests may continue
Backup HDD New backups fail; live services continue
Nextcloud File and collaboration services fail
Vikunja Project-management service fails
BookStack Documentation service fails
Uptime Kuma Monitoring and alerts fail

Security Boundaries

The following services must not be exposed directly to the public internet:

Operational Principles

  1. Validate the direct application backend before troubleshooting Traefik.
  2. Validate Traefik locally before troubleshooting the VPS.
  3. Validate Pi-hole before changing application OIDC settings.
  4. Confirm container DNS after a power failure.
  5. Preserve local recovery accounts.
  6. Do not regenerate OIDC secrets until connectivity is proven.
  7. Do not delete Traefik certificate storage during troubleshooting.
  8. Do not treat snapshots as backups.
  9. Test restored VMs with their network adapter disconnected.
  10. Update documentation after each validated infrastructure change.

Document Control

Network and Address Reference

Purpose

This page documents the addressing, DNS, routing, and network-access model used by the Bytek homelab.

Use this page when:


Home Network

Setting Value
LAN subnet 192.168.2.0/24
Default gateway 192.168.2.1
LAN DNS server 192.168.2.65
Router Bell Giga Hub 2.0
Public domain bytek.ca
Public DNS provider WHC cPanel
Public VPS address 38.29.213.101
Internal HTTPS proxy 192.168.2.182

Service Address Inventory

Service Private Address Primary Ports Access Scope
WireGuard gateway 192.168.2.64 Existing WireGuard port and SSH Infrastructure
Pi-hole 192.168.2.65 TCP and UDP 53 LAN
Nextcloud AIO 192.168.2.100 TCP 8080 and TCP 11000 LAN management and Traefik backend
Uptime Kuma 192.168.2.115 TCP 3001 Authentik proxy and monitoring
Vikunja 192.168.2.121 TCP 3456 Traefik backend
Authentik 192.168.2.162 TCP 9000 Traefik and internal services
Traefik 192.168.2.182 TCP 443 LAN and public ingress
Proxmox VE 192.168.2.254 TCP 8006 and TCP 22 LAN or trusted VPN
BookStack Confirm current IP TCP 6875 Traefik backend

Public Hostname Inventory

Service Public Hostname Public DNS Destination
Nextcloud cloud.bytek.ca 38.29.213.101
BookStack docs.bytek.ca 38.29.213.101
Authentik portal.bytek.ca 38.29.213.101
Vikunja projects.bytek.ca 38.29.213.101
Traefik dashboard proxy.bytek.ca 38.29.213.101
Uptime Kuma status.bytek.ca 38.29.213.101

The public application records are managed through the WHC cPanel Zone Editor.

The public DNS destination is the VPS, not the private application address.


Private Hostname Inventory

Service Private Hostname Pi-hole Destination
Nextcloud cloud.bytek.ca 192.168.2.182
BookStack docs.bytek.ca 192.168.2.182
Authentik portal.bytek.ca 192.168.2.182
Vikunja projects.bytek.ca 192.168.2.182
Traefik dashboard proxy.bytek.ca 192.168.2.182
Uptime Kuma status.bytek.ca 192.168.2.182
Proxmox VE pve.bytek.ca 192.168.2.254

All HTTPS application hostnames point internally to Traefik.

Proxmox is the exception because Proxmox does not sit behind Traefik.


Public DNS Flow

When an external client opens a hosted application:

  1. The client requests an application hostname such as docs.bytek.ca.
  2. Public DNS at WHC returns 38.29.213.101.
  3. The client connects to the VPS.
  4. The VPS forwards permitted traffic through WireGuard.
  5. The home WireGuard gateway forwards the request to Traefik.
  6. Traefik routes the request to the matching internal service.

Public DNS must never point directly to a private address such as 192.168.2.121.

Private RFC1918 addresses are not reachable from the public internet.


Internal Split-DNS Flow

When a client on the home LAN opens a hosted application:

  1. The client queries Pi-hole at 192.168.2.65.
  2. Pi-hole returns Traefik’s address, 192.168.2.182.
  3. The client connects directly to Traefik.
  4. Traefik routes the request to the matching backend.

This allows internal clients to use the same application hostnames and HTTPS certificates as external clients.

Benefits include:


Public and Private DNS Comparison

Hostname Public Result Internal Pi-hole Result
cloud.bytek.ca 38.29.213.101 192.168.2.182
docs.bytek.ca 38.29.213.101 192.168.2.182
portal.bytek.ca 38.29.213.101 192.168.2.182
projects.bytek.ca 38.29.213.101 192.168.2.182
proxy.bytek.ca 38.29.213.101 192.168.2.182
status.bytek.ca 38.29.213.101 192.168.2.182
pve.bytek.ca No public record 192.168.2.254

Proxmox DNS Design

The Proxmox host intentionally uses Quad9:

Proxmox does not use Pi-hole as its general resolver.

This design prevents the hypervisor from depending on a guest VM or LXC for DNS.

As a result, the Proxmox host normally resolves:

The Proxmox OIDC server-to-server path can therefore travel through:

  1. Proxmox.
  2. Public VPS.
  3. WireGuard.
  4. Traefik.
  5. Authentik.

If this public path causes a future OIDC reliability issue, a single entry may be added to the Proxmox /etc/hosts file:

This would route only Authentik directly through local Traefik while keeping general Proxmox DNS on Quad9.


Proxmox Private Hostname

The hostname pve.bytek.ca is intentionally private.

Pi-hole resolves it to:

No public WHC record should exist for pve.bytek.ca.

The Proxmox interface is accessed at:

Open Proxmox VE

Access should be limited to:

TCP port 8006 must not be exposed directly to the public internet.


Application Backend Reference

Traefik connects to each application using a private IP and backend port.

Hostname Backend Destination
cloud.bytek.ca 192.168.2.100:11000
docs.bytek.ca BookStack private IP on TCP 6875
portal.bytek.ca 192.168.2.162:9000
projects.bytek.ca 192.168.2.121:3456
status.bytek.ca Uptime Kuma or Authentik outpost
proxy.bytek.ca Traefik internal dashboard service

Backend ports should be accessible only from the systems that require them.

For example:


DHCP Reservations

Infrastructure services should use DHCP reservations based on their virtual NIC MAC addresses.

Known reservations include:

Service Reserved Address
Nextcloud 192.168.2.100
Uptime Kuma 192.168.2.115
Vikunja 192.168.2.121

Additional infrastructure reservations should be confirmed in Pi-hole before being added to this page.

To locate a VM MAC address on Proxmox, use:

qm config <VMID>

Locate the net0 line and record the MAC address.

For an LXC, use:

pct config <CTID>

Reservations prevent unexpected address changes from breaking:


Firewall Source Reference

Known infrastructure sources include:

Source Address
WireGuard gateway 192.168.2.64
Pi-hole 192.168.2.65
Uptime Kuma 192.168.2.115
Authentik 192.168.2.162
Traefik 192.168.2.182
Proxmox 192.168.2.254

Typical firewall requirements include:

Avoid broad any-source rules when a specific infrastructure source can be used.


Browser Secure-DNS Warning

Firefox and Zen can use DNS over HTTPS and bypass Pi-hole.

This can cause private hostnames such as pve.bytek.ca to fail even when Pi-hole is configured correctly.

If an internal hostname fails only in the browser:

  1. Confirm the hostname resolves from the operating system.
  2. Query Pi-hole directly.
  3. Disable forced DNS over HTTPS.
  4. Clear the operating-system DNS cache.
  5. Clear the browser DNS cache.
  6. Close idle browser sockets.
  7. Completely restart the browser.

Useful Windows commands:

Expected result:


DNS Validation

Verify an Internal Record

Use:

nslookup portal.bytek.ca 192.168.2.65

Expected result:

Verify a Public Record Through Pi-hole

Use:

nslookup google.com 192.168.2.65

Expected result:

Verify Public WHC DNS

Query an authoritative WHC server and confirm that application hostnames resolve to:

Verify a Backend Port

Examples:

A successful connection confirms TCP reachability but does not prove the application is healthy.


Network Troubleshooting Order

When a hostname is unreachable, troubleshoot in this order:

  1. Confirm the destination VM or LXC is running.
  2. Confirm the destination still owns the documented IP.
  3. Confirm the hostname resolves to the expected address.
  4. Confirm the required TCP or UDP port is reachable.
  5. Test the application directly by private IP.
  6. Test the application through Traefik locally.
  7. Test the application through the public VPS path.
  8. Check browser secure-DNS settings.
  9. Review Proxmox and guest firewall rules.
  10. Review application and Traefik logs.

Do not change DNS, firewalling, and application configuration simultaneously.


Address-Change Procedure

If a service IP changes:

  1. Create or update the Pi-hole DHCP reservation.
  2. Renew the guest lease or restart the guest.
  3. Confirm the guest owns the new address.
  4. Update the Traefik backend.
  5. Update Proxmox firewall source or destination rules.
  6. Update Uptime Kuma monitors.
  7. Update Authentik Proxy Provider internal hosts if applicable.
  8. Update documentation.
  9. Search service configuration for the old address.
  10. Test internal and external access.

A stale backend IP previously affected several deployment steps, so the old address should be searched across configuration files after every change.


Document Control

Storage Architecture

Purpose

This page documents the physical disks, Proxmox storage pools, logical-volume layout, filesystem mounts, and intended storage roles within the Bytek homelab.

The storage architecture separates:

The main design goal is to prevent application data, operating-system disks, and backups from competing for the same physical storage role.


Storage Overview

Storage Tier Approximate Capacity Proxmox Storage Primary Purpose
System NVMe 1 TB local-lvm Operating systems and infrastructure services
User-data NVMe 4 TB user-data Large application and user-data disks
Backup HDD 4 TB pve-backup Proxmox VZDump backups

Physical Disk Inventory

Linux Device Approximate Usable Size Device Type Current Role
/dev/nvme1n1 931.5 GiB NVMe SSD Proxmox operating system and local-lvm
/dev/nvme0n1 3.6 TiB NVMe SSD user-data LVM-thin storage
/dev/sda 3.6 TiB WDC HDD Dedicated Proxmox backup storage

Linux device names such as /dev/sda can change between boots or hardware changes.

Permanent references should use:


System NVMe

Physical Device

Setting Value
Linux device /dev/nvme1n1
Approximate capacity 931.5 GiB
Partition table GPT
Primary volume group pve

Partition Layout

Partition Approximate Size Purpose
/dev/nvme1n1p1 1007 KiB Boot support partition
/dev/nvme1n1p2 1 GiB EFI system partition
/dev/nvme1n1p3 930.5 GiB Proxmox LVM physical volume

Logical Volumes

Logical Volume Approximate Size Purpose
pve-root 96 GiB Proxmox root filesystem
pve-swap 8 GiB Proxmox swap
pve-data 794.3 GiB Proxmox LVM-thin pool

Proxmox Storage

The pve-data thin pool appears in Proxmox as:

Intended Use

The system NVMe stores:

Current Workloads

The system NVMe currently stores operating-system disks for services such as:

Storage Policy

Use local-lvm for:

Avoid using local-lvm for:


User-Data NVMe

Physical Device

Setting Value
Linux device /dev/nvme0n1
Approximate capacity 3.6 TiB
Device purpose Large application and user data
LVM volume group lvm1
Thin pool data

LVM-Thin Layout

The user-data NVMe contains:

These components represent:

Proxmox Storage

The thin pool appears in Proxmox as:

Intended Use

The user-data NVMe stores:

Current Major Workload

Nextcloud has a separate virtual data disk on user-data.

Setting Value
Nominal virtual-disk size 500 GB
Guest filesystem ext4
Guest mount point /mnt/nextcloud-data
Nextcloud data directory /mnt/nextcloud-data/ncdata

The Nextcloud operating system remains on local-lvm, while user files remain on user-data.

This separation makes it easier to:


Thin Provisioning

The local-lvm and user-data storage pools use LVM-thin provisioning.

A thin-provisioned virtual disk does not immediately consume its full nominal capacity.

For example, a 500 GB virtual disk initially consumes only the physical blocks that have actually been written.

Important Consequence

The sum of all nominal virtual-disk sizes may exceed the physical capacity of the thin pool.

This is safe only when actual usage is monitored.

If the thin pool reaches full physical allocation, affected VMs may experience:


Thin-Pool Monitoring

Review Proxmox storage usage using:

pvesm status

Review LVM-thin usage using:

lvs -a -o vg_name,lv_name,segtype,lv_attr,lv_size,data_percent,metadata_percent

Monitor both:

Suggested operational thresholds:

Utilization Response
Below 70 percent Normal monitoring
70 to 84 percent Review growth and available capacity
85 percent or higher Immediate capacity planning
Near 100 percent Critical risk of storage failure

These thresholds are operational recommendations and should be adjusted based on growth rate and workload importance.


Backup HDD

Physical Device

Setting Value
Linux device /dev/sda
Partition /dev/sda1
Approximate usable capacity 3.6 TiB
Filesystem ext4
Partition table GPT
Stable WWN 0x5000cca097c44d7e

Permanent Mount

Setting Value
Mount point /mnt/pve/pve-backup
Proxmox storage ID pve-backup
Proxmox content type VZDump backup files
Mount method Filesystem UUID through /etc/fstab

The filesystem UUID is used instead of /dev/sda1 because Linux device letters can change.

Mount Options

The backup filesystem uses:

Mount-Point Protection

The Proxmox storage uses mount-point validation.

This prevents Proxmox from treating the empty directory /mnt/pve/pve-backup as valid storage when the HDD is not mounted.

Without this protection, a failed HDD mount could cause backups to be written to the Proxmox root filesystem.

That could fill the root filesystem and disrupt the hypervisor.


Backup-HDD Intended Use

The backup HDD stores:

The backup HDD must remain dedicated to backups.


Prohibited Backup-HDD Uses

Do not use the backup HDD for:

Mixing active workloads with backups would:


Storage Placement Rules

Workload Preferred Storage
Infrastructure OS disk local-lvm
Application OS disk local-lvm
Nextcloud user data user-data
Vikunja database and files Current VM OS disk unless growth requires separation
BookStack database and files Current VM OS disk unless growth requires separation
Plex configuration and metadata local-lvm or a dedicated application disk
Plex media Future dedicated media storage
Game-server executable files Dedicated game-server disk or user-data
Game world and save data user-data with backup enabled
Proxmox backup archives pve-backup
Short-term snapshots Same thin pool as the source disk

Future Plex Storage

The RTX 2060 Plex VM should not use the backup HDD for media.

A temporary media disk may be created on user-data for initial testing.

Long-term media storage should ideally use:

Media capacity planning must account for continued Nextcloud growth on user-data.


Future Game-Server Storage

A dedicated game-server VM should use:

Steam-installed server binaries can usually be downloaded again.

Unique game-world data, configuration files, allowlists, bans, and mods require backup.


Storage Expansion Principles

Before adding physical storage, decide whether the new disk is intended for:

Avoid adding unrelated physical disks into an existing unmirrored LVM volume group merely to increase capacity.

Safer future expansion patterns include:

  1. Create a new independent Proxmox storage pool.
  2. Move selected VM disks to the new pool.
  3. Replace a smaller disk with a larger disk.
  4. Add mirrored storage for critical data.
  5. Add a dedicated media-storage pool.
  6. Add a dedicated Proxmox Backup Server.
  7. Add an encrypted offsite backup target.

Failure-Domain Considerations

System NVMe Failure

Expected impact:

Recovery would require:

User-Data NVMe Failure

Expected impact:

Backup HDD Failure

Expected impact:

Complete Host Failure

Expected impact:

This is the primary reason a future offsite or separate-host backup is required.


Snapshot Policy

Proxmox snapshots are used as short-term rollback points.

Snapshots are not backups because:

Delete unnecessary snapshots after the associated change has been validated.

Avoid snapshots with RAM unless restoring the exact running state is required.


Storage Validation

Confirm Proxmox Storage

Use:

pvesm status

Expected storage IDs include:

Confirm Backup Mount

Use:

findmnt /mnt/pve/pve-backup

The source should be /dev/sda1.

Confirm Backup Capacity

Use:

df -h /mnt/pve/pve-backup

Confirm Physical Devices

Use:

lsblk -e7 -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,MOUNTPOINTS,MODEL,SERIAL,WWN

Confirm Thin-Pool Utilization

Use:

lvs -a -o vg_name,lv_name,segtype,lv_attr,lv_size,data_percent,metadata_percent

Confirm Storage Configuration

Use:

cat /etc/pve/storage.cfg

Do not store credentials or secrets in the documentation when recording command output.


Disk-Health Monitoring

The backup HDD should be monitored using SMART.

Stable backup-HDD identifier:

/dev/disk/by-id/wwn-0x5000cca097c44d7e

Useful checks:

Important attributes include:

Pending or uncorrectable sectors require immediate review.

NVMe health should also be reviewed periodically using the appropriate NVMe SMART tools.


Capacity Review Checklist

Perform a storage review when:

Review:

  1. Physical free capacity.
  2. Thin-pool data utilization.
  3. Thin-pool metadata utilization.
  4. Snapshot count.
  5. Backup-HDD free space.
  6. Nextcloud data growth.
  7. Media-storage requirements.
  8. Restore-capacity requirements.
  9. Backup-retention effectiveness.

Current Limitations

The current storage architecture does not provide disk redundancy.

The system NVMe, user-data NVMe, and backup HDD are independent single devices.

The architecture protects against some logical failures through backups, but does not provide uninterrupted operation after a physical disk failure.

The local backup HDD is in the same:

Future priorities include:


Document Control