Door Nextcloud met NGINX te draaien, kun je efficiënt ge­bruik­ma­ken van sys­teem­bron­nen en profiteer je van flexibele im­ple­men­ta­tie­mo­ge­lijk­he­den. Om dit correct in te stellen, heb je een com­pa­ti­be­le sys­tee­m­om­ge­ving en de juiste con­fi­gu­ra­tie nodig. Daarnaast zijn er enkele spe­ci­fie­ke aan­pas­sin­gen nodig voor een soepele in­te­gra­tie met NGINX.

Wat is NGINX en waarom zou je het com­bi­ne­ren met Nextcloud?

NGINX is een op open source ge­ba­seer­de web­ser­ver­soft­wa­re die ook kan fungeren als reverse-proxy­ser­ver, load balancer en HTTP-cache. NGINX is oor­spron­ke­lijk ont­wik­keld door de Russische software-engineer Igor Sysoev en wordt ge­dis­tri­bu­eerd onder de BSD-licentie (BSD is een Unix-variant).

NGINX is ontworpen om een groot aantal ver­bin­din­gen te­ge­lij­ker­tijd te verwerken. Hiervoor maakt de software gebruik van een ge­beur­te­nis­ge­stuur­de, non-blocking ar­chi­tec­tuur. In te­gen­stel­ling tot tra­di­ti­o­ne­le web­ser­vers, die voor elke ver­bin­ding een nieuw proces of een nieuwe thread starten, draait NGINX één hoofd­pro­ces naast meerdere werk­pro­ces­sen. Het hoofd­pro­ces zorgt voor de con­fi­gu­ra­tie, terwijl de werk­pro­ces­sen inkomende verzoeken van clients verwerken.

De com­bi­na­tie van Nextcloud en NGINX biedt ver­schil­len­de be­lang­rij­ke voordelen voor hoog­waar­di­ge om­ge­vin­gen, waaronder:

  • Efficiënt gebruik van sys­teem­bron­nen: NGINX kan meerdere ver­bin­din­gen tegelijk verwerken, met een minimaal verbruik van sys­teem­bron­nen.
  • Uit­ste­ken­de schaal­baar­heid: NGINX on­der­steunt flexibele load balancing en is eenvoudig schaal­baar door extra servers toe te voegen.
  • Zeer aan­pas­ba­re ar­chi­tec­tuur: Dankzij de modulaire structuur kan NGINX worden aangepast aan een breed scala aan scenario’s.
  • Be­trouw­ba­re pres­ta­ties bij hoge ser­ver­be­las­ting: zelfs wanneer de server zwaar wordt belast, blijft NGINX be­trouw­baar en zorgt het ervoor dat uw diensten continu be­schik­baar blijven.
Opmerking

Aangezien Nextcloud officieel alleen Apache 2.x als webserver on­der­steunt, is er geen officiële on­der­steu­ning voor NGINX. Het gebruik van Nextcloud met NGINX is daarom vooral geschikt voor ge­brui­kers die ervaring hebben met het con­fi­gu­re­ren van web­ser­vers.

Wat zijn de vereisten om Nextcloud met NGINX te draaien?

Om Nextcloud op NGINX te draaien, heb je een server nodig waarop Ubuntu, Debian of een ander com­pa­ti­bel be­stu­rings­sys­teem draait. De server moet be­schik­ken over minimaal 4 GB RAM en twee CPU’s. Voor grotere op­stel­lin­gen met meerdere Nextcloud-apps wordt sterk aan­ge­ra­den om meer geheugen en CPU-kernen te gebruiken. Daarnaast heb je voldoende op­slag­ruim­te nodig voor gegevens en back-ups.

Voor de in­stal­la­tie heb je ook een com­pa­ti­be­le database nodig, zoals MySQL of MariaDB, evenals de script­taal PHP (minimaal versie 8.1, versie 8.3 wordt aan­be­vo­len). De database wordt gebruikt om ge­brui­kers­ge­ge­vens, plug-in­ge­ge­vens en meta­ge­ge­vens van bestanden op te slaan. PHP is vereist om de kern­func­ties van Nextcloud uit te voeren. Daarnaast heb je een account met be­heer­ders­rech­ten nodig om de software te in­stal­le­ren.

Nextcloud in­stal­le­ren met NGINX

Voordat u Nextcloud in­stal­leert, moet u enkele es­sen­ti­ë­le voor­be­rei­din­gen treffen. In deze hand­lei­ding wordt uitgegaan van een Ubuntu-server waarop het be­stu­rings­sys­teem en alle benodigde af­han­ke­lijk­he­den al zijn ge­ïn­stal­leerd. Het gaat hierbij om NGINX als webserver, MySQL als database en PHP 8.3 met alle benodigde extensies.

We hebben ook Certbot ge­ïn­stal­leerd, zodat je eenvoudig een SSL-cer­ti­fi­caat kunt instellen met Let’s Encrypt. We gaan er bovendien vanuit dat je een domein hebt ingesteld, zodat je Nextcloud via een URL kunt openen in plaats van via een IP-adres.

Hoe Nextcloud te down­lo­a­den en uit te pakken

Maak om te beginnen een map met de naam „nextcloud“ aan in je thuismap om de in­stal­la­tie­be­stan­den in op te slaan. Hoewel je dit handmatig kunt doen via de changelog van Nextcloud, gaat het sneller met de volgende Curl-opdracht:

mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zip
bash
Opmerking

Als je een andere versie van Nextcloud in­stal­leert, zorg er dan voor dat je de URL dien­over­een­kom­stig aanpast.

Pak het bestand ver­vol­gens uit, verplaats het naar de webroot ./var/www en stel de be­stands­rech­ten in:

unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloud
bash

Hoe stel je de database in?

Voer de sudo-opdracht uit om de MySQL-database in te stellen ( sudo mysql_secure_installation. Typ „y“ om je root-wacht­woord in te stellen (VALIDATE PASSWORD) en kies „2“ voor een sterk wacht­woord (STRONG), dat je ver­vol­gens kunt instellen. Druk op „y“ om het wacht­woord te be­ves­ti­gen en druk ver­vol­gens nogmaals op „y“ om anonieme ge­brui­kers te ver­wij­de­ren, inloggen op afstand uit te schakelen, de test­da­ta­ba­se te ver­wij­de­ren en de be­voegd­heids­ta­bel­len opnieuw te laden.

Volg dan deze stappen:

  1. Meld je aan als root-gebruiker via sudo mysql -u root -p.
  2. Maak de database aan met: create database nextcloud;.
  3. Maak de gebruiker aan met: create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Verleen rechten met: grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Werk ten slotte de rechten bij met flush privileges; en sluit de da­ta­base­con­so­le af met exit.

Zodra de database succesvol is ingesteld, moet u de in­log­ge­ge­vens (DB_NAME, DB_USER, DB_PASSWORD) toevoegen aan het con­fi­gu­ra­tie­be­stand van Nextcloud. Open het bestand ./var/www/nextcloud/config/config.php en voeg de be­tref­fen­de gegevens toe:

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt

Hoe de stan­daard­con­fi­gu­ra­tie van NGINX uit te schakelen

Voordat u Nextcloud in NGINX in­te­greert, moet u ervoor zorgen dat geen enkel ander con­fi­gu­ra­tie­be­stand de Nextcloud-in­stal­la­tie over­schrijft. Standaard kan er nog steeds een default atie­be­stand in ./etc/nginx/sites-enabled/ staan dat uw in­stal­la­tie zou kunnen verstoren. Verwijder dit met:

sudo rm /etc/nginx/sites-enabled/default
bash

Activeer ver­vol­gens je aan­ge­pas­te con­fi­gu­ra­tie met deze opdracht:

sudo ln -s /etc/nginx/sites-available/exampledomain.co.uk /etc/nginx/sites-enabled/
bash

Hoe con­fi­gu­reer je de NGINX-server

Om NGINX als webserver te con­fi­gu­re­ren, moet er al een domein zijn ingesteld en gekoppeld aan het IP-adres van de server. Zorg ervoor dat de DNS ook correct is ingesteld. Maak een nieuw NGINX-con­fi­gu­ra­tie­be­stand aan in de map sites-available met behulp van:

sudo touch /etc/nginx/sites-available/exampledomain.co.uk
bash

(We hebben exampledomain.co.uk als URL gebruikt.)

Open het con­fi­gu­ra­tie­be­stand in een tekst­edi­tor (zoals Vim) met:

sudo vim /etc/nginx/sites-available/exampledomain.co.uk
bash

Voeg het codeblok in uit het gedeelte ‘Nextcloud in een submap van de NGINX-webroots’ van de Nextcloud NGINX-con­fi­gu­ra­tie­do­cu­men­ta­tie.

Aangezien het HTTPS-cer­ti­fi­caat met Certbot wordt toe­ge­voegd, moet u alle regels met be­trek­king tot SSL uit het NGINX-con­fi­gu­ra­tie­be­stand ver­wij­de­ren. Certbot regelt dit au­to­ma­tisch.

Hoe stel je een SSL-cer­ti­fi­caat in met Certbot

Om Nextcloud via een be­vei­lig­de HTTPS-ver­bin­ding te gebruiken, moet je een SSL-cer­ti­fi­caat instellen, in dit geval van Let’s Encrypt. Con­fi­gu­reer om te beginnen de firewall zodat HTTPS- en SSH-ver­bin­din­gen worden toe­ge­staan met behulp van de volgende sudo-op­drach­ten:

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

Schakel ver­vol­gens de firewall in met sudo ufw enable en con­tro­leer in sudo ufw status of de ver­bin­din­gen zijn toe­ge­staan. Daarna kun je het SSL-cer­ti­fi­caat aanmaken met Certbot:

sudo certbot --nginx -d exampledomain.co.uk
bash

Volg de in­struc­ties om uw e-mailadres op te geven voor cer­ti­fi­caat­ver­nieu­win­gen en om de ser­vi­ce­voor­waar­den te ac­cep­te­ren. Kies optie 2 om alle HTTP-verzoeken au­to­ma­tisch om te leiden naar HTTPS. Certbot slaat de cer­ti­fi­caat­be­stan­den op in de map .etc/letsencrypt/live/exampledomain.co.uk/. Het bestand fullchain.pem bevat het SSL-cer­ti­fi­caat en privkey.pem bevat de pri­vé­sleu­tel. U moet deze toevoegen aan uw NGINX-con­fi­gu­ra­tie­be­stand:

ssl_certificate /etc/letsencrypt/live/exampledomain.co.uk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exampledomain.co.uk/privkey.pem;
txt

Aangezien Certbot het con­fi­gu­ra­tie­be­stand heeft gewijzigd, moet je het attribuut ssl weer tussen 443 en http2 invoegen. Het blok moet er als volgt uitzien:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name exampledomain.co.uk;
}
txt

Hoe u services opnieuw start en toegang krijgt tot Nextcloud

Om de wij­zi­gin­gen door te voeren, moet u de PHP-FPM- en NGINX-services opnieuw starten:

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

Open nu je domein in de browser – in ons geval example­do­main.co.uk. Als alles correct is ge­con­fi­gu­reerd, zou de wel­komst­pa­gi­na van Nextcloud moeten ver­schij­nen.

Opmerking

Als Nextcloud niet laadt, kan dat komen doordat uw domein niet als vertrouwd domein is opgegeven in config.php. Voeg het daar toe om het probleem op te lossen.

Ga naar hoofdmenu