Skip to content

Resources

VM and node sizing. Container-level CPU/memory limits are not set in any compose template in this repository — every container in the stack runs unbounded, sized only by its host VM/node's total resources. Add deploy.resources.limits/reservations to a stack's compose.yml.j2 if a specific service ever needs to be capped or guaranteed.

Proxmox VMs

Host Cores Memory Disk Notes
swarm-core 4 8192 MB 100G Sized above the generic default: runs every Core and Apps ("Important") stack
pihole 1 1024 MB 20G (template default) Single-purpose DNS appliance, sized down from the generic default
nextcloud 4 6144 MB 20G (template default) Nextcloud AIO bundles several containers (office, Talk, imaginary)
unifi 2 (default) 4096 MB (default) 40G Cores/memory left at the generic default (UniFi OS Server's stated minimum is met); disk grown because the installer wants ≥15GB free under /home
homeassistant 2 4096 MB Set by the HAOS image, not the cloud-init template No host_vars file — sizing comes entirely from home_assistant role defaults

Generic proxmox_vm role defaults (used unless a host overrides them in its own host_vars/<host>.yml): 2 cores / 4096 MB / 20G disk. The cloud-init template itself (cloud_init_template role) is built at 2 cores / 2048 MB / 20G, then the clone step resizes per-VM via proxmox_vm_disk_size.

Physical / non-Ansible-managed nodes

Host Notes
pve Proxmox hypervisor. Sizing is whatever the physical hardware provides; not managed by this repository.
swarm-media Physical Docker Swarm worker. Holds the NVIDIA GPU used by Emby (transcode) and would be needed for GPU-backed Immich ML if that were ever moved to this tier. Shut down when its workload isn't required — a worker can leave the Swarm this way without affecting manager quorum, which only counts managers.

GPU

docker_install_nvidia_toolkit (role default: {{ (swarm_node_labels|default({})).tier|default('') == 'media' }}, i.e. "on by default for any tier=media node") is explicitly overridden to false in host_vars/swarm-media.ymlno GPU is physically fitted yet. Emby runs CPU transcoding until then. Once fitted: remove that override (or set it true) and re-deploy; the docker role installs the NVIDIA driver and nvidia-container-toolkit, and Emby's GPU reservation block picks up the change automatically (see Emby).

Swarm quorum

A single Swarm manager (swarm-core) has no fault-tolerant quorum: losing it stops scheduling until it returns. This is accepted for the current scale; more managers will be added once there are enough nodes for a real odd-numbered quorum (3+). swarm-media, as a worker rather than a manager, can be shut down without affecting quorum at all.