Een NAS is onmisbaar om jouw data te delen of van buiten je thuisnetwerk te benaderen. Je kunt er kant-en-klaar eentje kopen, maar een eigen NAS bouwen is wel zo uitdagend, leerzaam en geeft je meer flexibiliteit. FreeNAS helpt je daarbij.

Zowel qua hardware als qua software biedt een eigen nas alleen maar voordelen. Wat hardware betreft kun je echt alle kanten uit. Wil je een behuizing die in een 19inch-rack past of een full-tower-behuizing? Ruimte voor vier 2,5inch-schijven of twaalf 3,5inch-exemplaren? Eén, twee of vier gigabit-netwerkaansluitingen? Een zuinige singlecore-cpu of een krachtige 8-core? 4 of 64 GB ram?

Alles is mogelijk: de enige beperking is jouw budget. Wel is het belangrijk om goed na te denken wat je precies verwacht van je nas. De hardware bepaalt immers welke functies in het besturingssysteem je effectief kunt gebruiken. Enkele voorbeelden:

1. De behuizing en het moederbord beperken de maximale opslagruimte en de mogelijke raid-configuraties. Is er bijvoorbeeld ruimte voor vier 2,5inch-schijven, dan kun je maximaal 8 TB in raid1 of 12 TB in raid5 configureren (vier schijven van 4 TB).

2. Om full-hd-videostreams direct te transcoderen (voor mediaspelers met een beperkte codec-ondersteuning) heb je een krachtige cpu nodig.

3. Wil je virtuele machines op je nas draaien, voorzie deze dan van voldoende geheugen.

4. Installeer je FreeNAS als besturingssysteem, kies dan bij voorkeur ecc-geheugen.

FreeNAS of OpenMediaVault?

In principe is elke Linux-distributie geschikt om je eigen nas te installeren. Je moet dan wel over een grondige kennis van de opdrachtprompt beschikken. Gelukkig bestaan er ook nas-distributies met een gebruiksvriendelijke webinterface. Twee populaire keuzes zijn OpenMediaVault en FreeNAS. Die laatste is gebaseerd op FreeBSD en is dus wel een Unix-variant, maar geen Linux.

Het grootste verschil tussen beide systemen is dat FreeNAS ZFS ondersteunt en OpenMediaVault niet. ZFS is een modern bestandssysteem met de best mogelijke bescherming tegen datacorruptie, erg belangrijk voor een nas. FreeNAS bevat kant en klaar al heel wat functionaliteit en is verder uitbreidbaar via plug-ins en jails. In dit artikel gaan we aan de slag met versie 11 van FreeNAS.

Lees eerst het onderdeel ‘Hardware Recommendations’ in deze installatiehandleiding. FreeNAS stelt namelijk redelijk hoge eisen aan de hardware: een 64bits-multicore-cpu en 8 tot 16 GB ram zijn absoluut noodzakelijk. Bouw je liever een goedkope nas met bescheiden hardware, dan is OpenMediaVault een prima alternatief.

ZFS en datasets

In de praktijk lijkt het ZFS-bestandssysteem sterk op een combinatie van lvm (logical volume manager) en raid onder Linux, ook al is de gebruikte terminologie anders. Kort gezegd combineer je één of meerdere ‘virtual devices’ of vdevs in één grote pool, waarna je die pool eventueel verder opdeelt in verschillende datasets. In zijn meest eenvoudige vorm bestaat een vdev uit één schijf, maar dat biedt geen bescherming tegen datacorruptie! Afhankelijk van het aantal schijven in je server en de gewenste capaciteit kies je dus voor:

1. Een mirror (zoals raid1) met twee schijven en vijftig procent bruikbare capaciteit.

2. Eén van de drie raid-Z-levels met meerdere schijven en minstens 67 procent bruikbare capaciteit: raid-Z1 (zoals raid5, voor 3 tot 5 schijven), raid-Z2 (zoals raid6, voor 6 tot 8 schijven) of raid-Z3 (bestaat niet in Linux-raid, voor 9 tot 12 schijven).

Een dataset is te vergelijken met een bestandssysteem, met één belangrijk verschil: standaard mag elke dataset de volledige opslagruimte in de pool benutten. Wil je dat niet, stel dan quota in op de datasets om ze een vaste grootte te geven. Je configureert je schijven in de FreeNAS-interface via Opslag / Volumes / Volume Manager. Onder Volumenaam kies je de naam van de ZFS-pool. Klik vervolgens op het plusje onder Beschikbare schijven om de gewenste schijven toe te voegen.

Eigen NAS bouwen

© PXimport

Onder Volume-indeling stel je de vdev-configuratie in voor die schijven. Het uitklapmenu bevat meer of minder opties naargelang het aantal schijven. Klik tot slot op Volume toevoegen om de nieuwe pool aan te maken. Wil je de pool verder opdelen in verschillende datasets? Selecteer dan de onderste regel in de lijst en klik onderaan op het tweede icoontje van rechts (Gegevensset aanmaken).

Om quota in te stellen moet je wel eerst op Geavanceerde modus klikken. Voor een dataset met gecomprimeerde bestanden schakel je ZFS-compressie beter uit: dubbele compressie heeft immers weinig nut.

Zodra de datasets beschikbaar zijn, kun je ze via verschillende protocollen delen. Ga daarvoor naar Delen en klik op het gewenste protocol. Voor een maximale compatibiliteit kies je het best Windows (CIFS). Onder Pad selecteer je de gewenste dataset en onder Naam kies je een naam voor de gedeelde map die getoond wordt aan de clients.

Mag iedereen de map zonder meer benaderen, vink dan Gasttoegang aan. Wil je alleen bepaalde gebruikers toegang geven, dan heb je wat meer werk. Onder Account definieer je eerst de gewenste gebruikers en groepen. Onder Opslag selecteer je de dataset in kwestie en klik je onderaan op het eerste icoontje van links (Machtigingen instellen).

FreeNAS-plugins

Standaard bevat FreeNAS enkel de benodigde software om bestanden te delen via verschillende protocollen, zoals CIFS (voor Windows) of NFS (voor Linux). Via plug-ins voeg je extra functionaliteit toe, bijvoorbeeld om media te streamen of te downloaden via bittorrent. Een prima startpunt om data van FreeNAS te delen via het web is Nextcloud.

Na de installatie van die nieuwe plug-in activeer je die als volgt. Navigeer naar het tabblad Geïnstalleerd onder Plug-ins en klik op het schuifje bij Servicestatus om de plug-in te starten. Klik op het plusje naast Plug-ins in de navigatiebalk links en vervolgens op de naam van de plug-in om die te configureren. In het geval van Nextcloud krijg je de url te zien waarop Nextcloud bereikbaar is. Daar doorloop je de wizard van Nextcloud om de installatie af te ronden.

Eigen NAS bouwen

© PXimport

Voor maximale beveiliging start FreeNAS elke plug-in in een zogenoemde jail. Dat is een afgeschermde omgeving die geen rechtstreekse toegang heeft tot jouw FreeNAS-installatie. Elke jail heeft zijn eigen ip-adres, gebruikers, software en opslagruimte. Standaard krijgen plug-ins geen toegang tot jouw data.

Je moet elke plug-in dus expliciet toegang geven tot (een deel van) jouw data voordat je die effectief kunt gebruiken. Daarvoor ga je naar het Opslag-tabblad onder het Jails-menu. Klik op Opslag toevoegen, selecteer een geïnstalleerde plug-in uit de lijst en kies vervolgens een bron (de map in FreeNAS die je wilt delen met de plug-in) en een bestemming (de locatie in de plug-in waar je data beschikbaar komt). Ga vervolgens naar de Apps-pagina van Nextcloud, zoek de app External storage support onder Not enabled en klik op Enable. Navigeer daarna naar het onderdeel External storages op de Admin-pagina en voeg de map in jouw jail toe als externe opslag van het type Local.

Terug in de app Files zie je de gedeelde map mogelijk nog niet verschijnen. Onderliggend spelen de traditionele Unix-permissies immers nog steeds een rol. De gebruiker waaronder Nextcloud draait, moet dus toegang hebben tot de map(pen) die je wilt delen met de plug-in. Dat los je als volgt op. Selecteer de plug-in in het Jails-menu en klik op het Shell-icoontje rechts onderaan. Gebruik het commando

ps aux | grep nextcloud

om Nextclouds gebruiker op te zoeken (in dit geval is dat gebruiker www). Het commando

id www

toont je het numerieke user-id en group-id van die gebruiker (hier zijn de id’s in beide gevallen 80).

Ga vervolgens naar de tabbladen Groepen en Gebruikers onder Account en controleer of de gebruiker en de groep uit de plug-in ook bestaan in FreeNAS zelf. Is dat niet het geval, maak ze dan aan met exact hetzelfde user-id en group-id. Log daarna via ssh aan op je FreeNAS-server (ssh moet je mogelijk nog inschakelen onder Services). Navigeer naar de bovenliggende map van de gedeelde map en geef de www-groep lees- en schrijftoegang met het commando:

chgrp -R www <mapnaam>; chmod -R g+rwX <mapnaam></mapnaam></mapnaam>

Voor enkel leestoegang gebruik je in dat commando de optie g+rX. Mogelijk moet je in het onderdeel External storages de map even verwijderen en opnieuw toevoegen om alsnog toegang te krijgen.

Eigen NAS bouwen

© PXimport

Werken met Jails

Voor de andere plug-ins gebruik je een vergelijkbare procedure om data van FreeNAS te benaderen in de plug-in. Plug-ins om bijvoorbeeld back-ups te maken of media te streamen werken overigens vaak prima zonder schrijftoegang. Die schakel je dan ook het best uit voor een nóg betere beveiliging van je systeem. De lijst van plug-ins in FreeNAS is misschien minder uitgebreid dan je verwacht had.

Er zijn zo’n 25 pakketten beschikbaar: verschillende mediastreamers (zoals Subsonic en PlexMediaServer), downloadsoftware (zoals CouchPotato, SABnzbd en Transmission) en back-upsoftware (bacula-sd en crashplan). Vind je niet wat je zoekt? Dat is geen probleem. De plug-ins zijn een hulpmiddel om snel en eenvoudig een bepaald pakket te installeren en te configureren via de webinterface. Maar je kunt nog steeds elk softwarepakket installeren dat geschikt is voor FreeBSD.

Daarvoor maak je je eigen jail en log je via de opdrachtprompt in om de jail te configureren. Die is overigens niet identiek aan de Linux-opdrachtprompt. Raadpleeg bij twijfel over een commando steeds de ‘man-pages’. Een man-page (kort voor ‘manual page’) is de documentatie van een commandline-programma op het systeem. In de volgende paragraaf geven we een voorbeeld om MiniDLNA te installeren. De documentatie daarvan krijg je bijvoorbeeld met het commando

man minidlnad

Klik onder Jails op Jail toevoegen om een eigen jail aan te maken. Behalve de naam hoef je verder niets te configureren. Jails krijgen standaard via dhcp een ip-adres van je router. Het precieze adres zie je in de lijst van jails. Een shell-sessie openen in de jail kan op twee manieren: via de Shell-knop onderaan of door eerst via ssh in te loggen op je FreeNAS-server.

Eigen NAS bouwen

© PXimport

Het commando

jls

toont je een lijst van alle jails. Zoek daarin het jail id van jouw jail. Met de opdracht

jexec <jail id=""> /bin/sh</jail>

open je tot slot een shell-sessie in de jail.

Stel dat je een dlna-server wilt installeren met het MiniDNLA-pakket, dan gaat dat als volgt. Zoek en installeer het juiste softwarepakket:

pkg search minidlna; pkg install minidlna

Pas het configuratiebestand /usr/local/etc/minidlna.conf aan. Deel de benodigde mappen van je FreeNAS-server met jouw jail en pas indien nodig de permissies aan zoals hierboven uitgelegd. MiniDLNA draait onder de gebruiker en de groep dlna met user-id 993 en group-id 933. Open /etc/rc.conf en voeg aan het einde de regel

minidlna_enable="YES"

toe. Start MiniDLNA met:

/usr/local/etc/rc.d/minidlna start

Controleer of /var/log/minidlna.log geen foutmeldingen bevat.

Updaten

FreeNAS is in de basis al erg goed beveiligd door afgescheiden jails te gebruiken voor extra softwarepakketten. De jails bevatten geen overbodige services buiten diegene die jij installeert. Bovendien hoeft niet elke jail schrijftoegang te hebben tot al jouw data. Het is wel belangrijk om de extra pakketten die je installeert goed up-to-date te houden. Daarvoor gebruik je de commando’s

pkg update

(controleert op updates)

pkg audit

(toont of jouw systeem kwetsbaar is) en

pkg upgrade

(installeert alle beschikbare updates). Ook FreeNAS zélf krijgt geregeld beveiligingsupdates. Je controleert dat onder Systeem / Bijwerken. Ben je bang dat je dat vergeet? Configureer dan de uitgaande mailserver onder Systeem / E-mailadres en klik op Testmail verzenden om de configuratie te testen. FreeNAS vertelt je daarna via e-mail als er een update beschikbaar is.

Conclusie

De bedoeling van je eigen cloud opzetten is natuurlijk dat je vanaf elke plek bij je data kunt. Op je router stel je dus portforwarding-regels op naar de juiste poorten én de juiste ip-adressen van de verschillende jails op je FreeNAS-server. Vergeet niet dat de ip-adressen momenteel nog dynamisch zijn. Je moet dus óf in de FreeNAS-interface een statisch ip-adres instellen voor elke jail, óf voor elke jail reserveer je een ip-adres op je router.

Die tweede optie heeft als voordeel dat je in je routerconfiguratie meteen een centraal overzicht hebt van alle gereserveerde ip-adressen in je netwerk. We raden je trouwens af om poorten op je router te forwarden naar de FreeNAS-server zelf. Mocht je het slachtoffer worden van een beveiligingslek, dan minimaliseren jails tenminste de impact. Je wilt toch niet al jouw data verliezen door een kwetsbaarheid in bijvoorbeeld back-upsoftware die niet eens schrijftoegang nodig had tot jouw data?

Deel dit artikel
Voeg toe aan favorieten