Mi-am mutat toate proiectele personale și tool-urile de self-hosting pe un mini PC luat de pe OLX. Am scăpat de facturile lunare de la AWS și DigitalOcean și am învățat o grămadă de chestii pe parcurs. În postarea asta vă spun exact cât a costat, ce rulez pe el și cum am legat totul prin Tailscale fără să deschid vreun port în router.
Hardware-ul: Cât a costat și de ce mini PC?
Mult timp am cochetat cu ideea unui server rackabil în debara, dar când am calculat consumul de curent și zgomotul, mi-a trecut repede. Am mers pe varianta pragmatică: un mini PC refurbished.
Am cumpărat un Lenovo ThinkCentre M720q Tiny cu următoarele spec-uri:
- CPU: Intel Core i5-8500T (6 nuclee, consum mic)
- RAM: 16 GB DDR4 (am mai pus eu încă 16 GB ulterior, acum am 32 GB)
- Stocare: SSD NVMe de 512 GB plus un SSD SATA de 1 TB pentru backup-uri
- Preț inițial: 650 RON pe OLX. Cu upgrade-urile de RAM și stocare, am ajuns la un total de vreo 1100 RON.
La priză consumă undeva între 8W în idle și 35W în load maxim. În medie, îmi adaugă cam 5-7 lei pe lună la factura de curent. E absolut silențios; stă ascuns după monitor și uit că există.
Docker și ce rulez pe el
Sistemul de operare e un Ubuntu Server chior. Nu m-am complicat cu Proxmox pentru că nu aveam nevoie de virtualizare completă. Docker își face treaba perfect și e mult mai light pe resurse.
Am un singur repo de Git unde țin toate fișierele docker-compose.yml. În caz că moare SSD-ul, dau un git clone pe o mașină nouă și în 10 minute am totul sus. La un moment dat, aveam vreo 18 containere pornite și memoria RAM abia trecea de 40%.
Iată ce rulez zilnic:
- AdGuard Home: Îmi blochează reclamele la nivel de rețea pentru toate dispozitivele din casă.
- Uptime Kuma: Monitorizează site-urile mele și trimite alerte pe Telegram dacă pică ceva.
- Nginx Proxy Manager: Pentru reverse proxy și certificate SSL automate de la Let's Encrypt.
- PostgreSQL & Redis: Instanțe de dev pe care le folosesc când lucrez de pe laptop. Nu mai încarc mașina locală cu baze de date.
- Gitea: Alternativa mea locală la GitHub pentru scripturi interne și configurări.
Magia numită Tailscale
Cea mai mare problemă la self-hosting acasă este IP-ul dinamic de la provider (Digi în cazul meu) și riscul de securitate când expui porturi în internet. Aici intervine Tailscale.
Tailscale este un VPN de tip mesh bazat pe WireGuard. L-am instalat pe mini PC, pe laptop și pe telefon. Toate aceste dispozitive fac acum parte dintr-o rețea privată virtuală (Tailnet). Mini PC-ul are un IP stabil în această rețea (de exemplu, 100.120.15.20).
Pentru a accesa Portainer sau baza de date PostgreSQL de oriunde din lume, pur și simplu mă conectez la IP-ul de Tailscale. Nu am deschis niciun port în routerul de acasă. Zero expunere la scanerele de IP-uri care caută porturi SSH deschise.
Trade-off-uri sincere
Configurația asta e genială pentru mine, dar are și minusuri evidente.
În primul rând, am un singur punct de eșec (Single Point of Failure). Dacă pică curentul sau netul acasă, toate serviciile mele sunt offline. Nu am UPS (încă) și nici conexiune de backup. Pentru proiecte comerciale de producție e exclus să folosești așa ceva.
În al doilea rând, backup-urile sunt responsabilitatea mea exclusivă. Am un script cron care face backup la volumele Docker și le urcă criptat în Backblaze B2, dar dacă uit de el și se strică ceva, pierd date. Pe AWS plătești tocmai liniștea asta că altcineva are grijă de infrastructură.
Per total, am economisit cam 30-40 de dolari pe lună pe care îi dădeam pe servere virtuale de test. Plus că viteza de scriere pe un SSD NVMe local e infinit mai mare decât pe cel mai ieftin VPS de la DigitalOcean.
Voi aveți vreun homelab acasă sau preferați să lăsați totul în cloud și să dormiți liniștiți? Ce rulați pe ele?