init
This commit is contained in:
204
content/bewoners/nginx/nextcloud/_index.nl.md
Normal file
204
content/bewoners/nginx/nextcloud/_index.nl.md
Normal file
@@ -0,0 +1,204 @@
|
||||
---
|
||||
title: "NextCloud (NGINX)"
|
||||
date: 2025-11-10
|
||||
weight: 3
|
||||
feedback: true
|
||||
draft: false
|
||||
---
|
||||
|
||||
NextCloud is een open source platform voor bestandssynchronisatie en samenwerking, vergelijkbaar met diensten als Dropbox of OneDrive. In deze handleiding installeren we NextCloud rechtstreeks op een Debian server met NGINX als webserver.
|
||||
|
||||
{{< notice "info" "Informatie" >}}
|
||||
Deze handleiding gaat uit van een Debian server met een basis NGINX installatie zoals beschreven in het bovenliggende artikel **NGINX**.
|
||||
{{< /notice >}}
|
||||
|
||||
## Benodigdheden
|
||||
- Een server met een Debian Linux installatie
|
||||
- Een domeinnaam, bijvoorbeeld `cloud.voorbeeld.nl`
|
||||
- DNS ingesteld naar het IP-adres van de server
|
||||
- Een werkende webserver (NGINX) die verzoeken voor jouw domein kan verwerken
|
||||
- Rechten als `su` of `sudo` om opdrachten als root uit te voeren
|
||||
|
||||
## Voorbereiding
|
||||
Zorg dat het systeem up-to-date is voordat je NextCloud installeert.
|
||||
|
||||
1. Log in met SSH.
|
||||
```bash
|
||||
ssh gebruiker@server
|
||||
```
|
||||
|
||||
2. Werk de pakketbron en geïnstalleerde pakketten bij.
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade
|
||||
```
|
||||
|
||||
## PHP en database installeren
|
||||
NextCloud heeft PHP en een database nodig. In dit voorbeeld gebruiken we MariaDB als database.
|
||||
|
||||
1. Installeer PHP, de benodigde modules en MariaDB.
|
||||
```bash
|
||||
sudo apt install php-fpm php-mysql php-xml php-gd php-curl php-mbstring php-zip php-intl php-bcmath php-gmp mariadb-server unzip
|
||||
```
|
||||
|
||||
2. Beveilig de MariaDB installatie
|
||||
```bash
|
||||
sudo mysql_secure_installation
|
||||
```
|
||||
|
||||
3. Maak een database en gebruiker voor NextCloud.
|
||||
```bash
|
||||
sudo mysql
|
||||
```
|
||||
|
||||
Voer daarna in de MariaDB prompt de volgende opdrachten uit, pas wachtwoord en namen aan:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'sterk-db-wachtwoord';
|
||||
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
EXIT;
|
||||
```
|
||||
|
||||
## NextCloud bestanden downloaden
|
||||
We plaatsen NextCloud in `/var/www/nextcloud`.
|
||||
|
||||
1. Download en pak NextCloud uit.
|
||||
```bash
|
||||
cd /tmp
|
||||
curl -LO https://download.nextcloud.com/server/releases/latest.zip
|
||||
unzip latest.zip
|
||||
```
|
||||
|
||||
2. Maak de doelmap aan en kopieer de bestanden.
|
||||
```bash
|
||||
sudo mkdir -p /var/www/nextcloud
|
||||
sudo rsync -av nextcloud/ /var/www/nextcloud/
|
||||
```
|
||||
|
||||
3. Stel de juiste eigenaar en rechten in.
|
||||
```bash
|
||||
sudo chown -R www-data:www-data /var/www/nextcloud
|
||||
sudo find /var/www/nextcloud -type d -exec chmod 750 {} \;
|
||||
sudo find /var/www/nextcloud -type f -exec chmod 640 {} \;
|
||||
```
|
||||
|
||||
## NGINX configureren voor NextCloud
|
||||
We maken een aparte server-configuratie aan voor `cloud.voorbeeld.nl`.
|
||||
|
||||
1. Maak een nieuw configuratiebestand.
|
||||
```bash
|
||||
sudo nano /etc/nginx/sites-available/cloud.voorbeeld.nl
|
||||
```
|
||||
|
||||
2. Plaats de volgende configuratie in het bestand:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
server_name cloud.voorbeeld.nl;
|
||||
|
||||
root /var/www/nextcloud;
|
||||
index index.php index.html;
|
||||
|
||||
client_max_body_size 512M;
|
||||
fastcgi_buffers 64 4K;
|
||||
|
||||
add_header Referrer-Policy "no-referrer" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
|
||||
location = /robots.txt { allow all; log_not_found off; access_log off; }
|
||||
|
||||
location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; }
|
||||
location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; }
|
||||
|
||||
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
|
||||
deny all;
|
||||
}
|
||||
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location / {
|
||||
rewrite ^ /index.php$request_uri;
|
||||
}
|
||||
|
||||
location ~ \.php(?:$|/) {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
include snippets/fastcgi-php.conf;
|
||||
fastcgi_pass unix:/run/php/php-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
}
|
||||
|
||||
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
|
||||
try_files $uri /index.php$request_uri;
|
||||
access_log off;
|
||||
expires 6M;
|
||||
}
|
||||
|
||||
location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
|
||||
try_files $uri /index.php$request_uri;
|
||||
access_log off;
|
||||
expires 6M;
|
||||
}
|
||||
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
}
|
||||
```
|
||||
|
||||
{{< notice "info" "Informatie" >}}
|
||||
Controleer of het pad naar de PHP-FPM socket klopt. Op sommige Debian-versies kan dit bijvoorbeeld `/run/php/php8.2-fpm.sock` zijn. Gebruik `ls /run/php/` om het juiste bestand te vinden en pas `fastcgi_pass` zo nodig aan.
|
||||
{{< /notice >}}
|
||||
|
||||
3. Activeer de configuratie en controleer NGINX.
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/cloud.voorbeeld.nl /etc/nginx/sites-enabled/cloud.voorbeeld.nl
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
## CertBot voor HTTPS
|
||||
Zorg voor een geldig TLS-certificaat met CertBot.
|
||||
|
||||
1. Installeer CertBot met de NGINX plugin.
|
||||
```bash
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
```
|
||||
|
||||
2. Vraag een certificaat aan voor jouw domein.
|
||||
```bash
|
||||
sudo certbot --nginx
|
||||
```
|
||||
|
||||
Volg de stappen op met logische antwoorden, zoals het opgeven van jouw e-mailadres en de keuze om HTTP automatisch naar HTTPS om te leiden.
|
||||
|
||||
{{< notice "info" "Informatie" >}}
|
||||
Wil je liever je configuratie testen voordat je een certificaat ophaalt, gebruik dan de parameter `--dry-run`.
|
||||
```bash
|
||||
sudo certbot --nginx --dry-run
|
||||
```
|
||||
{{< /notice >}}
|
||||
|
||||
## NextCloud installatie afronden
|
||||
1. Open een browser en ga naar:
|
||||
```text
|
||||
http://cloud.voorbeeld.nl
|
||||
```
|
||||
of, na het instellen van HTTPS:
|
||||
```text
|
||||
https://cloud.voorbeeld.nl
|
||||
```
|
||||
|
||||
2. Volg de stappen van de NextCloud installatie:
|
||||
- Stel een beheerdersgebruikersnaam en wachtwoord in
|
||||
- Vul de databasegegevens in:
|
||||
- Databasegebruiker: `nc_user`
|
||||
- Databasewachtwoord: `sterk-db-wachtwoord`
|
||||
- Database: `nextcloud`
|
||||
- Host: `localhost`
|
||||
|
||||
{{< notice "info" "Informatie" >}}
|
||||
Na afronden keert NextCloud terug naar de login-pagina en kun je inloggen met het beheerdersaccount.
|
||||
{{< /notice >}}
|
||||
Reference in New Issue
Block a user