Nextcloud installeren met Apache en Let’s Encrypt SSL op Ubuntu 22.04 LTS

Nextcloud is een gratis en open-source oplossing voor het delen en synchroniseren van bestanden die je helpt je persoonlijke documenten, bestanden, foto’s, en andere op een centrale plaats op te slaan. Het lijkt erg op andere cloud opslag oplossingen zoals Dropbox, Google Drive, iCloud, enz. Je zou op NextCloud moeten overstappen als je je zorgen maakt over privacy, want je kunt Nextcloud op je eigen server installeren. Je kunt bestanden en andere docs naar je Nextcloud server uploaden en ze dan allemaal synchroniseren met je desktop pc, laptop, of smartphone.

In deze zelfstudie laten we je zien hoe je Nextcloud op Ubuntu 22.04 server kunt installeren.

Vereisten

  • Een server met Ubuntu 22.04.
  • Een geldige domeinnaam die naar het server IP wijst.
  • Een root wachtwoord is op je server ingesteld.

Installeer Apache, PHP, en MariaDB

Alvorens te beginnen moet de LAMP stack op je server geïnstalleerd zijn. Als die niet geïnstalleerd is, kun je hem installeren met het volgende commando:

apt install apache2 mariadb-server php php-cli php-fpm php-json php-intl php-imagick php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath apache2 libapache2-mod-php -y

Nadat je alle pakketten geïnstalleerd hebt, bewerk je het PHP configuratiebestand en verander je enkele standaard instellingen:

nano /etc/php/8.1/apache2/php.ini

Verander de volgende regels:

date.timezone = UTC
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 300

Sla het bestand op en sluit het af, herstart dan de Apache dienst om de veranderingen toe te passen:

systemctl restart apache2

Maak een Database voor Nextcloud

Nextcloud gebruikt een MariaDB database als database backend, dus je zult een database en gebruiker in MariaDB moeten aanmaken.

Maak eerst verbinding met de MariaDB shell met het volgende commando:

mysql

Zodra je met de MariaDB verbonden bent, maak je een databank en een gebruiker met het volgende commando:

CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' identified by 'password';

Geef vervolgens alle privileges aan de Nextcloud database met het volgende commando:

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';

Spoel vervolgens de privileges door en verlaat de MariaDB met het volgende commando:

FLUSH PRIVILEGES;
QUIT;

Download Nextcloud

Op het moment van schrijven van dit artikel is de nieuwste versie van Nextcloud 24.0.1. Je kunt het downloaden met het volgende commando:

wget https://download.nextcloud.com/server/releases/nextcloud-24.0.1.zip

Als de download voltooid is, pak je het gedownloade bestand uit met het volgende commando:

unzip nextcloud-24.0.1.zip

Verplaats vervolgens de uitgepakte directory naar de Apache web root met het volgende commando:

mv nextcloud /var/www/html/

Verander vervolgens het eigendom en de toestemming van de Nextcloud directory met het volgende commando:

chown -R www-data:www-data /var/www/html/nextcloud
chmod -R 775 /var/www/html/nextcloud

Maak een Apache Virtuele Host voor Nextcloud

Vervolgens moet je een Apache virtual host configuratiebestand voor Nextcloud maken. Je kunt het maken met het volgende commando:

nano /etc/apache2/sites-available/next.conf

Voeg de volgende regels toe:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html/nextcloud
     ServerName next.example.com
     ErrorLog /var/log/apache2/nextcloud-error.log
     CustomLog /var/log/apache2/nextcloud-access.log combined
 
    <Directory /var/www/html/nextcloud>
	Options +FollowSymlinks
	AllowOverride All
        Require all granted
 	SetEnv HOME /var/www/html/nextcloud
 	SetEnv HTTP_HOME /var/www/html/nextcloud
 	<IfModule mod_dav.c>
  	  Dav off
        </IfModule>
    </Directory>
</VirtualHost>

Bewaar en sluit het bestand en activeer dan de Apache virtuele host en andere vereiste Apache modules met het volgende commando:

a2ensite next
a2enmod rewrite dir mime env headers

Herstart vervolgens de Apache dienst om de veranderingen toe te passen:

systemctl restart apache2

Je kunt ook de status van de Apache controleren met het volgende commando:

systemctl status apache2

Je krijgt de Apache status in de volgende uitvoer:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-06-17 15:04:27 UTC; 4s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 16746 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 16750 (apache2)
      Tasks: 6 (limit: 2292)
     Memory: 14.7M
        CPU: 98ms
     CGroup: /system.slice/apache2.service
             ??16750 /usr/sbin/apache2 -k start
             ??16751 /usr/sbin/apache2 -k start
             ??16752 /usr/sbin/apache2 -k start
             ??16753 /usr/sbin/apache2 -k start
             ??16754 /usr/sbin/apache2 -k start
             ??16755 /usr/sbin/apache2 -k start

Jun 17 15:04:27 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

Toegang tot Nextcloud Web Interface

Open nu je webbrowser en ga naar de Nextcloud web UI met de URL http://next.example.com. Je zou het volgende scherm moeten zien:

VolgendeCloud Admin Inloggen

Configureer de Nextcloud databank

Definieer je admin gebruikersnaam, wachtwoord, database, en klik op de knop Installeren. Als Nextcloud geïnstalleerd is, zou je het volgende scherm moeten zien:

Aanbevolen NextCloud apps

Klik op de Install recommended apps om alle vereiste applicaties te installeren. Je zou het volgende scherm moeten zien:

Taken na de installatie

Klik op de Alle bestanden. Je zou in het volgende scherm de Nextcloud opslagmanager moeten zien:

NextCloud GUI

Klik op de Je foto’ s. Je zou de Nextcloud foto manager op het volgende scherm moeten zien:

VolgendeCloud foto

Schakel SSL in op Nextcloud

Het is ook aan te raden om SSL in te schakelen op het Nextcloud domein voor veilige communicatie. Installeer eerst het Certbot pakket met het volgende commando:

apt-get install python3-certbot-apache -y

Eenmaal geïnstalleerd, voer je het volgende commando uit om je website met Let’s Encrypt SSL te beveiligen:

certbot --apache -d next.example.com

Je wordt gevraagd je e-mail op te geven en de servicevoorwaarden te accepteren, zoals hieronder:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for next.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/next-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/next-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/next-le-ssl.conf

Kies vervolgens of je HTTP verkeer al dan niet wilt omleiden naar HTTPS zoals hieronder:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Typ 2 en druk op Enter om de Let’s Encrypt SSL voor je website te installeren:

Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/next.conf to ssl vhost in /etc/apache2/sites-available/next-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://next.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=next.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/next.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/next.example.com/privkey.pem
   Your cert will expire on 2022-09-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Conclusie

Gefeliciteerd! Je hebt Nextcloud met Apache en Let’s Encrypt SSL met succes geïnstalleerd op Ubuntu 22.04. Je kunt nu je bestanden, documenten en foto’s uploaden, en ze synchroniseren met je computer, laptop, en mobiele toestellen.