Jurnalul lui ThinkRoot

bine ai venit în colțul meu de internet

O zi în care am lucrat la HomeLab

Am petrecut o bună parte din zi lucrând la HomeLab-ul meu și m-am ales cu câteva lucruri rezolvate pe care le tot amânam.

Am început cu Portainer. Până acum gestionam toate containerele Docker exclusiv din terminal, ceea ce funcționează bine, dar uneori ai nevoie să arunci rapid un ochi la starea serviciilor fără să te conectezi prin SSH. Am instalat Portainer CE pe NUC folosind Docker Compose, consistent cu restul serviciilor pe care le am în /opt/services/.

Tot pe NUC am instalat și n8n, un tool de automatizare cu interfață vizuală. L-am pus în spatele Caddy cu Tailscale, accesibil la thinkserver.tailxxxx.ts.net/5443. N8n are nevoie de câteva variabile de mediu ca să știe că rulează sub un subpath, altfel linkurile din interfață se strică.

Seara m-am apucat de pagina de start personalizată pe care o am pe serverul web. Voiam de mult să scot parola și să mut serviciile self-hosted pe o adresă separată, greu de ghicit. Am creat un fișier .php cu header X-Robots-Tag: noindex și meta noindex, unde am mutat secțiunea cu serviciile. Pagina principală a rămas publică și curată.

Tot la pagina asta am prins un bug: după ce am șters secțiunea cu IP-urile locale, statusul serviciilor nu mai apărea deloc. Problema era că funcția renderIPs() rămăsese apelată în cod, dar LOCAL_IPS nu mai era definit nicăieri. Asta arunca un ReferenceError care oprea execuția JavaScript înainte să ajungă la renderStatus(). Am scos funcția și apelul ei și a mers din prima.

Am adăugat și serviciile de pe PC-ul meu (rootlinux) în Uptime Kuma, care rulează pe NUC. Le-am monitorizat prin IP-ul PC-ului. Am configurat și badge-uri live în pagina de start, cu atributele data-monitor care trebuie să coincidă exact cu numele din Kuma - în cazul meu Invidious - PC și Scrutiny - PC.

Nu a fost o zi cu un singur proiect mare, ci mai degrabă un sprint de lucruri mici care se adunaseră. Acum totul e la locul lui.

⬅ The one before
Nu orice loc de muncă poate fi înlocuit de AI

Up next ➡
Ce este Matrix și de ce ar trebui să-l folosești