Når man kører Nextcloud med NGINX, får man både en effektiv ud­nyt­tel­se af sy­stemres­sour­cer­ne og fleksible in­stal­la­tions­mu­lig­he­der. For at få det sat korrekt op skal man have et kom­pa­ti­belt sy­stem­mil­jø og den rette kon­fi­gu­ra­tion. Der kræves også et par spe­ci­fik­ke ju­ste­rin­ger for at sikre en pro­blem­fri in­te­gra­tion med NGINX.

Hvad er NGINX, og hvorfor bør man kombinere det med Nextcloud?

NGINX er en open source-baseret webserver, der også kan fungere som reverse proxy-server, load balancer og HTTP-cache. NGINX er op­rin­de­ligt udviklet af den russiske softwa­re­in­ge­ni­ør Igor Sysoev og di­stri­bu­e­res under BSD-licensen (BSD er en Unix-variant).

NGINX er udviklet til at håndtere et stort antal for­bin­del­ser samtidigt. Til dette formål anvender softwaren en be­gi­ven­heds­sty­ret, ikke-blo­ke­ren­de ar­ki­tek­tur. I mod­sæt­ning til tra­di­tio­nel­le web­ser­ve­re, der opretter en ny proces eller tråd for hver for­bin­del­se, kører NGINX en ho­ved­pro­ces si­de­lø­ben­de med flere ar­bejds­pro­ces­ser. Ho­ved­pro­ces­sen varetager kon­fi­gu­ra­tio­nen, mens ar­bejds­pro­ces­ser­ne behandler indgående kli­en­tan­mod­nin­ger.

At kombinere Nextcloud med NGINX giver en række vigtige fordele i højty­den­de miljøer, herunder:

  • Effektiv res­sour­ceud­nyt­tel­se: NGINX kan håndtere flere for­bin­del­ser på én gang med et minimalt res­sour­ce­for­brug.
  • Frem­ra­gen­de ska­ler­bar­hed: NGINX un­der­støt­ter fleksibel be­last­nings­for­de­ling og kan nemt skaleres ved at tilføje yder­li­ge­re servere.
  • Meget til­pas­se­lig ar­ki­tek­tur: Takket være sin modulære struktur kan NGINX tilpasses til en lang række scenarier.
  • Pålidelig ydeevne under stor ser­ver­be­last­ning: Selv når serveren er under stor be­last­ning, er NGINX pålidelig og sikrer, at dine tjenester altid er til­gæn­ge­li­ge.
Note

Da Nextcloud officielt kun un­der­støt­ter Apache 2.x som webserver, er der ingen officiel support til NGINX. Det er derfor bedst egnet til brugere med erfaring i kon­fi­gu­ra­tion af web­ser­ve­re at køre Nextcloud med NGINX.

Hvad er kravene til at køre Nextcloud med NGINX?

For at køre Nextcloud på NGINX skal du have en server, der kører Ubuntu, Debian eller et andet kom­pa­ti­belt system. Serveren skal have mindst 4 GB RAM og to CPU’er. Til større in­stal­la­tio­ner med flere Nextcloud-instanser anbefales det på det kraf­tig­ste at bruge mere hukom­mel­se og flere CPU-kerner. Du skal desuden have til­stræk­ke­lig la­ger­plads til data og sik­ker­heds­ko­pi­er.

Til in­stal­la­tio­nen skal du desuden have en kom­pa­ti­bel database som f.eks. MySQL eller MariaDB samt script-sproget PHP (minimum version 8.1, version 8.3 anbefales). Databasen bruges til at gemme bruger- og plugin-data samt fil­me­ta­da­ta. PHP er nød­ven­digt for at køre Ne­xtclouds ker­ne­funk­tio­ner. Du skal også have en konto med ad­mi­ni­stra­tor­ret­tig­he­der for at kunne in­stal­le­re softwaren.

Sådan in­stal­le­res Nextcloud med NGINX

Der er nogle vigtige for­be­re­del­ser, der skal udføres, inden Nextcloud in­stal­le­res. Denne vej­led­ning for­ud­sæt­ter, at der er en Ubuntu-server, hvor systemet og alle nød­ven­di­ge af­hæn­gig­he­der allerede er in­stal­le­ret. Dette omfatter NGINX som webserver, MySQL som database og PHP 8.3 med alle nød­ven­di­ge ud­vi­del­ser.

Vi har desuden in­stal­le­ret Certbot, så du nemt kan kon­fi­gu­re­re SSL-cer­ti­fi­ka­ter med Let’s Encrypt. Vi går også ud fra, at du har oprettet et domæne, så du kan få adgang til Nextcloud via en URL i stedet for en IP-adresse.

Sådan down­lo­a­des og udpakkes Nextcloud

Start med at oprette en mappe ved navn »nextcloud« i din hjem­me­map­pe til at gemme in­stal­la­tions­fi­ler­ne i. Selvom dette kan gøres manuelt ved hjælp af Ne­xtclouds changelog, går det hurtigere at bruge følgende Curl-kommando:

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

Hvis du in­stal­le­rer en anden version af Nextcloud, skal du huske at opdatere URL-adressen i over­ens­stem­mel­se hermed.

Pak derefter filen ud, flyt den til webroden ./var/www, og angiv fil­ret­tig­he­der­ne:

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

Sådan opsættes databasen

For at kon­fi­gu­re­re MySQL-databasen skal du køre sudo-kom­man­do­en sudo mysql_secure_installation. Indtast »y« for at angive din root-ad­gangs­ko­de (VALIDATE PASSWORD), og vælg »2« for at få en stærk ad­gangs­ko­de (STRONG), som du derefter kan indstille. Tryk på »y« for at bekræfte ad­gangs­ko­den, og tryk derefter på »y« igen for at fjerne anonyme brugere, de­ak­ti­ve­re fjern­lo­gin, slette test­da­ta­ba­sen og ge­nind­læ­se ret­tig­heds­ta­bel­ler­ne.

Følg derefter disse trin:

  1. Log ind som root-bruger ved hjælp af sudo mysql -u root -p.
  2. Opret databasen ved hjælp af: create database nextcloud;.
  3. Opret brugeren ved hjælp af: create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Tildel til­la­del­ser ved hjælp af: grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Til sidst skal du opdatere ret­tig­he­der­ne ved hjælp af flush privileges; og afslutte da­ta­ba­se­kon­sol­len ved hjælp af exit.

Når databasen er oprettet, skal du tilføje lo­gi­nop­lys­nin­ger­ne (DB_NAME, DB_USER, DB_PASSWORD) til Nextcloud-kon­fi­gu­ra­tions­fi­len. Åbn filen ./var/www/nextcloud/config/config.php, og tilføj de relevante op­lys­nin­ger:

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

Sådan de­ak­ti­ve­res NGINX’s stan­dard­kon­fi­gu­ra­tion

Inden du in­te­gre­rer Nextcloud i NGINX, skal du sikre dig, at ingen andre kon­fi­gu­ra­tions­fi­ler over­skri­ver Nextcloud-in­stal­la­tio­nen. Som standard kan der stadig være en default ationsfil i ./etc/nginx/sites-enabled/, der kan forstyrre din opsætning. Fjern den ved hjælp af:

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

Aktivér derefter din bru­ger­de­fi­ne­re­de kon­fi­gu­ra­tion med denne kommando:

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

Sådan kon­fi­gu­re­res NGINX-serveren

For at kon­fi­gu­re­re NGINX som webserver skal der allerede være oprettet et domæne, som er knyttet til serverens IP-adresse. Sørg for, at DNS også er kon­fi­gu­re­ret korrekt. Opret en ny NGINX-kon­fi­gu­ra­tions­fil i mappen sites-available ved hjælp af:

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

(Vi brugte exampledomain.co.uk som URL.)

Åbn kon­fi­gu­ra­tions­fi­len i et tek­stre­di­ge­rings­pro­gram (f.eks. Vim) ved at skrive:

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

Indsæt ko­de­blok­ken fra afsnittet »Nextcloud i en un­der­map­pe til NGINX-we­brød­der­ne« i do­ku­men­ta­tio­nen til Nextcloud NGINX-kon­fi­gu­ra­tio­nen.

Da HTTPS-cer­ti­fi­ka­tet vil blive tilføjet med Certbot, skal du fjerne alle SSL-re­la­te­re­de linjer fra NGINX-kon­fi­gu­ra­tions­fi­len. Certbot tager sig au­to­ma­tisk af dette.

Sådan kon­fi­gu­re­res et SSL-cer­ti­fi­kat med Certbot

For at køre Nextcloud via en sikker HTTPS-for­bin­del­se skal du kon­fi­gu­re­re et SSL-cer­ti­fi­kat, i dette tilfælde fra Let’s Encrypt. Start med at kon­fi­gu­re­re fi­rewal­len, så den tillader HTTPS- og SSH-for­bin­del­ser, ved hjælp af følgende sudo-kom­man­do­er:

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

Aktivér derefter fi­rewal­len ved at indstille sudo ufw enable, og kon­trol­ler ved hjælp af sudo ufw status, at for­bin­del­ser­ne er tilladt. Derefter kan du oprette SSL-cer­ti­fi­ka­tet ved hjælp af Certbot:

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

Følg vej­led­nin­gen for at angive din e-mailadres­se til cer­ti­fi­kat­for­ny­el­ser og for at acceptere ser­vi­ce­vil­kå­re­ne. Vælg mulighed 2 for au­to­ma­tisk at om­di­ri­ge­re alle HTTP-an­mod­nin­ger til HTTPS. Certbot gemmer cer­ti­fi­kat­fi­ler­ne i mappen .etc/letsencrypt/live/exampledomain.co.uk/. Filen fullchain.pem in­de­hol­der SSL-cer­ti­fi­ka­tet, og privkey.pem in­de­hol­der den private nøgle. Du skal tilføje dem til din NGINX-kon­fi­gu­ra­tions­fil:

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

Da Certbot har ændret kon­fi­gu­ra­tions­fi­len, skal du igen indsætte at­tri­but­ten ssl mellem 443 og http2. Blokken skal se således ud:

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

Sådan gen­star­ter du tjenester og får adgang til Nextcloud

For at æn­drin­ger­ne skal træde i kraft, skal du genstarte PHP-FPM- og NGINX-tje­ne­ster­ne:

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

Åbn nu dit domæne i browseren – i vores tilfælde exam­p­ledo­main.co.uk. Hvis alt er kon­fi­gu­re­ret korrekt, bør Ne­xtclouds vel­komst­si­de nu vises.

Note

Hvis Nextcloud ikke indlæses, kan det skyldes, at dit domæne ikke er angivet som et betroet domæne i config.php. Tilføj det der for at løse problemet.

Gå til ho­ved­me­nu­en