NAS met Docker voor Nextcloud: installeer je eigen clouddienst

Noud van Kruysbergen
0

Inhoudsopgave

Een eigen cloud maakt je onafhankelijk van dienstverleners waar je je persoonlijke data aan moet toevertrouwen. Op een NAS met Docker zet je gemakkelijk een Nextcloud-instantie op, waarmee data letterlijk onder eigen dak blijven. Het installeren van Nextcloud langs deze weg is minder moeilijk dan je zou denken.

Als je een NAS hebt die geschikt is voor Docker, dan kost het niet veel tijd om daar een eigen cloud­server voor familie, werkgroep of bedrijf op te zetten. De Nextcloud-dienst voor het synchroniseren van bestanden, afspraken en contacten is ook buitenshuis beschikbaar met een (Dyn)DNS-domein of een vast ip-adres en wat port-forwards in de router.

Hoe dat concreet gaat, laten we zien aan de hand van een Synology DiskStation DS218+ met firmware 6.1.6. Dat werkt op andere apparaten in dezelfde klasse vergelijkbaar, met hooguit wat verschillen op detailniveau. In uitgave 5, 2018 hebben we verschillende modellen x86-NAS met Docker-optie getest.

Eerste stappen

We gaan ervan uit dat de NAS goed geconfigureerd is en vanuit internet met een DynDNS-naam of via een eigen domein­naam bereikbaar is. Als admini­strator van de NAS kun je de meeste stappen vervolgens via de browser doen. Daarbij gebruiken we de menunamen van het systeembeheer van Synology’s NAS-besturingssysteem DSM. Alleen ergens halverwege de stappen moet je een uitstapje maken naar de commandline.

Je hoeft niet alles te weten over Docker, de belangrijkste basisprincipes noemen we al doende in het kort. Vragen over Docker bespreken we verder in de FAQ in het magazine of in andere artikelen.

Meer weten over Docker? De beste Docker-images en meer in c't 05/2024

De eerste stap is de Docker-uitbreiding installeren met het Package Center van Syno­logy. Vervolgens maak je drie contai­ners aan: een SQL-database als basis, de meest recente versie van Nextcloud en als extra de Docker-tool Watchtower voor het automatisch updaten van de containers.

Start Docker via het bijbehorende pictogram in het NAS-menu. Als je klikt op ‘Register’, kun je de images downloaden die je voor het maken van de eerste twee containerinstanties nodig hebt. Je kunt door de hele lijst scrollen, maar handiger zoeken op de termen ‘mysql’ en ‘nextcloud’. Dan krijg je meerdere resultaten van verschillende implementaties. Kies de eerste met het predicaat ‘Officiële image’. Dan weet je zeker dat die van een bedrijf komt dat achter de tool staat en daar (betaalde) support voor biedt. Je kunt er dan vanuit gaan dat het om goed onderhouden images gaat.

Synology NAS met Docker en Nextcloud voor eigen clouddienst via Docker-hub

Nextcloud gebruikt een externe database voor zijn configuratie en informatie over het bestandssysteem. Het kan overweg met MySQL, MariaDB en PostgreSQL. We gebruiken MariaDB omdat dat niet onder Oracles knoet zit.

Selecteer bij de image-downloads als tag ‘latest’, zodat je altijd de nieuwste versie hebt. Het downloaden van de in totaal bijna 1000 MB kan afhankelijk van je internetsnelheid even duren. Terwijl Nextcloud nog aan het downloaden is, kun je al wel met de inmiddels gedownloade database-image aan de slag.

Database voorbereiden

De gedownloade images staan bij ‘Image’. Klik daar op ‘mariadb:latest’ en op ‘Starten’. De ‘Algemene instellingen’ moet je alleen wijzigen als je zoveel mogelijk van redelijk krappe NAS-RAM (2 GB in de basis­uitvoering) wilt vrijhouden als buffer voor parallelle bestandsoperaties. Een al wat langer draaiende en voor Nextcloud gereserveerde database nam bij ons zo’n 230 MB in beslag. Een veilige waarde voor de geheugenlimiet is dan ook 500 MB.

Bij de ‘Geavanceerde instellingen’ activeer je eerst ‘Automatisch opnieuw starten inschakelen’. Dat geldt ook voor de volgende container. Op het tabblad ‘Volume’ geef je voor de container aan waar hij zijn bestanden inclusief zijn configuratie neer mag zetten op de NAS-opslagruimte. Met die volume-mapping scheidt Docker de gebruiksdata van de programma­bestanden van de container, wat op zijn beurt onnodige back-ups voorkomt. Voeg een map met de naam sql toe, selecteer die en zet vervolgens bij ‘Pad koppelen’ het doel /var/lib/mysql.

volume-mapping toegang bij NAS met Docker en Nextcloud voor eigen clouddienst

Op het tabblad ‘Netwerk’ zet je een vinkje bij ‘Gebruik hetzelfde netwerk als Docker Host’. Dan meldt de SQL-­database zich op zijn standaardpoort onder het NAS-adres in het LAN en kun je hem ook voor andere doeleinden gebruiken. Dat werkt echter alleen als je geen andere SQL-uitbreiding op de NAS hebt draaien. In dat geval moet je de netwerkmodus dan op ‘bridge’ laten staan en de container­database op een andere nog vrije poort mappen.

Als laatste stap moet je bij ‘Milieu’ – een minder geslaagde vertaling van ‘Environment’ – de omgevingsvariabele MYSQL_ROOT_PASSWORD toevoegen en een wachtwoord opgeven. Het kan zijn dat je het tabblad ‘Milieu’ niet kunt zien, dan moet je het venster van de ‘Geavanceerde instellingen’ aan de rechterkant even wat groter maken. Klik op ‘Volgende’ om de container aan te maken en op ‘Toepassen’ bij de samenvatting om de container uit te voeren.

Database bereikbaar maken

Om ervoor te zorgen dat Nextcloud de database kan gebruiken, moet je een SQL-gebruiker met een eigen wachtwoord aanmaken en die gebruiker de juiste rechten geven. Om dat te doen, ga je bij het Docker-venster naar ‘Container’ en selecteer je de database. Klik op ‘Details’ en ga naar het tabblad ‘Terminal’. Klik op ‘Maken’ en typ in de root-shell de volgende commando’s in:

sh
mysql -u root -p
create user 'nextcloud'@'localhost'
identified by 'wachtwoord';
grant all privileges on nextcloud.*
to 'nextcloud'@'%' identified by
'wachtwoord';

Met de % in het laatste commando krijgt de gebruiker ‘nextcloud’ overal vandaan toegang. Dan kun je bij eventuele noodoperaties ook vanuit het LAN bij de Nextcloud-database. Met exit beëindig je het SQL-serviceprogramma.

Deze weg is wat lastiger dan Nextcloud simpelweg het rootwachtwoord voor de MariaDB-instantie geven, maar op deze manier kun je de SQL-database ook voor andere diensten in het LAN laten gebruiken.

Nextcloud installeren

De Nextcloud-container maak je op dezelfde manier aan als die van de database. Als je het geheugengebruik wilt beperken, stel je eveneens een limiet van 500 MB in. Op het ‘Volume’-tabblad voeg je voor de volume-mapping de map ‘cloud’ toe en koppelt daar de map /var/www/html aan.

Op het tabblad ‘Netwerk’ blijft de voorinstelling ‘bridge’ bestaan. Bij ‘Poortinstellingen’ verander je ‘Lokale poort’ van ‘Automatisch’ naar ‘8080’. Daar werkt later de container met het ip-adres van de NAS mee. Installeer de container met ‘Toepassen’, ‘Volgende’ en weer ‘Toepassen’, maar ga met de browser dan niet meteen kijken of Nextcloud al op zijn lokale adres in je netwerk reageert. Als je dat doet zou Nextcloud zijn ip-adres in het netwerk als trusted-domain gebruiken in plaats van zijn domeinnaam en moet je dat later in het configuratiebestand weer gaan bijwerken.

Stel daarom eerst twee reverse-proxy-regels in de NAS in – de details volgen – en twee port-forwards voor HTTP (80) en HTTPS (443) in je router die naar het LAN-adres van je NAS met die poorten gaan.

Internettoegang tot de NAS

Toegang tot de standaardpoorten voor HTTP (80) en HTTPS (443) worden door de in de NAS geïntegreerde webserver nginx standaard naar de poorten voor de configuratie­pagina’s doorgestuurd (oftewel 5000/5001). Omdat de standaardpoorten niet van nginx te scheiden zijn, gebruiken we die verder.

Dat heeft twee voordelen: ten eerste kan nginx ook met HTTPS overweg, wat Nextcloud uit zichzelf niet doet. Ten tweede kun je de functie van de NAS voor het krijgen en vernieuwen van Let’s-Encrypt-certificaten gebruiken, zodat browsers en CalDAV/CardDAV-tools geen waarschuwings­meldingen geven. Certificaten voor Let’s Encrypt installeren op een Synology NAS kan met de ingebouwde functies.

Let's Encrypt certificaat voor NAS met Docker en Nextcloud voor eigen clouddienst

De toegang tot de NAS-configuratie in plaats van de cloudfunctie gebeurt dan later met een gerichte poort: http://NAS-adres:5000 respectievelijk 5001 (HTTPS). Als je makkelijker wilt doen, kun je de cloud met een apart subdomein scheiden van de NAS, bijvoorbeeld cloud.example.com. Dan werkt de toegang via de normale domeinnaam nog met de standaard­poorten.

Maak in het Toepassingsportaal van de NAS-interface een reverse-proxy-regel aan die de HTTPS-toegang afvangt. Zet de domein­naam bij ‘Hostnaam’ en activeer HSTS en HTTP/2. De bestemming is localhost en de poort 8080, waar Nextcloud mee werkt. Met een tweede regel voor HTTP (80) stuur je niet-versleutelde toegang door naar HTTPS door het domein als bron met poort 80 op te geven en als doel poort 443.

Reverse Proxy HTTPS naar container op NAS met Docker en Nextcloud voor eigen clouddienst

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Nextcloud configureren

Nu pas ga je in de browser naar het clouddomein voor de Nextcloud-instellingen. Voer daar vervolgens een beheerders­account met een wachtwoord in en ga dan naar ‘Opslag & database’.

Daar selecteer je Mysql/MariaDB’. Bij de database-instellingen vul je de gebruikersnaam (nextcloud), het bijbehorende wachtwoord en de databasenaam (nextcloud) in. Als adres geef je het interne ip-adres van de NAS op met de standaard SQL-poort, dus bijvoorbeeld 192.168.0.99:3306. Hier werkt ‘localhost’ niet, omdat je de Docker-SQL-database in het netwerk gestopt hebt. Vervolgens kun je op ‘Installatie afronden’ klikken.

Configuratie afronden

Nextcloud moet achtergrondtaken verrichten en doet dat standaard bij elke pagina-aanroep. Die taken blijven echter vaak langere tijd uit als Nextcloud niet gebruikt wordt. Daarom kun je die beter door een webcron-functie laten uitvoeren waarbij een externe server (in dit geval de NAS) regelmatig een Nextcloud-pagina oproept.
Log als beheerder in bij Nextcloud en ga naar het instellingenmenu via het tandwieltje of de cirkel met je initiaal rechtsboven. Daar ga je bij ‘Beheer’ naar ‘Basis-instellingen’ en zet bij ‘Achtergrondtaken’ de optie ‘Webcron’ aan.

Kijk met de File Station van de Synology NAS of er een gedeelde map met de name ‘web’ is, die door de NAS-uitbreiding Web Station aangemaakt is. Als het goed is, staat daar dan een eenregelig script. Als dat niet zo is, moet je een ‘Nieuwe gedeelde map maken’ en een share met de naam ‘webdienst’ aanmaken waarop alleen administrators toegang hebben (‘Toegang beperken tot uitsluitend beheerders’), die zowel mogen lezen als schrijven.

Maak met een editor een bestand aan met de naam webcron.sh en zet daar de regel curl http://localhost:8080/cron.php in. Dat bestand kopieer je met File Station naar de web(dienst)-share.

Ga bij het Configuratiescherm naar Taakplanner en vervolgens naar ‘Maken / Geplande taak / Door de gebruiker gedefinieerd script’. Op het tabblad ‘Planning’ stel je als frequentie ‘Elke 15 minuten’, waardoor de taak elk kwartier uitgevoerd zal worden, en de laatste uitvoeringstijd zet je op 23:45. Bij ‘Taakinstellingen’ zet je de volledige padnaam van het script: /volume1/web[dienst]/webcron.sh.

Daarmee is de basisinstallatie van Nextcloud klaar en kun je er via de browser verder mee aan de slag om uitbreidingen te installeren en gebruikers aan te maken.

Auto-updates en meer

Met behulp van een Docker-tool zoals Watchtower kun je automatisch alle draaiende containers (ook Watchtower zelf) laten updaten. De installatie daarvan is wel iets omslachtiger. Verder kun je Nextcloud nog handiger maken met allerlei uitbreidingen. Daarmee komen ook meer synchronisatiemogelijkheden met smartphones beschikbaar.

(Ernst Ahlers, c’t magazine)

 Met uitbreidingen (apps) maak je Nextcloud nog veelzijdiger:

 


Blijf op de hoogte van de nieuwste informatie en tips!
Schrijf je in voor de nieuwsbrief:

Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.

 

Lees meer over Nextcloud op je NAS in c't jul-aug/2018

Deel dit artikel

Noud van Kruysbergen
Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

Lees ook

De optimale pc 2024

Pc doe-het-zelvers kunnen momenteel kiezen uit een enorm aanbod aan snelle processors, ssd’s en grafische kaarten. Onze tips helpen je de juiste onder...

Spotify streamen naar versterker? Zo doe je het met een Raspberry Pi!

Om Spotify te kunnen streamen naar een niet-smart AV-receiver of analoge versterker die geen muziek-streaming­mogelijkheden heeft, heb je met een Rasp...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er