Af en toe wil je misschien bestanden uitwisselen die te groot zijn om via e-mail te versturen. Gebruik je liever geen commerciële diensten zoals WeTransfer? Een eigen Nextcloud-installatie is een oplossing, maar het kan eenvoudiger. In deze korte workshop installeren we Jirefeau op een Raspberry Pi als alternatief voor WeTransfer.

Door: Filip Vervloesem

Tegenwoordig heb je de keuze uit talloze providers die gratis opslag in de cloud bieden. Dat is natuurlijk erg makkelijk om bestanden te delen met anderen. Maar je hoeft jouw data niet aan onbekenden toe te vertrouwen als je dat niet wilt! Met de juiste open source software kun je net zo goed bestanden delen vanaf jouw eigen machines. Heb je al een Owncloud-of Nextcloud-installatie die via internet bereikbaar is? Dan gebruik je die natuurlijk om grote bestanden uit te wisselen! Wil je enkel af en toe een groot bestand uitwisselen via internet, dan is Owncloud of Nextcloud misschien niet de beste oplossing. Daarom gaan we in deze workshop aan de slag met Jirafeau: een eenvoudig pakket om bestanden via een tijdelijke downloadlink te delen over internet.

Raspberry Pi

Omdat de downloadlink enkel bereikbaar is als Jirafeau draait, moet je het pakket installeren op een machine die altijd aanstaat. Dat sluit je laptop of desktop waarschijnlijk al uit, waardoor je nog twee opties hebt:

  1. Op een vps (virtual private server) in de cloud. Een vps is niet gratis (reken op een maandelijke kost van €5 à €10) en het beheer ervan vereist behoorlijk wat ervaring.
  2. Op een Raspberry Pi in jouw thuisnetwerk.

Vermoedelijk heb je al een Raspberry Pi in bezit, waardoor de tweede optie dus feitelijk gratis is (het stroomverbruik van de Pi is immers verwaarloosbaar). Je moet dan enkel nog port forwarding configureren op jouw router om de Pi via het internet te kunnen benaderen. Verder moet de Pi over voldoende opslagruimte beschikken (op de SD-kaart of via een USB-stick) én is wel enige ervaring met de commandline vereist.

Benodigdheden

Jirafeau heeft erg eenvoudige systeemvereisten: een webserver met php volstaat. Als webserver kiezen we ditmaal voor Lighttpd, een eenvoudiger alternatief voor het bekendere Apache. Eerst installeer je php en lighttpd:

$ sudo apt install lighttpd php7.3-fpm

Vervolgens pas je in /etc/php/7.3/fpm/pool.d/www.conf de regel aan die begint met “listen”:

listen = 127.0.0.1:9000

En herstart je de php-daemon:

$ sudo systemctl restart php7.3-fpm

Daarna open je het bestand /etc/lighttpd/conf-available/15-fastcgi-php.conf en vervang je de twee regels met “bin-path” en “socket” door:

"host"      => "127.0.0.1",
"port"      => "9000",

Tot slot activeer je de php-module en herstart je lighttpd:

$ sudo lighty-enable-mod fastcgi
$ sudo lighty-enable-mod fastcgi-php
$ sudo systemctl restart lighttpd

Heb je reeds een Apache-installatie op jouw Raspberry geconfigureerd, dan gebruik je die uiteraard om Jirafeau te installeren. Het heeft immers niet veel zin om twee verschillende webservers te draaien op één machine!

Jirafeau heeft een erg eenvoudige interface.

Installatie

Je Pi is nu klaar voor de eigenlijke installatie van Jirafeau. Download het tar.gz-bestand van de laatste release via https://gitlab.com/mojo42/Jirafeau/-/tags: tijdens onze test was dat versie 4.3.0. Kopieer dat bestand naar /tmp op je Pi en zet de installer als volgt klaar (wij kozen hier de naam “transfer” voor de uiteindelijke url):

$ sudo tar xzf /tmp/Jirafeau-4.3.0.tar.gz -C /var/www/html/
$ rm /tmp/Jirafeau-4.3.0.tar.gz
$ sudo mv /var/www/html/Jirafeau-4.3.0/ /var/www/html/transfer
$ sudo chown -R www-data:www-data /var/www/html/transfer

Surf vervolgens naar: http://<ip-adres-van-jouw-pi>/transfer

In slechts twee stappen voltooi je de installatie van Jirafeau:

  1. Stel een wachtwoord in voor de beheerdersinterface.
  2. Kies een directory waar Jirafeau de bestanden moet opslaan. Tip: de eenvoudigste manier om onbedoelde toegang tot de bestanden te verhinderen, is om die buiten de document root (/var/www/html) te plaatsen. Bijvoorbeeld: /srv/jirafeau. Vergeet niet om die directory ook aan te maken en de toegangsrechten correct in te stellen:
$ sudo mkdir /srv/jirafeau
$ sudo chown -R www-data:www-data /srv/jirafeau

Lokale test

Surf tot slot opnieuw naar de url uit vorige paragraaf om Jirafeau te testen in jouw thuisnetwerk. Je kunt op twee manieren een bestand uploaden:

  1. Door het te verslepen van de bestandsbeheerder naar het kader met de +-knop.
  2. Door op diezelfde knop te klikken en via de bestandskiezer een bestand te selecteren.

Nadat je een bestand gekozen hebt, kun je nog enkele opties instellen:

– Of het bestand een éénmalige download is.

– Een optioneel wachtwoord om de toegang tot het bestand te beperken.

– Een tijdslimiet waarna het bestand niet meer toegankelijk is.

Weet je bijvoorbeeld dat de ontvanger van jouw e-mail het bestand binnen de dag zal downloaden en wil je dat niemand anders toegang heeft? Stel dan een wachtwoord in en kies een tijdslimiet van 1 dag. Klik tot slot op “Versturen” om een downloadlink aan te maken, die je vervolgens via e-mail of instant messaging kunt delen.

Bij elke upload kun je enkele opties instellen.

 

Configuratie

Jirafeau kun je nog verder configureren via een aantal parameters in het bestand /var/www/html/transfer/lib/config.local.php. Meer uitleg over die parameters lees je in config.original.php in dezelfde directory. Je kunt bijvoorbeeld de taal aanpassen naar Engels, aangezien de Nederlandse vertaling incompleet is:

'lang' => 'en',

Je wilt natuurlijk ook niet dat iedereen zomaar bestanden uploadt naar jouw Pi. Gebruik je Jirafeau enkel om zélf bestanden te delen, zet dan de upload-functionaliteit uitsluitend open voor jouw eigen thuisnetwerk. Bijvoorbeeld:

  'upload_ip' =>
  array (
    '192.168.1.0/24',
  ),

Wil je daarentegen dat anderen ook bestanden kunnen uploaden om met jou te delen, stel dan één of meerdere upload-wachtwoorden in met de upload_password-parameter. Tot slot willen we ook nog even de beheerderspagina vermelden. Die gebruik je om een overzicht van geüploade bestanden op te vragen en oudere bestanden – indien gewenst – te verwijderen. Zo vermijd je dat Jirafeau na verloop van tijd teveel opslagruimte in beslag begint te nemen op je Pi. De beheerderspagina open je door “index.php” in de url-balk te vervangen door “admin.php” en in te loggen met het gekozen beheerderswachtwoord.

Via dit configuratiebestand pas je verschillende opties van Jirafeau aan.

Internettoegang

Op dit ogenblik is Jirafeau enkel toegankelijk binnen jouw thuisnetwerk. Om ook toegang te verlenen via internet, moet je op jouw router een port forwarding rule instellen naar poort 80 op het IP-adres van jouw Pi. Raadpleeg de documentatie van jouw routermodel om uit te zoeken hoe dat in zijn werk gaat. De meeste providers staan niet toe dat je poort 80 op jouw extern IP-adres forwardt, dus kies bijvoorbeeld poort 8080. Je hoeft immers niet dezelfde poort te gebruiken bij het bron- en doeladres van de forwarding rule. Controleer tot slot het externe IP-adres van jouw router via https://www.whatsmyip.org. Vul je het gevonden IP-adres in, gevolgd door poort 8080, dan kom je terecht op de Jirafeau-webpagina op jouw Pi. Dat adres is voor iedereen bereikbaar via het internet.

Verdere verbeteringen

In deze korte workshop hebben we een minimale installatie van Jirafeau geconfigureerd, maar je kunt die zelf nog verder uitbreiden. Denk bijvoorbeeld aan:

– Een dyndns-client in je netwerk om Jirafeau via een domeinnaam vanaf internet te benaderen. Dat is heel wat gebruiksvriendelijker dan een IP-adres.

– Een SSL-certificaat in Lighttpd om gegevensoverdracht tussen de browser en jouw Raspberry Pi te versleutelen. Zo kan niemand meekijken naar de bestanden die je uploadt en/of downloadt via Jirafeau.

Op de beheerderspagina kun je oudere bestanden verwijderen.