Screenshot van Nextcloud in browser en smartphone

Nextcloud op je Synology-nas met Docker

18 Feb 2021, 10:21

Met Docker kun je eenvoudig allerlei software draaien, omdat deze geheel voorverpakt in een kant-en-klaar image wordt geleverd. Veel nas’en van Synology hebben ondersteuning voor Docker. Zo kun je bijvoorbeeld op een eenvoudige manier Nextcloud hosten op je nas. In deze howto laten we zien hoe je dat voor elkaar krijgt en lopen we je door de opties van Docker op je Synology heen.

Docker installeren

We zullen als eerste Docker gaan installeren. Hiervoor ga je in de web-interface van DSM naar het Package Center. Zoek naar de applicatie Docker en klik op Installeren. Volg de stappen om Docker te installeren. Eenmaal voltooid, kun je Docker openen door naar het hoofdmenu te gaan en Docker uit de lijst te kiezen.

Image downloaden

Zodra je Docker geopend hebt, kun je zogenaamde images downloaden. Dat zijn voorverpakte applicaties. Hiervoor klik je rechts in de Docker-app in het menu op Register en zoek je naar de image die je wilt downloaden. Dubbelklik op de image om de download te starten.

Nextcloud-image downloaden

Download het Nextcloud-image met de badge door er dubbel op te klikken.

Zoek naar de image van Nextcloud en klik twee keer op het gevonden image met de badge. Er opent een nieuw dialoog. Bij Selecteer versie kies je simpelweg voor Latest en klik je op Selecteren. De image wordt dan gedownload. Voer deze stappen nog een keer uit, maar download dit keer de image Postgres. Deze image hebben we nodig als database voor Nextcloud.

Postgres opzetten

We moeten eerst de database opzetten. Ga naar het tabblad Image en wacht totdat de downloads voltooid zijn. Dat is het geval als het opslag-icoon geheel blauw is geworden. Dubbelklik op de gedownloade image om deze te starten. We gaan de Postgres-image starten. Er verschijnt een nieuw dialoog waarin je de naam en andere opties kunt instellen. Haal de 1 bij de naam weg en klik dan op Geavanceerde instellingen.

Voordat we de geavanceerde instellingen induiken, is het altijd eerst handig om de documentatie van een image te lezen op Docker Hub. Op deze manier weet je welke mappen je kunt koppelen en welke opties je moet instellen. Wij hebben dat al gedaan voor je en lopen je door de opties van de Postgres- en Nextcloud-images heen.

Op het eerste tabblad kun je de optie selecteren: Automatisch opnieuw opstarten inschakelen. Als de container crasht, wordt deze dan automatisch opnieuw opgestart. Handig om aan te vinken. Op het volgende tabblad, Volume, kun je een mapping maken tussen een pad in de Docker-container en je lokale map. Op die manier blijven bestanden permanent bewaard, omdat ze opgeslagen worden op je nas zelf in plaats van in de container. Containers zijn namelijk niet bedoeld om bestanden permanent in op te slaan.

Volume koppelen Postgres-container

We koppelen hier het pad /var/lib/postgresql/data in de container aan de map /docker/postgres op je nas.

In dit geval koppelen we de databasebestanden aan een lokale map op onze nas. Klik op Map toevoegen om een map te selecteren en klik dan op Map maken om een nieuwe map te maken, maak bijvoorbeeld de map /docker/postgres. Voer bij Pad koppelen dan /var/lib/postgresql/data in.

Op het volgende tabblad, Netwerk, kun je de netwerk-instellingen van de container instellen. Standaard maakt Docker op Synology een bridge-netwerk voor je aan. Daarmee is het netwerk los van het nas-netwerk en moet je zelf een poort-mapping maken. Dit is de aanbevolen optie. Als je vanuit een Docker-container je nas wil bereiken, gebruik je daarvoor het IP-adres 172.17.0.1 in je container. We hoeven op dit tabblad geen wijzigingen te maken.

Je kunt met de optie Gebruik hetzelfde netwerk als Docker host de Docker-container integreren met je nas-netwerk, maar let op poort-conflicten. Als een Docker-container poort 80 gebruikt, dan moet deze wel vrij zijn op je nas (en dat is vaak niet het geval). Laat deze optie nu uitstaan.

Ga dan door naar het tabblad Milieu. Helaas is dat wat slecht vertaald, want hier wordt Environment bedoeld, de omgevingsvariabelen. Deze kun je hier eenvoudig zetten, bijvoorbeeld wachtwoorden en gebruikersnamen voor database-connecties.

We gaan hier de volgende twee variabelen aan toevoegen:

POSTGRES_USERnextcloud
POSTGRES_PASSWORD<een veilig wachtwoord>

Door het zetten van deze variabelen, zal de Postgres-container bij het starten automatisch de gebruiker en een database genaamd nextcloud aanmaken.

De omgevingsvariabelen van de Postgres-container

We hoeven alleen het wachtwoord en de user in te stellen voor de Postgres-container.

We zijn nu klaar en kunnen deze container starten. Klik op Toepassen / Volgende / Toepassen.

Nextcloud starten

We kunnen nu Nextcloud starten. Ga terug naar Image en dubbelklik op Nextcloud. Haal bij Containernaam weer de 1 weg en klik op Geavanceerde instellingen.

Bij Volume is het nodig om de map /var/www/html te koppelen aan een map op je nas, bijvoorbeeld aan /docker/nextcloud.

Nextcloud-volumekoppeling

Koppel bij de Nextcloud-container de map /var/www/html aan een map op je nas.

Bij Poortinstellingen kun je poorten tussen de container en je nas mappen. Je kunt in de documentatie van je image opzoeken welke poort de applicatie gebruikt. Deze kun je dan hier mappen op een vrije poort van je nas (bij Lokale poort). In ons geval mappen we poort 8182 van onze nas op poort 80 in de container. Je hoeft hiervoor alleen bij Lokale poort de waarde 8182 in te vullen.

We mappen poort 80 uit de container op poort 8182 op je nas.

Op het tabblad Koppelingen kun je andere containers koppelen. In ons geval willen we hier onze Postgres-container koppelen. Containers kunnen dan met elkaar over de poorten die zij blootstellen communiceren. Klik dus op de plus-knop, kies voor postgres uit de lijst en bij alias vul je ook postgres in.

Als laatste tabblad, bij Milieu, vullen we weer een aantal omgevingsvariabelen in:

POSTGRES_DATABASEnextcloud
POSTGRES_USERnextcloud
POSTGRES_PASSWORD<het wachtwoord van postgres>
POSTGRES_HOSTpostgres

Zodra je alle opties hebt ingesteld, klik je op Toepassen. Klik dan op Volgende, nog een keer op Toepassen om de container te starten en klik ten slotte op OK om de melding te bevestigen.

Je Nexcloud-installatie draait nu en is te benaderen vanaf: http://:8082. Maak een administrator-account aan en klik op Installatie afronden. Dat je een IP-adres in moet typen is niet heel mooi natuurlijk. Je wilt nu wel dat Nexcloud bereikbaar is vanaf een domein of subdomeinnaam. Daarvoor is het nodig om een reverse proxy op te zetten.

Nextcloud downloadt apps

Gelukt! Nextcloud is zich nu aan het opzetten

Reverse proxy opzetten

Nu je container draait op een bepaalde poort, is het mooi als deze te bereiken is via een eigen (sub)domein van je nas. Dat kun je eenvoudig opzetten door een reverse proxy in te stellen. Daarvoor maak je in je dns-instellingen van waar je je domeinnaam host, een nieuw A- of CNAME-record aan, bijvoorbeeld nextcloud.mijndomein.nl.

Open dan het configuratiescherm van DSM en ga naar het Toepassingsportaal. Klik bovenin op Reverse proxy en klik dan op Maken. Vul een beschrijving in, bijvoorbeeld Nextcloud. Bij Bron kies je bij Protocol voor HTTPS, omdat we zo direct met Let's Encrypt een certificaat gaan maken.

Reverse Proxy opzetten in DSM

De instellingen om een reverse proxy op te zetten in DSM

Bij Hostnaam vul je de (sub)domeinnaam in die je zonet hebt gemaakt en bij Poort kies je voor 443. Bij Bestemming vul je als protocol HTTP in, de hostnaam is localhost en de poort is 8182, dat is de poort waar lokaal Nextcloud via te benaderen is. Klik op OK om de reverse proxy aan te maken.

We kunnen dan nu een certificaat genereren met Let's Encrypt. Daarvoor klik je links in het Configuratiescherm op het kopje Beveiliging. Ga dan naar het tabblad Certificaat. Klik op Toevoegen en kies dan voor Een nieuw certificaat toevoegen en klik op Volgende.

Kies voor Krijg een certificaat van Let's Encrypt en klik weer op Volgende. Vul dan de (sub)domeinnaam in waarvoor je het certificaat maakt, vul je eigen e-mailadres in en vul bij Onderwerp alternatieve naam eventueel alternatieve domeinnamen in die onder het certificaat vallen, bijvoorbeeld een variant die start met www. Klik op Toepassen om je certificaat te genereren.

Certificaat maken in DSM

Met Synology kun je eenvoudig Let's Encrypt-certificaten genereren

Klik dan bovenin op Configureren. Zoek in de lijst naar je (sub)domeinnaam van Nextcloud, onder Services. Klik ernaast dan op de uitklaplijst en kies in die lijst voor het certificaat wat je net aangemaakt hebt. Klik dan op OK om dat certificaat op die domeinnaam te serveren.

Conclusie

We hebben je in deze howto laten zien hoe je met Docker op je Synology-nas aan de slag kunt, door er een Postgres-database en Nextcloud mee op te zetten. Met een paar opties heb je zo het een en ander draaien. Bovendien kun je met een reverse proxy webapps in Docker mooi op een eigen (sub)domeinnaam hosten. Nu is het alleen nog een kwestie van Nextcloud naar wens inrichten.