Bestanden delen vanaf je thuis-pc zonder clouds en gedoe
Stel je voor: je moet een vriend een 50 GB fotomap of een schijfkopie ter grootte van de helft van je SSD sturen. Uploaden naar Telegram? Langzaam en onhandig. Google Drive of Yandex.Disk? Je hebt niet genoeg ruimte, je zult moeten betalen voor een abonnement. Een volledige FTP-server opzetten of in Nginx-instellingen graven? Te veel gedoe voor een eenmalige taak.
Daar komt HFS (HTTP File Server) om de hoek kijken. Dit is een project dat je computer in letterlijk één klik omtovert tot een volwaardige webserver voor het delen van bestanden. En dit is niet zomaar een nieuw hobbyproject: de originele HFS in Delphi was een internetlegende uit de 2000-er jaren. Nu is het project herboren in TypeScript en Node.js, en is het cross-platform en modern geworden.
Wat het is
HFS is een compacte webserver waarmee je je lokale bestanden via een browser toegankelijk kunt maken. Je start de binary, voegt de mappen toe die je nodig hebt, en iedereen met de link kan ze downloaden.
Het belangrijkste verschil met zoiets als de Python http.server-module is dat je een volledig adminpaneel krijgt, gebruikersbeheer, hervatbare downloads, en zelfs de mogelijkheid om bestanden terug te uploaden naar je pc. En alles werkt out-of-the-box zonder complexe configuratie.
Waar het in de praktijk voor nuttig is
Ik heb vaak de behoefte om snel video's te bekijken of muziek te beluisteren vanaf mijn thuisserver op mijn telefoon. HFS lost dit elegant op.
Virtueel bestandssysteem
Je hoeft geen bestanden te kopiëren naar een speciale map www. In de HFS-interface maak je een virtuele structuur. Een bestand C:\Work\Project\final_report.pdf kan bijvoorbeeld worden gedeeld via de link ваш-айпи/report.pdf. Het originele bestand blijft op zijn plaats, je geeft het gewoon een "pseudoniem" voor het web.
Direct werken met zware data
Als je een 100 GB map wilt delen, hoef je niet te wachten terwijl HFS een archief maakt. Zodra de gebruiker op "Downloaden als ZIP" klikt, begint de server het archief on-the-fly te genereren en streamt de data direct naar de browser. Dit bespaart zowel tijd als schijfruimte.
Toegangscontrole en limieten
Als je bestanden deelt in een openbaar netwerk, kun je de uploadsnelheid beperken (throttling) zodat HFS niet al je bandbreedte opeet. Het is ook eenvoudig om accounts aan te maken: laat vrienden bijvoorbeeld alleen downloaden, terwijl een collega ook bestanden kan uploaden naar een specifieke map.
Geografische firewall en beveiliging
In de instellingen kun je toegang vanuit bepaalde landen blokkeren of HTTPS configureren. Certificaatgeneratie is ingebouwd, dus je hoeft niet handmatig met OpenSSL aan de slag.
De technische kant
Het project is geschreven in TypeScript. Als je geen voorgebouwde binaries wilt downloaden, kun je het draaien via npx hfs@latest. Dit is handig voor een snelle check op een server waarop Node.js al is geïnstalleerd.
HFS werkt vrijwel overal: Windows (vanaf versie 10), Linux, macOS en zelfs FreeBSD. Voor containerisatieliefhebbers is er een officiële Docker-image.
Een interessant detail: het adminpaneel en de frontend zijn volledig gescheiden. Je kunt het uiterlijk aanpassen met HTML en CSS of je eigen plugin schrijven. Er zijn momenteel plugins voor thumbnailgeneratie, LDAP-authenticatie en brute-force-bescherming.
Aan de slag
De eenvoudigste manier voor de meeste mensen is om het archief te downloaden van de releases-pagina voor je besturingssysteem. Na het starten opent de server standaard het adminpaneel op localhost.
Als je in de console of via SSH werkt, kun je snel een admin aanmaken met dit commando:
echo "create-admin: ВАШ_ПАРОЛЬ" > config.yaml
Daarna neemt HFS de instellingen over en kun je inloggen in het controlepaneel vanaf een ander apparaat via de browser.
Waarvoor is dit bedoeld
HFS is een tool voor wie self-hosting waardeert. Het is perfect voor:
- Snel grote bestanden overzetten via een lokaal netwerk of het internet.
- Een tijdelijke bestandsuitwisseling voor een team creëren.
- Een thuismediabibliotheek organiseren (HFS heeft een ingebouwde speler voor audio en video).
- Bestanden verzamelen van andere gebruikers (de uploadfunctie).
Het project wint je met zijn eenvoud. Je hoeft geen systeembeheerder te zijn om in 2 minuten een server op te zetten die er professioneel uitziet en werkt. Als je het beu bent om afhankelijk te zijn van de beperkingen van clouddiensten, is HFS een van de minst pijnlijke manieren om de controle over je data terug te krijgen.
Je kunt het project uitproberen op GitHub. Er is ook een gedetailleerde Wiki met API-documentatie en verborgen pareltjes zoals URL-parameters voor automatisch inloggen of zoeken.
Gerelateerde projecten