====== Freenet - instalare și depanare ====== Acest tutorial acoperă instalarea Freenet-ului pe un sistem Linux, pornirea ca serviciu de sistem și rezolvarea celor mai frecvente probleme de conectare la rețea. **Notă importantă:** ghidul se referă la Freenet-ul actual (freenet.org, rescris în Rust, cunoscut și ca "Freenet 2023"), nu la vechiul Freenet dinainte de 2023, care acum se numește Hyphanet ([[https://hyphanet.org|hyphanet.org]]). ===== Ce este Freenet ===== Freenet e o platformă peer-to-peer pentru aplicații descentralizate: chat, publicare de situri, email, colaborare Git, fără server central. Nodurile formează o rețea organizată sub forma unui inel ("ring"), iar mesajele ajung la destinație în câțiva pași, indiferent câte noduri sunt în rețea. Spre deosebire de vechiul Freenet, cel nou nu oferă anonimitate din construcție - scopul e descentralizarea, nu ascunderea identității. * **Sit oficial:** [[https://freenet.org|freenet.org]] * **Istoric proiect:** [[https://freenet.org/about/history/|freenet.org/about/history]] * **Întrebări frecvente:** [[https://freenet.org/faq/|freenet.org/faq]] * **Prezentare video:** [[https://www.youtube.com/watch?v=3RBNboYUlVI|Freenet: Services Without Servers]] (FUTO, 2026) ===== Instalare pe Linux ===== Instalarea e o singură comandă: curl -fsSL https://freenet.org/install.sh | sh Scriptul descarcă binarul în ''~/.local/bin/freenet'', îl instalează și pornește un serviciu de fundal pentru utilizatorul curent. **Sursă:** [[https://freenet.org/quickstart/|freenet.org/quickstart]] ==== Containere și servere fără interfață grafică ==== Dacă instalarea automată a serviciului eșuează (frecvent pe LXC sau Docker), instalează serviciul la nivel de sistem manual: sudo /calea/completă/către/freenet service install --system sudo systemctl daemon-reload sudo systemctl enable --now freenet **Important:** folosește calea completă la binar cu ''sudo'' (de exemplu ''/home/utilizator/.local/bin/freenet''), nu doar ''freenet''. Binarul ajunge de obicei în ''~/.local/bin'', care e în PATH-ul utilizatorului obișnuit, dar nu neapărat și în cel al lui ''root''. ===== Verificarea stării serviciului ===== freenet service status sau, echivalent, prin systemd: systemctl status freenet Ar trebui să arate ''Active: active (running)'' și ''enabled''. Pentru loguri live, fără să ții un terminal dedicat: journalctl -u freenet -f ===== Depanare: comanda "freenet" nu e găsită ===== Dacă ''which freenet'' nu întoarce nimic, dar binarul există (verifică cu ''find ~ -iname "freenet" -type f''), problema e că directorul ''~/.local/bin'' nu e în PATH. Soluție permanentă, adăugată în ''~/.bashrc'': echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ===== Depanare: nodul nu se conectează la rețea (zero conexiuni în ring) ===== Simptome tipice în ''journalctl -u freenet -f'': WARN freenet::ring: Zero ring connections detected — starting isolation timer WARN freenet::ring: acquire_new: no routing candidates found ERROR freenet::transport::connection_handler: Failed NAT traversal, error: max connection attempts reached Freenet folosește UDP hole punching pentru conexiuni directe între noduri. Câteva cauze posibile, în ordinea probabilității: - **Interfețe de rețea multiple active simultan** (de exemplu Ethernet și WiFi pe același sistem, ambele cu rută implicită). Kernelul poate alege inconsistent interfața de ieșire pentru pachetele UDP, ceea ce bulversează hole punching-ul. Verifică cu: ip route | grep default Dacă apar două rute implicite, dezactivează interfața redundantă (vezi secțiunea următoare). - **Firewall local** care blochează UDP. Verifică: sudo ufw status - **Router fără suport UPnP** sau cu NAT restrictiv (simetric). Majoritatea routerelor de-acasă merg fără configurare suplimentară; echipamentele de rețea mai avansate, din medii de tip homelab, pot avea UPnP dezactivat implicit. - **Instanțe multiple ale procesului** concurând pe același port. Verifică: pgrep -af "freenet network" Ar trebui un singur proces. Reținere: eșecul individual la conectarea cu un anumit peer (log cu ''max connection attempts reached'') e normal și așteptat - Freenet reîncearcă automat cu alți peers prin mecanismul de gateway bootstrap. Problema reală e doar dacă rămâne la zero conexiuni în ring mai mult de câteva minute. ==== Dezactivarea permanentă a unei interfețe de rețea redundante (netplan) ==== Dacă sistemul folosește netplan și configurația de bază e generată de cloud-init (de obicei ''/etc/netplan/50-cloud-init.yaml'', needitabilă direct fără riscul de a fi suprascrisă), creează un fișier separat cu prioritate mai mare: sudo nano /etc/netplan/60-disable-wifi.yaml network: version: 2 wifis: NUME_INTERFATA: dhcp4: false access-points: {} sudo chmod 600 /etc/netplan/60-disable-wifi.yaml sudo netplan generate sudo netplan apply Verifică rezultatul: ip addr show NUME_INTERFATA ip route | grep default Interfața nu ar trebui să mai aibă adresă IPv4 alocată, iar ''ip route'' ar trebui să arate o singură rută implicită. ===== Resurse de sistem ===== Freenet e scris în Rust și rulează ca un singur proces ușor, spre deosebire de vechiul Freenet/Hyphanet (Java). Consum tipic observat în practică, în stare de repaus, după conectare stabilă la rețea: ^ Resursă ^ Valoare tipică ^ | RAM | 6-25 MB | | CPU | sub 1% | | Task-uri systemd | 5-10 | Diferența e nesemnificativă chiar și pe hardware modest (Celeron, NUC-uri de generație mai veche). Singurul lucru de urmărit pe termen lung nu e CPU sau RAM, ci spațiul pe disc și traficul de rețea, pentru că nodul relayează trafic pentru alți participanți din rețea, nu doar consumă. ===== Manualul oficial ===== Documentația completă e la [[https://freenet.org/build/manual/|freenet.org/build/manual]], organizată pe: introducere, componente (contracte, delegați, interfețe), arhitectură (rețea peer-to-peer, rutare, transport), ghid pentru dezvoltatori și glosar. Utile fără nicio linie de cod: * **Publicarea unui sit static** direct în rețea, fără găzduire clasică: [[https://freenet.org/build/manual/publish-a-website|freenet.org/build/manual/publish-a-website]] * **Acces de la distanță** la API-ul propriului nod (tunel SSH sau Tailscale): [[https://freenet.org/build/manual/remote-access|freenet.org/build/manual/remote-access]] ===== Aplicații existente ===== Sursă: [[https://freenet.org/apps/|freenet.org/apps]] ^ Aplicație ^ Descriere ^ | River | Chat de grup descentralizat, camere criptate | | Delta | Constructor de situri descentralizate | | Mail | Email descentralizat, rutat peer-to-peer | | freenet-git | Găzduire și colaborare Git peste Freenet | În dezvoltare: Harvest (piață descentralizată), Atlas (strat de descoperire/căutare), Raven (flux social). ===== Comenzi de referință rapidă ===== # instalare curl -fsSL https://freenet.org/install.sh | sh # instalare manuală ca serviciu de sistem (containere/servere) sudo /calea/completă/freenet service install --system sudo systemctl daemon-reload sudo systemctl enable --now freenet # verificare stare freenet service status systemctl status freenet # loguri live journalctl -u freenet -f # repornire sudo systemctl restart freenet # verificare instanțe duplicate pgrep -af "freenet network" # verificare port ascultat sudo ss -ulnp | grep freenet {{tag>linux freenet internet retea homelab}}