Infrastructure

Home

Proxmox host running Debian 12 Bookworm with six LXC containers and two ZFS pools.


Storage Pools

Name Type Total Used Notes
tank ZFS 3.77 TB ~23% Primary data — host path /tank/, mounted as /mnt/tank/ inside containers
local-ssd dir 239 GB ~64% SSD (PCT 102 rootfs)
local-lvm lvmthin 354 GB ~17% LVM thin (PCT 108 rootfs)
local dir 98 GB ~34% Proxmox local storage

ZFS ACLs: tank/appdata has acltype=posixacl. Use setfacl when a non-owner user needs access.


LXC Mount Points

PCT 101 (downloads — 192.168.2.190)

Mount Host Container
mp2 /tank/appdata /mnt/tank/appdata

PCT 102 (media-core — 192.168.2.191)

Privileged container. Full ZFS tank pool mounted.

Mount Host Container
mp0 /tank/ /mnt/tank/

Media library root: /mnt/tank/media/content/ — movies, tv, music, books, audiobooks, podcasts, comics, roms

PCT 104 (documents — 192.168.2.105)

Privileged container. Only /tank/media and /tank/appdata/nextcloud are mounted — not the full tank.

Mount Host Container Notes
mp0 /tank/media /mnt/tank/media Media library
mp1 /mnt/media-storage /mnt/media-storage Separate media storage
mp2 /tank/appdata/nextcloud /mnt/tank/appdata/nextcloud Nextcloud data (migrated 2026-05-25)
lxc.mount.entry /tank/docker tank/docker Docker storage on ZFS, not rootfs

PCT 107 (debian — 192.168.2.81)

Mount Host Container
mp1 /tank/appdata/nextcloud/data/data/nextcloud/files/obsidian /mnt/obsidian

PCT 108 (network — 192.168.2.82)

Swarm manager. Appdata on rootfs (local-lvm), NOT ZFS. Portainer compose files are on ZFS.

Mount Host Container
mp0 /tank/ /mnt/tank/

PCT 109 (ai — 192.168.2.83)

Privileged container. lxc.apparmor.profile: unconfined (required for docker build). Not a Swarm node.

Mount Host Container Notes
mp0 /tank/appdata/nextcloud/data/data/nextcloud/files/obsidian /mnt/obsidian Obsidian vault (read-write)

GPU Passthrough

NVIDIA GPU passthrough is configured for PCT 102, 104, and 109 via lxc.cgroup2.devices.allow and lxc.mount.entry in /etc/pve/lxc/<vmid>.conf.

PCT 102: GTX card, full media stack (Jellyfin transcoding, Immich ML) PCT 104: GTX 1050 — Immich machine-learning (CUDA) PCT 109: NVIDIA GPU — Whisper transcription

nvidia-container-toolkit is installed in each. Docker default runtime set to nvidia in /etc/docker/daemon.json.

To enable GPU in a container, set:

environment:
  NVIDIA_VISIBLE_DEVICES: all
  NVIDIA_DRIVER_CAPABILITIES: all

After a Proxmox host driver upgrade: update versioned lib filenames in /etc/pve/lxc/<vmid>.conf and reboot the affected container.


Management Scripts (Proxmox host /root/)

Script Purpose
create-app-folders.sh Create /tank/appdata/<app> dirs with 1000:1000
setup-lxc-bind-mounts.sh Add ZFS bind mounts to LXC containers (DRY_RUN=false to apply)
create_lxc.sh <CTID> <HOST> <IP> Provision new Ubuntu 22.04 LXC
migrate-appdata-to-zfs.sh Migrate appdata from rootfs to ZFS dataset