NextCloud (Apache)
ESC

- Snel overzicht
  - Komt u in aanmerking?
  - Wat kost een mantelzorgwoning?
- Zoek uw gemeente
  - Friesland
  - Gelderland
  - Groningen
  - Limburg
  - Noord-Brabant
  - Noord-Holland
  - Overijssel
  - Utrecht
  - Zuid-Holland
  - Drenthe
  - Flevoland
- Vergunning & wetgeving
  - NGINX
    - NextCloud (NGINX)
  - Docker
    - NextCloud (Docker)
  - Apache
    - NextCloud (Apache)
    - WordPress
- Voor bewoners
  - NGINX
    - NextCloud (NGINX)
  - Docker
    - NextCloud (Docker)
  - Apache
    - NextCloud (Apache)
    - WordPress
- Voor mantelzorgers
  - NGINX
    - NextCloud (NGINX)
  - Docker
    - NextCloud (Docker)
  - Apache
    - NextCloud (Apache)
    - WordPress

# NextCloud (Apache)

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.

Informatie

Deze handleiding gaat uit van een Debian server met een basis Apache installatie zoals beschreven in het bovenliggende artikel Apache.

## 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.

    ssh gebruiker@server

2. Werk de pakketbron en geïnstalleerde pakketten bij.

    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.

    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

    sudo mysql_secure_installation

3. Maak een database en gebruiker voor NextCloud.

    sudo mysql

Voer daarna in de MariaDB prompt de volgende opdrachten uit, pas wachtwoord en namen aan:

    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.

    cd /tmp
    curl -LO https://download.nextcloud.com/server/releases/latest.zip
    unzip latest.zip

2. Maak de doelmap aan en kopieer de bestanden.

    sudo mkdir -p /var/www/nextcloud
    sudo rsync -av nextcloud/ /var/www/nextcloud/

3. Stel de juiste eigenaar en rechten in.

    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.

    sudo nano /etc/apache2/sites-available/cloud.voorbeeld.nl.conf

2. Plaats de volgende configuratie in het bestand:

    <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.

    sudo a2enmod rewrite headers env dir mime
    sudo systemctl reload apache2

4. Activeer de site en controleer Apache.

    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.

    sudo apt install certbot python3-certbot-apache

2. Vraag een certificaat aan voor jouw domein.

    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.

Informatie

Wil je liever je configuratie testen voordat je een certificaat ophaalt, gebruik dan de parameter `--dry-run`.

    sudo certbot --apache --dry-run

## NextCloud installatie afronden

1. Open een browser en ga naar:

    http://cloud.voorbeeld.nl

of, na het instellen van HTTPS:

    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`

Informatie

Na afronden keert NextCloud terug naar de login-pagina en kun je inloggen met het beheerdersaccount.

Deze website gebruikt uitsluitend noodzakelijke cookies en vervallen 2 dagen na laatste bezoek.