Door Nextcloud met NGINX te gebruiken, kun je efficiënt omgaan met sys­teem­bron­nen en heb je flexibele im­ple­men­ta­tie­op­ties. Om het goed 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. Er zijn ook een paar 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 dienen 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 variant van Unix).

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, niet-blok­ke­ren­de 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 een hoofd­pro­ces naast meerdere werk­pro­ces­sen. Het hoofd­pro­ces verzorgt de con­fi­gu­ra­tie, terwijl de werk­pro­ces­sen de bin­nen­ko­men­de verzoeken van klanten verwerken.

Het com­bi­ne­ren van Nextcloud met 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 bronnen: NGINX kan meerdere ver­bin­din­gen te­ge­lij­ker­tijd verwerken, met minimaal verbruik van bronnen.
  • 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 zware ser­ver­be­las­ting: zelfs wanneer de server zwaar wordt belast, blijft NGINX be­trouw­baar en blijven uw diensten continu be­schik­baar.
Opmerking

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

Wat zijn de vereisten voor het draaien van Nextcloud met NGINX?

Om Nextcloud op NGINX te draaien, heb je een server nodig met Ubuntu, Debian of een ander com­pa­ti­bel systeem. De server moet minimaal 4 GB RAM en twee CPU’s hebben. Voor grotere op­stel­lin­gen met meerdere Nextcloud-apps worden meer geheugen en CPU-kernen sterk aan­be­vo­len. Je hebt ook 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, en de script­taal PHP (minimaal versie 8.1, versie 8.3 aan­be­vo­len). De database wordt gebruikt om ge­brui­kers­ge­ge­vens en plug-in­ge­ge­vens op te slaan, evenals meta­ge­ge­vens van bestanden. PHP is vereist om de kern­func­ties van Nextcloud uit te voeren. Je hebt ook een account met be­heer­ders­rech­ten nodig om de software te in­stal­le­ren.

Hoe Nextcloud met NGINX te in­stal­le­ren

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 systeem en alle vereiste af­han­ke­lijk­he­den al aanwezig zijn. Deze omvatten NGINX als webserver, MySQL als database en PHP 8.3 met alle benodigde extensies.

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

Hoe Nextcloud down­lo­a­den en uitpakken

Begin met het aanmaken van een map met de naam “nextcloud” in uw ho­me­di­rec­to­ry om de in­stal­la­tie­be­stan­den op te slaan. Hoewel dit handmatig kan worden gedaan via de Nextcloud-changelog, 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 u een andere versie van Nextcloud in­stal­leert, zorg er dan voor dat u de URL dien­over­een­kom­stig bijwerkt.

Pak ver­vol­gens het bestand 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 de database instellen

Om de MySQL-database in te stellen, voert u het sudo-commando sudo mysql_secure_installation uit. Typ “y” om uw root-wacht­woord in te stellen (VALIDATE PASSWORD) en kies “2” voor een sterk wacht­woord (STRONG), dat u 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, externe aan­mel­din­gen uit te schakelen, de test­da­ta­ba­se te ver­wij­de­ren en de privilege-tabellen opnieuw te laden.

Volg dan deze stappen:

  1. Log in als root­ge­brui­ker met 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 relevante 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 andere con­fi­gu­ra­tie­be­stan­den de Nextcloud-in­stal­la­tie over­schrij­ven. Standaard kan er nog steeds een default atie­be­stand in ./etc/nginx/sites-enabled/ staan dat uw in­stal­la­tie kan verstoren. Verwijder dit met:

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

Activeer ver­vol­gens uw 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 de NGINX-server con­fi­gu­re­ren

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 behulp van:

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, ver­wij­dert u alle SSL-ge­re­la­teer­de regels uit het NGINX-con­fi­gu­ra­tie­be­stand. Certbot handelt deze au­to­ma­tisch af.

Hoe een SSL-cer­ti­fi­caat instellen met Certbot

Om Nextcloud via een be­vei­lig­de HTTPS-ver­bin­ding te gebruiken, moet u 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 met sudo ufw status of de ver­bin­din­gen zijn toe­ge­staan. Ver­vol­gens kunt u 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 u het kenmerk ssl opnieuw toevoegen tussen 443 en http2. 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 kunt starten en toegang krijgt tot Nextcloud

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

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

Open nu uw 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 dit komen doordat uw domein niet is opgenomen als vertrouwd domein in config.php. Voeg het daar toe om het probleem op te lossen.

Ga naar hoofdmenu