Entity: LXC Storage Node (lxc-storage-infra)#
Overview#
Standalone Terraform + Ansible project for a Proxmox LXC container with Samba and NFS-Ganesha file sharing. Data lives on the Proxmox host via bind mount. Container is unprivileged, CT 107, 1vCPU/1GB/10GB.
Repository#
github.com/tazzo/lxc-storage-infra — standalone repo (not in ephemeral-castle)/workspace/lxc-storage-infra/
Quick Facts#
| Property | Value |
|---|
| CT ID | 107 |
| Hostname | lxc-storage |
| IP | 192.168.1.207/24 |
| OS | Ubuntu 24.04 |
| Resources | 1 vCPU, 1 GB RAM, 10 GB rootfs |
| Storage pool | local-lvm |
| Bind mount | /mnt/shared (host) → /mnt/shared (container) |
| Auto-start | start_on_boot=true |
| UID mapping | lxc.idmap per UID 1000 passthrough |
| IPv6 | Disabilitato (UFW IPv4-only) |
Servizi#
| Servizio | Porta | Protocollo | Implementazione |
|---|
| Samba | 139/445 | SMB2/SMB3 | smbd (nmbd disabilitato) |
| NFS | 2049 | NFSv3/v4 | nfs-ganesha (user space) |
| WS-Discovery | 3702/udp | WSD | wsdd2 (Windows discovery) |
| mDNS | 5353/udp | Zeroconf | avahi-daemon (macOS/Android) |
Accesso#
- SMB:
\\192.168.1.207\shared — utente storage, password in ~/secrets/ (o variabile SAMBA_PASSWORD) - NFS:
mount -t nfs4 192.168.1.207:/nfs/shared /mnt/point - SSH:
ssh root@192.168.1.207 con chiave pubblica iniettata - Firewall: UFW active, solo subnet
192.168.1.0/24
Canonical Starting Pages for Agents#
CRISP Design#
- CRISP Project — 3 review cicli, 16 issue risolti, Opzione A (VSO template) per ca.crt
Code Structure#
terraform/ — bpg/proxmox provider, container resourceansible/roles/ — baseline, samba, nfs (NFS-Ganesha), avahi, wsddcreate.sh — 6 fasi: pre-flight, TF, wait SSH, Ansible, verifydestroy.sh — teardown with data preservationsetup-host.sh — one-time config su Proxmox host (subuid, lxc.idmap, bind mount)
Known Issues#
- Bind mount: richiede
root@pam su host Proxmox (API token non basta). setup-host.sh da eseguire una tantum sull’host - Mount da CT 106: NFS/CIFS/FUSE non disponibili su container non privilegiato. Usare
smbclient via script storage
Relationships#
- Host Proxmox: ephemeral-castle — condivide lo stesso hypervisor ma non è gestito da quel repo
- Workspace container: CT 106 (tazpod-proxmox) — accede via SMB/smbclient
- Cluster K8s: tazlab-k8s — non dipende dal cluster
See Also#