Nextcloud installeren op Rocky Linux

Nextcloud is gratis en open-source software waarmee je diensten voor het hosten van bestanden kunt maken zoals Dropbox, Google Drive, of Mega.nz. Het is gemaakt door de oorspronkelijke owncloud ontwikkelaar Frank Karlitschek. In 2016 forkt hij het Owncloud project en maakt een nieuw project met de naam“Nextcloud“.

Tegen die tijd groeit het Nextcloud project snel en wordt het meer dan file hosting software. Met de ondersteuning van een heleboel plugins wordt Nextcloud zo’n Collaboration software. Je kunt plugins installeren voor projectbeheer, videoconferencing, collaboratief bewerken, notities maken, e-mail programma, enz.

In deze gids leer je hoe je Nextcloud kunt installeren op de Rocky Linux 8.4. Je zult Nextcloud installeren onder de LAMP Stack (Linux, Apache2/httpd, MySQL/MariaDB, en PHP).

Vereisten

  • Een Rocky Linux server. Zorg ervoor dat alle pakketten bijgewerkt zijn tot de laatste versie.
  • Een gebruiker met root rechten. Deze gebruiker krijgt de root voorrechten via het sudo commando.

Installeren van Apache/Httpd Web Server

In het begin installeer je de Apache of httpd webserver op de Rocky Linux server.

1. Voer het onderstaande dnf commando uit om de httpd webserver te installeren.

sudo dnf install httpd

Typ“y” en druk op“Enter” om te bevestigen en de httpd pakketten te installeren.

Installeer Apache/Httpd webserver

2. Als de installatie voltooid is, schakel dan de httpd dienst in en start hem met het volgende commando.

sudo systemctl enable httpd
sudo systemctl start httpd

Het“systemctl enable” commando zorgt ervoor dat de dienst bij elke boot start.

3. Voer daarna het onderstaande commando uit om de httpd dienst te verifiëren.

sudo systemctl status httpd

En je krijgt een soortgelijk resultaat als hieronder.

Apache webserver dienst status

Zoals op de bovenste schermafbeelding te zien is, is de httpd actief en draait.

PHP installeren op Rocky Linux

Vooralsnog heeft Nextcloud PHP 7.4 of hoger nodig voor de installatie. Nu ga je PHP 7.4 installeren uit de remi repository.

1. Voer het volgende commando uit om epel en remi Repository toe te voegen

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Typ“y” en druk op“Enter” om de epel en remi repository toe te voegen.

Als de installatie voltooid is, controleer je de epel en remi repository met het volgende commando.

sudo dnf repolist

Je ziet nu de epel en remi repository in de repository lijst.

EPEL en REMI Repository controleren

2. Reset vervolgens de standaard repository module PHP. Schakel dan de module voor PHP 7.4 in uit het remi repository.

Voer het volgende commando uit om de standaard repository voor de php module te resetten.

sudo dnf module reset php

Typ daarbij“y” en druk op“Enter” om de gpg sleutel remi repository toe te voegen.

Voeg GPG Sleutel remi-bewaarplaats toe

Voer daarna het onderstaande commando uit om de php module vanuit de remi repository in te schakelen.

sudo dnf module enable php:remi-7.4

Typ“y” om te bevestigen en druk op“Enter” om verder te gaan. Nu ben je klaar om PHP en alle extensies voor de WordPress installatie te installeren.

Schakel remi repository in voor PHP 7.4

3. Voer het volgende commando uit om php te installeren met enkele noodzakelijke uitbreidingen.

sudo dnf install php php-ctype php-curl php-gd php-iconv php-json php-libxml php-mbstring php-openssl php-posix php-session php-xml php-zip php-zlib php-pdo php-mysqlnd php-intl php-bcmath php-gmp php-imagick php-apcu

4. Nadat de PHP installatie voltooid is, bewerk je de configuratie“php.ini” met nano editor.

nano /etc/php.ini

Verander de standaardwaarde met de onderstaande configuratie.

file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam

Druk op“Ctrl+x” en typ“Y” om de configuratie op te slaan en af te sluiten.

De belangrijke configuratie moet je weten:

  • Voor Nextcloud productie heb je de“memory_limit” meer dan 512MB nodig.
  • Met de optie“upload_max_filesize” kun je de maximale grootte instellen voor het uploaden naar je Nextcloud server.
  • De optie“post_max_size” moet hoger zijn dande optie “upload_max_filesize“.
  • De optie“date.timezone” moet overeenkomen met de systeem lokale tijd“/etc/localtime“.
  • Verhoog de“max_execution_time” afhankelijk van de belasting van je server.

5. Verander vervolgens de werkdirectory in“/etc/php.d/” en bewerk de configuratie“10-opcache.ini” met nano editor.

cd /etc/php.d/
nano 10-opcache.ini

Voeg de volgende configuratie toe om de PHP opecache plugin in te schakelen.

opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Druk op de“Ctrl+x” toets en typ“Y” om de configuratie op te slaan en af te sluiten.

6. Om een nieuwe PHP configuratie toe te passen, start je de httpd dienst opnieuw met het volgende commando.

sudo systemctl restart httpd

Installeren en instellen van MariaDB

Voor dit stadium installeer je de mariadb databaseserver, beveilig je de inzet van mariadb, en maak je een nieuwe databank en gebruiker voor Nextcloud.

1. Om de mariadb databaseserver te installeren, voer je het onderstaande commando uit.

sudo dnf install mariadb mariadb-server

Wacht op de installatie van mariadb.

Installeer MariaDB Database Server

2. Als de installatie voltooid is, schakel je de mariadb dienst in en start je hem met het volgende commando.

sudo systemctl enable mariadb
sudo systemctl start mariadb

4. De mariadb zal actief zijn en draaien, voer het volgende commando uit om de mariadb dienst te verifiëren.

sudo systemctl status mariadb

Als de mariadb dienst draait, krijg je soortgelijke uitvoer als hieronder.

Controle van de status van de mariadb dienst

5. Vervolgens moet je je mariadb inzet beveiligen door het root wachtwoord voor mariadb in te stellen en enkele standaard instellingen te verwijderen. Om dat te doen kun je het command-line gereedschap‘mysql_secure_installation‘ gebruiken, dat bij de standaard mariadb installatie zit.

Voer het onderstaande“mysql_secure_installation” commando uit.

mysql_secure_installation

Bij het eerste wordt je gevraagd het mariadb root wachtwoord in te stellen.

Typ je sterke mariadb root wachtwoord en herhaal, druk dan op“Enter” om verder te gaan.

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Typ nu“Y” en druk op“Enter” om de standaard anonieme gebruiker van de mariadb server te verwijderen.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Schakel daarna de remote login voor de standaard gebruiker‘root‘ uit. Typ“Y” en druk op“Enter” om verder te gaan.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

Typ weer“Y” om de standaard database“test” te verwijderen en druk op“Enter“.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

En als laatste type je weer“Y” om alle tabellen opnieuw te laden en een nieuwe configuratie toe te passen.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Nu is het proces voltooid en zie je de volgende uitvoer.

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Database aanmaken voor Nextcloud

1. meld je aan in de mariadb shell met het onderstaande mysql commando.

mysql -u root -p

2. Voer nu de volgende mysql query uit om een nieuwe database te maken “nextcloud_db”.

CREATE DATABASE netxcloud_db;

3. Voer de volgende query uit om een nieuwe database gebruiker“nextuser” aan te maken. Verander het“strongpassword” in je sterke wachtwoord.

CREATE USER nextuser@localhost IDENTIFIED BY 'StrongPassword';

4. Geef de gebruiker“nextuser” toegang tot en schrijf in de“nextcloud_db” met de volgende query.

GRANT ALL PRIVILEGES ON netxcloud_db.* TO nextuser@localhost;

5. Herlaad nu alle tabellen privileges om de nieuwe configuratie van de databank toe te passen.

FLUSH PRIVILEGES;

Daarna kun je“quit” typen en op“Enter” drukken om de mariadb shell te verlaten.

Maak een nieuwe database voor Nextcloud

Nextcloud broncode downloaden

1. Verander de werkdirectory in“/var/www” en download de nieuwste versie van de Nextcloud broncode met het wget commando zoals hieronder.

cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-22.1.0.zip

2. Pak de Nextcloud broncode“nextcloud-xx.zip” uit en je krijgt een nieuwe directory“nextcloud“, verander dan de eigenaar van de“nextcloud” directory in“apache” gebruiker.

unzip nextcloud-22.1.0.zip
chown -R apache:apache nextcloud

Nu ben je klaar om de httpd virtuele host voor Nextcloud in te stellen.

Schakel Apache/Httpd mod_ssl module in

Voor deze tutorial ga je Nextcloud installeren en beveiligen met de SSL van Letsencrypt. Je moet dus de mod_ssl inschakelen voor de httpd server op de Rocky Linux.

1. Installeer het pakket“mod_ssl” met het onderstaande dnf commando.

sudo dnf install mod_ssl mod_http2

2. genereer daarna de standaard SSL voor localhost met het onderstaande openssl commando. Maar als je al certificaten“/etc/pki/tls/private/localhost.key” en“/etc/pki/tls/certs/localhost.crt” hebt, kun je dit stadium overslaan.

openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt

Je kunt gewoon op enter drukken voor alle vragen, want dit certificaat zal alleen gebruikt worden voor localhost, niet voor de WordPress domeinnaam.

Genereer SSL voor Localhost Rocky Linux

3. Voer nu het volgende commando uit om te controleren of mod_ssl beschikbaar is op de httpd webserver.

apachectl -M | grep ssl

Als je de uitvoer hebt gekregen zoals“ssl“, dan is de mod_ssl ingeschakeld. Anders krijg je blanco uitvoer.

Schakel Mod_ssl en mod_http2 Rocky Linux in

SSL genereren van Letsencrypt met Certbot

In dit stadium installeer je het cerbot gereedschap en genereer je de SSL certificaten voor de WordPress installatie. Je zult SSL Letsencrypts genereren met de webroot plugin.

1. Voer het volgende commando uit om het certbot gereedschap te installeren voor het genereren van SSL Letsencrypt.

sudo dnf install certbot

Wacht op het installatieproces.

2. Als de installatie voltooid is, maak je met de volgende commando’s een nieuwe directory aan voor de toestemming voor letsencrypt.

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp apache /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

3. Verander vervolgens de werkdirectory in de“/etc/httpd/conf.d/” en maak een nieuwe configuratie“well-known.conf” met nano editor.

cd /etc/httpd/conf.d/
nano well-known.conf

Voeg de volgende configuraties toe.

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Druk op“Ctrl+x” en typ“y” om op te slaan en af te sluiten.

4. Voer nu de volgende commando’s uit om de httpd configuratie te verifiëren en start de httpd dienst opnieuw.

apachectl configtest
sudo systemctl restart httpd

Als je geen foutmelding hebt, ben je klaar om SSL Letsencrypt te genereren met de webroot plugin.

Instellen van apache httpd voor letsencrypt webroot autorisatie

5. Voordat je SSL Letsencrypt genereert, moet je controleren of je domeinnaam is omgezet naar het IP adres van de server. Daarna kun je SSL Letsencrypt genereren met de webroot plugin door het onderstaande certbot commando uit te voeren. Verander ook het emailadres en de domeinnaam in je eigen.

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d files.domain.com -d 

Als het proces voltooid is, zijn je SSL certificaten beschikbaar in de map“/etc/letsencrypt/live/files.domain.com/“.

Opzetten van Apache Virtual Host voor Nextcloud

In deze stap voeg je een nieuwe apache/httpd virtuele host configuratie voor Nextcloud toe.

1. Verander de werkdirectory in“/etc/httpd/conf.d” en maak met nano editor een nieuwe configuratie“nextcloud.conf“.

cd /etc/httpd/conf.d/
nano nextcloud.conf

Verander de details domeinnaam en SSL pad directory in je eigen en plak de configuratie in het“nextcloud.conf” bestand.

<VirtualHost *:80>
    ServerName files.domain.com
    ServerAlias www.files.domain.com

    # auto redirect HTTP to HTTPS
    Redirect permanent / https://files.domain.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName files.domain.com
    ServerAlias www.files.domain.com
 
    DocumentRoot /var/www/nextcloud/

    Protocols h2 http/1.1

    # auto redirect www to non-www
    <If "%{HTTP_HOST} == 'www.files.domain.com'">
        Redirect permanent / https://files.domain.com/
    </If>

    # log files
    ErrorLog /var/log/httpd/files.domain.com-error.log
    CustomLog /var/log/httpd/files.domain.com-access.log combined

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/files.domain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/files.domain.com/privkey.pem

    # HSTS
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

    <Directory /var/www/nextcloud/>
        Options +FollowSymlinks
        AllowOverride All

        <IfModule mod_dav.c>
            Dav off
        </IfModule>

        SetEnv HOME /var/www/nextcloud
        SetEnv HTTP_HOME /var/www/nextcloud
    </Directory>
</VirtualHost>

Druk op“Ctrl+x” en typ“Y” om de configuratie op te slaan en af te sluiten.

3. Voer daarna het volgende commando uit om de httpd configuratie te verifiëren.

sudo apachectl configtest

Als je geen foutmelding kreeg, herstart dan de httpd dienst met het onderstaande commando.

sudo systemctl restart httpd

Nu ben je klaar voor de Nextcloud installatie via de webbrowser.

Opzetten van apache/httpd virtuele host voor Nextcloud

Nextcloud installeren

Als alle verwante server configuratie compleet is, kun je je Nextcloud installatie met de webbrowser benaderen.

1. Open je webbrowser en typ het URL adres van je Nextcloud installatie.

http://files.domain.com

Nu word je doorgestuurd naar de beveiligde HTTPS verbinding en je krijgt de pagina als volgt.

Nextcloud installeren

  • Typ bij het onderdeel “Maak een admin account aan” een nieuwe gebruikersnaam en wachtwoord voor je admin.
  • Laat voor het onderdeel “Gegevensmap” het nu als standaard staan.
  • Kies in de sectie “Configureer de databank” voor “MySQL/MariaDB” en typ de details van de databankconfiguratie
  • Bovendien kun je aanbevolen apps installeren door de optie vakje aan te vinken. Of vink het vakje uit als je dat niet wilt.

Daarna kun je op de knop“Finish setup” klikken.

2. Nadat het installatieproces voltooid is, zie je het standaard Nextcloud dashboard zoals hieronder.

Nextcloud Dashboard

3. Klik nu op het menu“Files” en je ziet de gebruikersdashboard lijst met bestanden en mappen.

Nextcloud gebruikersbestanden dashboard

4. Om op de administratieve pagina te komen, klik je op het gebruikersprofiel bovenaan en kies je“Instellingen“.

Onder het onderdeel“Administratief” kun je de standaard Nextcloud configuratie veranderen.

Nextcloud administratieve instellingen

5. Om nieuwe plugins of apps toe te voegen, klik je op het gebruikersprofiel bovenaan en kies je“Apps“.

Nu krijg je de pagina als volgt.

Nextcloud Apps en plugins installeren

Kies de plugin categorie die bij je past en klik dan op de knop“Download and enable“. Klik daarna op“Enable” om de app of plugin te activeren.

Hieronder zie je de schermafbeelding na het inschakelen van het Nextcloud Breeze Dark thema.

Nextcloud donker thema met Breeze

Nextcloud prestaties afstemmen

Nadat Nextcloud geïnstalleerd is, kun je nog wat stappen verder doen om de Nextcloud prestaties te verhogen door de lokale geheugencache in te schakelen en een cronjob voor Nextcloud zelf in te stellen.

1. Bovenaan bij PHP installatie heb je PHP al ingesteld voor caching. Om caching op Nextcloud in te schakelen, bewerk je de Nextcloud configuratie “config.php”.

Verander de werkdirectory in“/var/www/nextcloud/config” en bewerk de configuratie “config.php” met nano editor.

cd /var/www/nextcloud/config/
nano config.php

Voeg de volgende configuratie toe binnen de‘array ( .. );‘ haakjes zoals hieronder

<?php
$CONFIG = array (
....
....
....
  # Additional configuration
  'memcache.local' => '\OC\Memcache\APCu',
);

Druk nu op de“Ctrl+x” toets en typ“y” om de configuratie op te slaan en af te sluiten.

2. Een Nextcloud systeem moet regelmatig en zonder enige interactie van gebruiker/beheerder enkele achtergrondtaken uitvoeren. Om dat te doen kun je de cronjob gebruiken voor het plannen van Nextcloud taken.

Op Rocky Linux is de standaard httpd gebruiker“apache“. Maak een nieuwe cronjob voor gebruiker“apache” met het onderstaande commando.

crontab -u apache -e

Voeg de volgende configuratie toe.

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

Opmerking over configuratie en afsluiten.

Cronjob configuratie die je moet kennen:

  • Deze cronjob configuratie staat gebruiker“apache” toe om elke 5 minuten het PHP script“/var/www/nextcloud/cron.php” uit te voeren.

Om de cronjob configuratie te controleren kun je het volgende commando uitvoeren.

crontab -u apache -l

Als je configuratie een succes is, krijg je de configuratie bovenaan als uitvoer. Zo niet, dan krijg je een blanco resultaat.

Nextcloud Schakel geheugen Caching in en nd het instellen van Cron

Conclusie

Gefeliciteerd! Je hebt Nextcloud met succes geïnstalleerd op Rocky Linux 8.4. De Nextcloud server draait onder de LAMP Stack met SSL ingeschakeld. Ook draait je Nextcloud installatie met geheugen caching ingeschakeld met PHP APC en opcache uitbreidingen.