Att köra Nextcloud med NGINX möjliggör effektiv an­vänd­ning av system­re­sur­ser till­sam­mans med flexibla dis­tri­bu­tions­al­ter­na­tiv. För att kon­fi­gu­re­ra det korrekt behöver du en kom­pa­ti­bel system­mil­jö och rätt kon­fi­gu­ra­tion. Några specifika ju­ste­ring­ar krävs också för smidig in­teg­ra­tion med NGINX.

Vad är NGINX och varför ska man kombinera det med Nextcloud?

NGINX är en öppen käll­kods­ba­se­rad webb­ser­ver­pro­gram­va­ra som också kan fungera som en omvänd prox­y­ser­ver, last­ba­lan­se­ra­re och HTTP-cache. NGINX ut­veck­la­des ur­sprung­li­gen av den ryska pro­gram­va­ru­in­gen­jö­ren Igor Sysoev och dis­tri­bue­ras under BSD-licensen (BSD är en Unix-variant).

NGINX är utformat för att hantera ett stort antal an­slut­ning­ar samtidigt. För att göra detta använder pro­gram­va­ran en hän­del­se­styrd, icke-bloc­ke­ran­de ar­ki­tek­tur. Till skillnad från tra­di­tio­nel­la webb­serv­rar som skapar en ny process eller tråd för varje an­slut­ning, kör NGINX en hu­vud­pro­cess till­sam­mans med flera ar­bets­pro­ces­ser. Hu­vud­pro­ces­sen hanterar kon­fi­gu­ra­tio­nen, medan ar­bets­pro­ces­ser­na bearbetar in­kom­man­de kli­ent­för­fråg­ning­ar.

Att kombinera Nextcloud med NGINX erbjuder flera viktiga fördelar för hög­pre­ste­ran­de miljöer, bland annat:

  • Effektiv re­sur­san­vänd­ning: NGINX kan hantera flera an­slut­ning­ar samtidigt, med minimal re­surs­för­bruk­ning.
  • Utmärkt skal­bar­het: NGINX stöder flexibel last­ba­lan­se­ring och är lätt att skala upp genom att lägga till yt­ter­li­ga­re servrar.
  • Mycket an­pass­nings­bar ar­ki­tek­tur: Tack vare sin modulära struktur kan NGINX anpassas för att passa en rad olika scenarier.
  • Pålitlig prestanda under tung ser­ver­be­last­ning: Även när servern är hårt belastad är NGINX pålitligt och håller dina tjänster kon­ti­nu­er­ligt till­gäng­li­ga.
Notis

Eftersom Nextcloud endast of­fi­ci­ellt stöder Apache 2.x som webb­ser­ver finns det inget of­fi­ci­ellt stöd för NGINX. Att köra Nextcloud med NGINX passar därför bäst för användare med er­fa­ren­het av webb­ser­ver­kon­fi­gu­ra­tion.

Vilka är kraven för att köra Nextcloud med NGINX?

För att köra Nextcloud på NGINX behöver du en server som kör Ubuntu, Debian eller ett annat kom­pa­ti­belt system. Servern bör ha minst 4 GB RAM-minne och två pro­ces­so­rer. För större in­stal­la­tio­ner med flera Nextcloud-appar re­kom­men­de­ras starkt mer minne och fler pro­ces­sor­kär­nor. Du behöver också till­räck­ligt med lag­rings­ut­rym­me för data och sä­ker­hetsko­pi­or.

För in­stal­la­tio­nen behöver du också en kom­pa­ti­bel databas som MySQL eller MariaDB, samt skript­språ­ket PHP (minst version 8.1, version 8.3 re­kom­men­de­ras). Databasen används för att lagra an­vän­dar­da­ta och plugin-data, samt filme­ta­da­ta. PHP krävs för att köra Nextclouds kärn­funk­tio­ner. Du behöver också ett konto med ad­mi­nist­ra­törs­rät­tig­he­ter för att in­stal­le­ra pro­gram­va­ran.

Hur man in­stal­le­rar Nextcloud med NGINX

Vissa viktiga för­be­re­del­ser bör göras innan Nextcloud in­stal­le­ras. Denna guide utgår från en Ubuntu-server där systemet och alla nöd­vän­di­ga beroenden redan finns på plats. Dessa in­klu­de­rar NGINX som webb­ser­ver, MySQL som databas och PHP 8.3 med alla nöd­vän­di­ga tillägg.

Vi har också in­stal­le­rat Certbot för enkel kon­fi­gu­ra­tion av SSL-cer­ti­fi­kat med Let’s Encrypt. Vi antar också att du har en domän kon­fi­gu­re­rad så att du kan komma åt Nextcloud via en URL istället för en IP-adress.

Hur man laddar ner och packar upp Nextcloud

Börja med att skapa en mapp med namnet ”nextcloud” i din hem­ka­ta­log för att lagra in­stal­la­tions­fi­ler­na. Detta kan göras manuellt via Nextclouds änd­rings­logg, men det går snabbare att använda följande Curl-kommando:

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

Om du in­stal­le­rar en annan version av Nextcloud, se till att uppdatera URL:en i enlighet med detta.

Packa sedan upp filen, flytta den till webbroten ./var/www och ställ in fil­be­hö­rig­he­ter­na:

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

Hur man kon­fi­gu­re­rar databasen

För att kon­fi­gu­re­ra MySQL-databasen, kör sudo-kommandot sudo mysql_secure_installation. Skriv “y” för att ställa in ditt root-lösenord (VALIDATE PASSWORD) och välj “2” för ett starkt lösenord (STRONG), som du sedan kan ställa in. Tryck på “y” för att bekräfta lö­senor­det, tryck sedan på “y” igen för att ta bort anonyma användare, in­ak­ti­ve­ra fjär­rin­logg­ning­ar, ta bort test­da­ta­ba­sen och ladda om be­hö­rig­hets­ta­bel­ler­na.

Följ sedan dessa steg:

  1. Logga in som root-användare med sudo mysql -u root -p.
  2. Skapa databasen med: create database nextcloud;.
  3. Skapa an­vän­da­ren med: create user 'nextcloud'@'localhost' identified by <new_password>;.
  4. Bevilja be­hö­rig­he­ter med: grant all privileges on nextcloud.* to 'nextcloud'@'localhost';.
  5. Slutligen upp­da­te­rar du be­hö­rig­he­ter­na med flush privileges; och avslutar da­ta­bas­kon­so­len med exit.

När databasen har kon­fi­gu­re­rats måste du lägga till in­logg­nings­upp­gif­ter­na (DB_NAME, DB_USER, DB_PASSWORD) i Nextclouds kon­fi­gu­ra­tions­fil. Öppna filen ./var/www/nextcloud/config/config.php och lägg till relevanta poster:

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

Hur man in­ak­ti­ve­rar NGINX:s stan­dard­kon­fi­gu­ra­tion

Innan du in­te­gre­rar Nextcloud i NGINX måste du se till att inga andra kon­fi­gu­ra­tions­fi­ler åsi­do­sät­ter Nextcloud-in­stal­la­tio­nen. Som standard kan det fort­fa­ran­de finnas en default i ./etc/nginx/sites-enabled/ som kan störa din in­stal­la­tion. Ta bort den med:

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

Aktivera sedan din anpassade kon­fi­gu­ra­tion med följande kommando:

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

Hur man kon­fi­gu­re­rar NGINX-servern

För att kon­fi­gu­re­ra NGINX som webb­ser­ver måste en domän redan vara kon­fi­gu­re­rad och länkad till serverns IP-adress. Se till att DNS också är korrekt kon­fi­gu­re­rad. Skapa en ny NGINX-kon­fi­gu­ra­tions­fil i katalogen sites-available med hjälp av:

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

(Vi använde exampledomain.co.uk som URL.)

Öppna kon­fi­gu­ra­tions­fi­len i en tex­tre­di­ge­ra­re (t.ex. Vim) med:

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

Infoga kod­bloc­ket från avsnittet ”Nextcloud i en un­der­ka­ta­log till NGINX-webbrots” i do­ku­men­ta­tio­nen för Nextcloud NGINX-kon­fi­gu­ra­tion.

Eftersom HTTPS-cer­ti­fi­ka­tet kommer att läggas till med Certbot, ta bort alla SSL-re­la­te­ra­de rader från NGINX-kon­fi­gu­ra­tions­fi­len. Certbot hanterar dessa au­to­ma­tiskt.

Hur man kon­fi­gu­re­rar ett SSL-cer­ti­fi­kat med Certbot

För att köra Nextcloud över en säker HTTPS-an­slut­ning måste du kon­fi­gu­re­ra ett SSL-cer­ti­fi­kat, i detta fall från Let’s Encrypt. Börja med att kon­fi­gu­re­ra brand­väg­gen så att den tillåter HTTPS- och SSH-an­slut­ning­ar med följande sudo-kommandon:

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

Aktivera sedan brand­väg­gen med sudo ufw enable och kon­trol­le­ra med sudo ufw status för att sä­ker­stäl­la att an­slut­ning­ar­na är tillåtna. Därefter kan du skapa SSL-cer­ti­fi­ka­tet med Certbot:

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

Följ an­vis­ning­ar­na för att ange din e-post­a­dress för cer­ti­fi­kat­för­ny­el­ser och för att godkänna an­vän­dar­vill­ko­ren. Välj al­ter­na­tiv 2 för att au­to­ma­tiskt omdi­ri­ge­ra alla HTTP-för­fråg­ning­ar till HTTPS. Certbot sparar cer­ti­fi­kat­fi­ler­na i katalogen .etc/letsencrypt/live/exampledomain.co.uk/. Filen fullchain.pem in­ne­hål­ler SSL-cer­ti­fi­ka­tet och privkey.pem in­ne­hål­ler den privata nyckeln. Du måste lägga till dem i 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

Eftersom Certbot har mo­di­fi­e­rat kon­fi­gu­ra­tions­fi­len måste du lägga till at­tri­bu­tet ssl mellan 443 och http2 igen. Blocket ska se ut så här:

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

Hur man startar om tjänster och kommer åt Nextcloud

För att änd­ring­ar­na ska träda i kraft måste du ladda om tjäns­ter­na PHP-FPM och NGINX:

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

Öppna nu din domän i webb­lä­sa­ren – i vårt fall ex­ample­do­main.co.uk. Om allt har kon­fi­gu­re­rats korrekt ska Nextclouds väl­komst­si­da visas.

Notis

Om Nextcloud inte laddas kan det bero på att din domän inte är listad som en betrodd domän i config.php. Lägg till den där för att lösa problemet.

Gå till huvudmeny