Page modifiée le :

Installation de Nextcloud dans une VM sur Freebox delta

Installation de Nextcloud sur une VM Debian bulleye

Informations pour les personnes "tombant" sur cette page

Ce 'tuto' n'a pas été écrit comme un vrai tutoriel pour de nouveaux utilisateurs, mais comme un pense bête perso. Il est plein de raccourcis qui font chacun un chapitre de la doc officielle de Nextcloud, d'Apache ou de MariaDB.

Il a été écrit avec la version 20 de Nextcloud.
En novembre 2021, la version est la 22. La commande wget https://download.nextcloud.com/server/releases/latest-20.zip peut être avantageusement remplacée par wget https://download.nextcloud.com/server/releases/latest-22.zip (et en remplacant 20 par 22 par la suite).

Si vous voulez suivre ce qui suit, prenez le temps de comprendre les commandes et le pourquoi de celles-ci ; si si, ça marchera mieux :) .

Je met Nextcloud dans le répertoire /var/www/nextcloud et les données de Nextcloud dans /var/www/nextcloud-data
C'est mon choix pour laisser /var/www/html/... libre pour laisser la page web d’accueil par défaut d'apache, une page d'accueil personnalisée ou accueillir d'autres sites web

Plus de renseignements se trouvent ici

La doc officielle (en anglais)

Pour terminer, se connecter via un navigateur web à l'adresse de la VM. Utilisez les identifiants du "premier pavé" lors de l'installation.
puis cliquer sur le menu en haut a droite (sur l'initiale de l'utilisateur) --> paramètres
puis dans le menu de gauche --> Vue d'ensemble

Nextcloud va pleurer. Essayez d'autres tutos abscons, des forums et la doc officielle.

Toutes les opérations suivantes sont à effectuer en root. Vous pouvez taper sudo devant toutes les commandes qui suivent ou taper sudo -s pour ouvrir une session en tant que root.

Mise à jour

La mise à jour se fait de façon classique :
freebox@my1:~$ sudo -s
root@my1:/home/freebox# apt update
root@my1:/home/freebox# apt upgrade

Installation des paquets nécessaires

Nous avons besoin d'Apache, de MariaDB, de PHP et des modules pour lier le tout. On ajoute unzip fail2ban certbot dont nous auront besion plus tard.
root@my1:/home/freebox# apt install apache2 libapache2-mod-php php-mbstring php-xml php-zip unzip fail2ban certbot python3-certbot-apache php-gd \
php-curl php7.4-intl php-bcmath php-imagick php-gmp php-apcu mariadb-server php-mysql
Reading package lists... Done
Building dependency tree       
Reading state information... Done
...
0 upgraded, 163 newly installed, 0 to remove and 0 not upgraded.
Need to get 56.3 MB of archives.
After this operation, 292 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...

MariaDB

On suit les recommandations pour sécuriser à l'aide de mysql_secure_installation.
Le but est que seul l’utilisateur root de la VM puisse se connecter localement sans mot de passe en utilisant les "socket unix".
root@my1:/home/freebox# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!
Change the root password? [Y/n] n
 ... skipping.
Remove anonymous users? [Y/n] Y
 ... Success!
Disallow root login remotely? [Y/n] Y
 ... Success!
Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reload privilege tables now? [Y/n] Y
 ... Success!
Cleaning up...
Thanks for using MariaDB!
root@my1:/home/freebox#

Base et utilisateur Nextcloud

Pour que l'installation de Nextcloud puisse créer la base de donnés nécéssaire, On créer une base de données nommée "nextcloud" et un utilisateur "admin" qui aura tout les droits sur la base nextcloud.

Cet utilisateur admin et son mot de passe seront à renseignés plus tard lors de la finalisation de l'installation de Nextcloud comme 'Utilisateur de la base'.
root@my1:/home/freebox# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 51
Server version: 10.5.8-MariaDB-3 Debian buildd-unstable

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE nextcloud;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'super-pwd'; 
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'admin'@'localhost' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> exit
Bye

root@my1:/home/freebox# 

Pour tester l'utilisateur :

root@my1:/home/freebox# mysql -u admin -psuper-pwd
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 74398
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye
root@my1:/home/freebox# 

ATTENTION : c'est -u nom ; -pmot_de_passe sans espace entre -p et mot de passe.

Dans la page d'installation de Nextcloud
utilisateur de la base de données --> admin
mot de passe --> super-pwd

Nextcloud

Le répertoire raçine par défaut d'apache est /var/www/html. Installer Nextcloud dans /var/www.
root@my1:/home/freebox# cd /var/www

root@My1:/var/www# wget https://download.nextcloud.com/server/releases/latest-20.zip
--2020-12-16 10:56:40--  https://download.nextcloud.com/server/releases/latest-20.zip
Resolving download.nextcloud.com (download.nextcloud.com)... 2a01:4f9:2a:3119::181, 95.217.64.181
Connecting to download.nextcloud.com (download.nextcloud.com)|2a01:4f9:2a:3119::181|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 142325595 (136M) [application/zip]
Saving to: ‘latest-20.zip’

latest-20.zip                                              100%[==================================================================>] 135.73M  55.3MB/s    in 2.5s    

2021-01-08 15:13:16 (55.3 MB/s) - ‘latest-20.zip’ saved [142325595/142325595]

root@my1:/var/www# unzip latest-20.zip
...
root@my1:/var/www# 
Pour la sécurité, on créer un répertoire /var/www/nextcloud-data pour les datas de Nextcloud en dehors de /var/www/nextcloud. On change le propriétaire pour www-data (Qui est "l'utilisateur" sous lequel tourne Apache).
root@my1:/var/www# mkdir nextcloud-data
root@my1:/var/www# chown -R www-data:www-data nextcloud nextcloud-data

Fichier de conf d'Apache

Informations pour les personnes "tombant" sur cette page

Si vous n'avez pas de quoi faire pointer un "ServerName" ("my1.ducouet.fr" dans MON cas) vers votre Nextcloud, supprimez le fichier "/etc/apache2/sites-available/000.default.conf".
Le fichier "/etc/apache2/sites-available/010.nextcloud.conf" deviendra le fichier par défaut (puisque le seul).

Doc d'Apache en français.

On crée un fichier "/etc/apache2/sites-available/010.nextcloud.conf" que l'on adapte ! On l'active ainsi que "mod_headers", et on redémarre Apache.

root@my1:/var/www# nano /etc/apache2/sites-available/010.nextcloud.conf
<VirtualHost *:80>
    ServerAdmin bruno@ducouet.fr
    ServerName my1.ducouet.fr
    ServerAlias my1
    DocumentRoot /var/www/nextcloud
</VirtualHost>
root@my1:/var/www# a2enmod headers
Enabling module headers..
To activate the new configuration, you need to run:
  systemctl restart apache2
root@my1:/var/www# a2ensite 010.nextcloud.conf
Enabling site 010.nextcloud.
To activate the new configuration, you need to run:
  systemctl reload apache2
root@my1:/var/www# systemctl reload apache2
root@my1:/var/www# 
On crée un fichier de configuration des modifications pour PHP 99-nextcloud.ini
root@my1:/var/www# nano /etc/php/7.4/apache2/conf.d/99-nextcloud.ini
output_buffering = Off
memory_limit = 1024M
apc.enable_cli = 1
root@my1:/var/www# systemctl reload apache2

Lancer l'installation via navigateur

Fenêtre de configuration

Signification des champs

Créer un compte administrateur:
Indiquer votre futur nom d'utilisateur de Nextcloud ou le nom d'un utilisateur dédié à l'administration ; et le mot de passe qui y sera associé

Stockage & base de données :

Répertoire des données
Chemin absolu du répertoire où seront stockées les données. Si le serveur est dans /var/www/nextcloud, un répertoire exérieur comme /var/www/nextcloud-data peut être un bon choix.
Configurer la base données :
Dans l'ordre, il y a le nom de l'administrateur de la base de données, son mot de passe (Celui que l'on créé avec CREATE USER), le nom de la base de données (nextcloud), l'hôte où se situe la base de données (Ou l'adresse IP 127.0.0.1 s'il y a des erreurs).

Finaliser l'installation

Pour terminer, Nextcloud vous fait des recommandations
(Qui peuvent ne pas être pertinentes pour VOTRE cas).
Cliquez sur le menu en haut à droite sur paramètres :
Menu1
Menu2
Dans le menu de gauche, cliquez sur "Vue d'ensemble".
Quelques pistes se trouvent là.
Servez vous de la doc officielle pour régler les "problèmes" trouvés.
En cas d'accès depuis l'extérieur, Jeter un coup d'oeil à Let's encrypt, puis vérifiez le tout via le scan de sécurité.
Jusqu’à obtenir une grande satisfaction.
Résultat

Il vous reste à cliquer sur le lien notre scan de sécurité pour obtenir le grall :

Résultat sécurité

Exemple de mise à jour

freebox@my1:~$ sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
Check indices of the oc_jobs table.
Check indices of the oc_direct_edit table.
Check indices of the oc_mounts table.
Adding mounts_class_index index to the oc_mounts table, this can take some time...
oc_mounts table updated successfully.
freebox@my1:~$ sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Maintenance mode enabled
freebox@my1:~$ sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Nextcloud is in maintenance mode, hence the database isn't accessible.
Cannot perform any command except 'maintenance:mode --off'

Following columns will be updated:

* files_trash.auto_id
* file_metadata.id

This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] y
freebox@my1:~$ sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Maintenance mode disabled
freebox@my1:~$