Slik installerer og konfigurerer du Nextcloud med NGINX
Å kjøre Nextcloud med NGINX gir mulighet for effektiv utnyttelse av systemressursene samt fleksible distribusjonsalternativer. For å konfigurere det riktig trenger du et kompatibelt systemmiljø og riktig konfigurasjon. Det kreves også noen spesifikke justeringer for å sikre en problemfri integrasjon med NGINX.
Hva er NGINX, og hvorfor bør man bruke det sammen med Nextcloud?
NGINX er en åpen kildekode-basert webserverprogramvare som også kan fungere som en omvendt proxy-server, lastfordeler og HTTP-cache. NGINX ble opprinnelig utviklet av den russiske programvareingeniøren Igor Sysoev og distribueres under BSD-lisensen (BSD er en Unix-variant).
NGINX er utviklet for å håndtere et stort antall tilkoblinger samtidig. For å oppnå dette benytter programvaren en hendelsesdrevet, ikke-blokkerende arkitektur. I motsetning til tradisjonelle webservere som oppretter en ny prosess eller tråd for hver tilkobling, kjører NGINX en hovedprosess sammen med flere arbeidsprosesser. Hovedprosessen håndterer konfigurasjonen, mens arbeidsprosessene behandler innkommende klientforespørsler.
Å kombinere Nextcloud med NGINX gir flere viktige fordeler for miljøer som krever høy ytelse, blant annet:
- Effektiv ressursbruk: NGINX kan håndtere flere tilkoblinger samtidig, med minimalt ressursforbruk.
- Utmerket skalerbarhet: NGINX støtter fleksibel lastfordeling og kan enkelt skaleres ved å legge til flere servere.
- Svært tilpassbar arkitektur: Takket være den modulære strukturen kan NGINX tilpasses et bredt spekter av scenarier.
- Pålitelig ytelse under tung serverbelastning: Selv når serveren er under tung belastning, er NGINX pålitelig og holder tjenestene dine kontinuerlig tilgjengelige.
Siden Nextcloud offisielt kun støtter Apache 2.x som webserver, finnes det ingen offisiell støtte for NGINX. Å kjøre Nextcloud med NGINX er derfor best egnet for brukere med erfaring i konfigurering av webservere.
Hva er kravene for å kjøre Nextcloud med NGINX?
For å kjøre Nextcloud på NGINX trenger du en server som kjører Ubuntu, Debian eller et annet kompatibelt operativsystem. Serveren bør ha minst 4 GB RAM og to CPU-kjerner. For større oppsett med flere Nextcloud-instanser anbefales det på det sterkeste å bruke mer minne og flere CPU-kjerner. Du trenger også tilstrekkelig lagringsplass til data og sikkerhetskopier.
For å installere programvaren trenger du også en kompatibel database som MySQL eller MariaDB, samt skriptspråket PHP (minst versjon 8.1, versjon 8.3 anbefales). Databasen brukes til å lagre brukerdata og plugin-data, samt filmetadata. PHP er nødvendig for å kjøre Nextclouds kjernefunksjoner. Du trenger også en konto med administratorrettigheter for å installere programvaren.
Slik installerer du Nextcloud med NGINX
Det er noen viktige forberedelser som bør gjøres før du installerer Nextcloud. Denne veiledningen forutsetter at du bruker en Ubuntu-server der operativsystemet og alle nødvendige avhengigheter allerede er på plass. Dette inkluderer NGINX som webserver, MySQL som database og PHP 8.3 med alle nødvendige utvidelser.
Vi har også installert Certbot for enkel konfigurering av SSL-sertifikater med Let’s Encrypt. Vi legger også til grunn at du har konfigurert et domene, slik at du kan få tilgang til Nextcloud via en URL i stedet for en IP-adresse.
Du kan også følge veiledningene våre for å lære hvordan du installerer Nextcloud på Ubuntu 22.04, konfigurerer Nextcloud på Kubernetes eller installerer Nextcloud på Debian 12.
Slik laster du ned og pakker ut Nextcloud
Begynn med å opprette en mappe med navnet «nextcloud» i hjemmekatalogen din for å lagre installasjonsfilene. Selv om dette kan gjøres manuelt ved hjelp av Nextclouds endringslogg, går det raskere å bruke følgende Curl-kommando:
mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zipbashHvis du installerer en annen versjon av Nextcloud, må du huske å oppdatere URL-adressen tilsvarende.
Pakk deretter ut filen, flytt den til webrotkatalogen ./var/www og angi filrettighetene:
unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloudbashSlik konfigurerer du databasen
For å konfigurere MySQL-databasen, kjør sudo-kommandoen ( sudo mysql_secure_installation. Skriv inn «y» for å angi root-passordet ditt (VALIDATE PASSWORD) og velg «2» for et sterkt passord (STRONG), som du deretter kan angi. Trykk «y» for å bekrefte passordet, og trykk deretter «y» igjen for å fjerne anonyme brukere, deaktivere ekstern pålogging, fjerne testdatabasen og laste inn rettighetstabellene på nytt.
Følg deretter disse trinnene:
- Logg inn som root-bruker ved å bruke
sudo mysql -u root -p. - Opprett databasen ved å bruke:
create database nextcloud;. - Opprett brukeren ved hjelp av:
create user 'nextcloud'@'localhost' identified by <new_password>;. - Gi tillatelser ved å bruke:
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';. - Til slutt oppdaterer du rettighetene ved hjelp av
flush privileges;og avslutter databasekonsollen ved hjelp avexit.
Når databasen er konfigurert, må du legge til påloggingsopplysningene (DB_NAME, DB_USER, DB_PASSWORD) i Nextcloud-konfigurasjonsfilen. Åpne filen ./var/www/nextcloud/config/config.php og legg til de relevante oppføringene:
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,txtSlik deaktiverer du NGINX’ standardkonfigurasjon
Før du integrerer Nextcloud i NGINX, må du forsikre deg om at ingen andre konfigurasjonsfiler overstyrer Nextcloud-installasjonen. Som standard kan det fortsatt finnes en default figurasjonsfil i ./etc/nginx/sites-enabled/ som kan forstyrre oppsettet ditt. Fjern den ved å bruke:
sudo rm /etc/nginx/sites-enabled/defaultbashAktiver deretter den tilpassede konfigurasjonen din med denne kommandoen:
sudo ln -s /etc/nginx/sites-available/exampledomain.co.uk /etc/nginx/sites-enabled/bashSlik konfigurerer du NGINX-serveren
For å konfigurere NGINX som webserver må et domene allerede være opprettet og koblet til serverens IP-adresse. Sørg for at DNS også er riktig konfigurert. Opprett en ny NGINX-konfigurasjonsfil i katalogen sites-available ved å bruke:
sudo touch /etc/nginx/sites-available/exampledomain.co.ukbash(Vi brukte exampledomain.co.uk som URL.)
Åpne konfigurasjonsfilen i en tekstredigerer (for eksempel Vim) ved å bruke:
sudo vim /etc/nginx/sites-available/exampledomain.co.ukbashSett inn kodeblokken fra avsnittet «Nextcloud i en underkatalog til NGINX-webrootene» i dokumentasjonen for Nextcloud NGINX-konfigurasjon.
Siden HTTPS-sertifikatet vil bli lagt til med Certbot, må du fjerne alle SSL-relaterte linjer fra NGINX-konfigurasjonsfilen. Certbot vil håndtere dette automatisk.
Slik konfigurerer du et SSL-sertifikat med Certbot
For å kjøre Nextcloud over en sikker HTTPS-tilkobling må du konfigurere et SSL-sertifikat, i dette tilfellet fra Let’s Encrypt. Først må du konfigurere brannmuren slik at den tillater HTTPS- og SSH-tilkoblinger ved hjelp av følgende sudo-kommandoer:
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'bashDeretter aktiverer du brannmuren med sudo ufw enable og kontrollerer med sudo ufw status at tilkoblingene er tillatt. Deretter kan du opprette SSL-sertifikatet ved hjelp av Certbot:
sudo certbot --nginx -d exampledomain.co.ukbashFølg instruksjonene for å oppgi e-postadressen din for sertifikatfornyelser og for å godta vilkårene for bruk. Velg alternativ 2 for automatisk å omdirigere alle HTTP-forespørsler til HTTPS. Certbot lagrer sertifikatfilene i katalogen .etc/letsencrypt/live/exampledomain.co.uk/. Filen fullchain.pem inneholder SSL-sertifikatet, og privkey.pem inneholder den private nøkkelen. Du må legge dem til i NGINX-konfigurasjonsfilen din:
ssl_certificate /etc/letsencrypt/live/exampledomain.co.uk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exampledomain.co.uk/privkey.pem;txtSiden Certbot har endret konfigurasjonsfilen, må du legge til attributtet ssl mellom 443 og http2 igjen. Blokken skal se slik ut:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name exampledomain.co.uk;
}txtSlik starter du tjenester på nytt og får tilgang til Nextcloud
For at endringene skal tre i kraft, må du starte PHP-FPM- og NGINX-tjenestene på nytt:
sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.servicebashÅpne nå domenet ditt i nettleseren – i vårt tilfelle exampledomain.co.uk. Hvis alt er konfigurert riktig, bør velkomstsiden til Nextcloud vises.
Hvis Nextcloud ikke lastes inn, kan det skyldes at domenet ditt ikke er oppført som et pålitelig domene i config.php. Legg det til der for å løse problemet.