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 (hyphanet.org).
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.
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ă: freenet.org/quickstart
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.
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
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
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:
ip route | grep default
Dacă apar două rute implicite, dezactivează interfața redundantă (vezi secțiunea următoare).
sudo ufw status
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.
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ă.
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ă.
Documentația completă e la 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:
Sursă: freenet.org/apps
| Aplicație | Descriere |
|---|---|
| River | Chat de grup descentralizat, camere criptate |
| Delta | Constructor de situri descentralizate |
| 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).
# 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