---
title: "NextCloud (Apache)"
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 _zonder_ Docker, rechtstreeks op een Debian server met Apache als webserver.

{{< notice "info" "Informatie" >}}
Deze handleiding gaat uit van een Debian server met een basis Apache installatie zoals beschreven in het bovenliggende artikel **Apache**.
{{< /notice >}}

## Benodigdheden
- Een server met een Debian Linux installatie
- Een domeinnaam
- DNS ingesteld naar het IP-adres van de server
- Een werkende webserver (Apache) 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 Apache, PHP, de benodigde modules en MariaDB.
```bash
sudo apt install apache2 php libapache2-mod-php 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 {} \;
```

## Apache configureren voor NextCloud
We maken een aparte site-configuratie aan voor `cloud.voorbeeld.nl`.

1. Maak een nieuw configuratiebestand.
```bash
sudo nano /etc/apache2/sites-available/cloud.voorbeeld.nl.conf
```

2. Plaats de volgende configuratie in het bestand:

```apache
<VirtualHost *:80>
    ServerName cloud.voorbeeld.nl
    ServerAlias www.cloud.voorbeeld.nl

    DocumentRoot /var/www/nextcloud

    <Directory /var/www/nextcloud>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>

    # Verhoog maximale uploadgrootte
    LimitRequestBody 536870912

    # Aanbevolen security headers
    Header always set Referrer-Policy "no-referrer"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"

    ErrorLog ${APACHE_LOG_DIR}/cloud.voorbeeld.nl-error.log
    CustomLog ${APACHE_LOG_DIR}/cloud.voorbeeld.nl-access.log combined
</VirtualHost>
```

3. Zorg dat de benodigde modules voor NextCloud actief zijn.
```bash
sudo a2enmod rewrite headers env dir mime
sudo systemctl reload apache2
```

4. Activeer de site en controleer Apache.
```bash
sudo a2ensite cloud.voorbeeld.nl.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```

## CertBot voor HTTPS
Zorg voor een geldig TLS-certificaat met CertBot.

1. Installeer CertBot met de Apache plugin.
```bash
sudo apt install certbot python3-certbot-apache
```

2. Vraag een certificaat aan voor jouw domein.
```bash
sudo certbot --apache
```

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 --apache --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 >}}