Context
Platforma care găzduiește totul restul din acest portofoliu. Două mini PC-uri într-un rack 4U trag aproximativ 50W în idle, rulează 15 containere LXC între ele și servesc fiecare proiect intern pe care îl livrez, pipeline-ul de știri FB-Media, stiva video ContentForge, dashboard-ul de monitorizare live, serviciul de notificări homelab.
Există pentru că facturile cloud se adună rapid pentru proiecte care nu sunt încă terminate și pentru că un studio de o persoană este propriul său client cel mai pretențios. Platforma trebuie să fie plictisitoare: predictibilă, reproductibilă, recuperabilă dintr-o singură comandă.
Brief
- Cluster cu două noduri pe hardware de consumator (fără echipament enterprise).
- Toate serviciile în containere LXC, fără overhead de kernel per VM.
- GPU passthrough către containerul de inferență, servire LLM local fără un host GPU separat.
- Reconstrucție dintr-o singură comandă: pierzi un nod, rulezi un singur playbook, recuperezi nodul.
- Servicii publice în spatele Cloudflare; servicii private pe LAN flat.
- Buget de putere idle sub 60W combinat.
Arhitectură
Două noduri Proxmox:
- Nod servicii (pve-desktop), 15 containere pe subnetul de servicii. Găzduiește dashboard-ul (CT 208), fan-out-ul de notificări (CT 209), toolchain-ul intern de tip Git și infrastructura partajată (Pi-hole DNS, WireGuard, Traefik, Prometheus, Grafana).
- Nod laborator (pve-asus), mai puține containere, dar mai puternice, pentru inferență și experimentare. Găzduiește containerul Ollama cu GPU passthrough cu o placă NVIDIA pentru servire LLM local.
Ambele noduri sunt provizionate end-to-end cu Ansible. Arborele de playbook-uri acoperă: configurare kernel + Proxmox, provizionare containere per host, fișiere de rol specifice serviciului (unul per CT), reguli firewall la nivel de host (nftables), gestionare certificate TLS și sincronizare DNS Cloudflare.
O migrare Terraform este în lucru, scopul este să înlocuim playbook-urile de provizionare Ansible cu module Terraform pentru primitivele de cloud-shape (containere, rețele, certificate) păstrând Ansible pentru configurarea serviciilor în containere. Tiparul este onest: infrastructură declarativă acolo unde Terraform se potrivește, configurare imperativă acolo unde Ansible câștigă deja.
Rezultate
- 15 containere LXC rulând pe două noduri Proxmox.
- GPU passthrough către containerul de inferență, aceeași stație de lucru care rulează sidecar-ul de dashboard.
- Putere idle: ~50W combinat, măsurat la priză.
- Provizionare dintr-o singură comandă,
ansible-playbook site.ymlreconstruiește oricare nod de la metal gol în sub 20 de minute. - Cinci servicii publice în spatele Cloudflare cu certificate
*.bytecraftmedia.eureînnoite automat. - Zero întreruperi neplanificate de când playbook-urile Ansible au atins paritatea.
Capturi de ecran


Ce urmează
Trei elemente pe lista pentru iterația următoare:
- Fixează structura modulelor Terraform înainte de a porni un al treilea nod. Adaptarea inventarului Ansible în mijlocul migrării a fost o săptămână de rework evitabil, al doilea nod ar fi fost mai rapid dacă împărțirea Terraform/Ansible ar fi fost decisă din start.
- Promovează regulile de firewall de la nftables la nivel de host la o sursă de adevăr gestionată central. În prezent fiecare nod are propriul set de reguli; un mic rol Ansible + o variabilă Terraform ar reduce drift-ul.
- Replicare snapshot off-rack, în prezent snapshot-urile de container ale platformei trăiesc pe aceleași noduri care le produc. Un mic job lunar care trimite snapshot-uri comprimate către un bucket Cloudflare R2 ar închide gap-ul de disaster-recovery fără adăugare de hardware.