LINUX:NextCloud-Installation
But
La première étape consiste en l'installation du logiciel.
Prérequis
Ce logiciel nécessite:
- un serveur Web Apache
- un gestionnaire de base de données de type MySQL tel MariaDB
- un interpréteur PHP, la dernière version 8.3 est compatible
Dans mon cas, ces produits sont tous sur une même machine Linux
Ajout du paquet
NextCloud est inclus dans la distribution de Fedora 41. Nous allons l'installer avec la commande suivante sous Linux:
dnf install nextcloud
De nombreuses dépendances sont ajoutées.
Organisation des répertoires principaux
Les répertoires ajoutés sont les suivants:
- /usr/share/nextcloud : le coeur du logiciel
- /etc/nextcloud : fichier de configuration de NextCloud dont le fichier "config.php" contiendra les paramètres de configuration générale
- /etc/httpd/conf.d : fichiers de configuration pour Apache en relation avec NextCloud
- /var/lib/nextcloud : il regroupera des modules activés (sous-répertoire "apps") et les données des utilisateurs (sous-répertoire "data")
Nous désirons mettre les données des utilisateurs sur un disque plus volumineux dédié à Apache car ces fichiers sont destinés à être nombreux.
Nous le nommerons "/web/nextcloud"; nous y ajouterons le sous-répertoire "data". Il est impératif de ne pas déplacer le sous-répertoire "/var/lib/nextclous/apps" au risque que le logiciel présente de nombreux dysfonctionnements.
Droits
Les droits des répertoires et fichiers installés via la distribution sont gérés par ce derniers.
Par contre, le répertoire ajouté par nos soins doit appartenir à l'utilisateur "apache" sous lequel s'exécute le service 'httpd.service":
chown -R apache:apache /web/nextcloud
On y affecte des accès classiques avec les accès totaux:
chmod -R 740 /web/nextcloud find /web/nextcloud -type f -print0 | xargs -0 chmod 640
Apache
Les fichiers de configuration pour Apache, installés par la distribution, doivent être modifiés ou adaptés.
Voici la liste:
- nextcloud-auth-local.inc : fichier définissant l'accès à seulement la machine locale
- nextcloud-auth-none.inc : fichier interdisant l'accès à tous
- nextcloud-auth-any.inc : fichier permettant l'accès à tous
- nextcloud-access.conf.avail : fichier donnant l'accès selon un des trois précédents, par défaut à "nextcloud-auth-any.inc"
- nextcloud-defaults.inc : fichier de configuration finie à ne pas toucher
- nextcloud.conf : fichier de configuration principal que l'on modifiera.
A la base, seule la machine locale peut y accéder.
Par la suite, habituellement après la configuration (article suivant sur la Configuration), on crée un lien avec le fichier "nextcloud-access.conf.avail" qui libère les accès à tout le monde:
ln -s /etc/httpd/conf.d/nextcloud-access.conf.avail /etc/httpd/conf.d/z-nextcloud-access.conf
Comme la machine locale n'a pas d'interface graphique, nous configurerons le logiciel à partir d'une machine de notre réseau local (adresse IP, par exemple: 192.168.1.2) grâce à un explorateur internet tel Firefox. Nous devons donc lui donner accès momentanément. On ajoute sous la ligne 7 ("Require local") la ligne suivante du fichier "nextcloud-auth-local.inc":
Require ip 192.168.1.2
Après la configuration, on pourra l'éliminer.
Si on veut restreindre l'accès à seul notre réseau local, il n'est pas nécessaire de créer le lien ("ln -s ...") mais dans le fichier "nextcloud-auth-local.inc", on doit ajouter la ligne suivante en 8ème position:
Require ip 192.168.1
Si notre réseau local est "192.168.1".
Il faut maintenant adapter le fichier "nextcloud.conf". Dans l'aperçu qui suit, on ne reprendra pas les commentaires pour l'alléger:
Alias /nextcloud/apps-appstore /var/lib/nextcloud/apps Alias /nextcloud/assets /var/lib/nextcloud/assets Alias /nextcloud /usr/share/nextcloud Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav/ Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav/ Redirect 301 /.well-known/webdav /nextcloud/remote.php/dav/ Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo <Directory /usr/share/nextcloud/> Include conf.d/nextcloud-auth-local.inc Include conf.d/nextcloud-defaults.inc <FilesMatch ^(\.|autotest|occ|issue|indie|db_|console).*> Include conf.d/nextcloud-auth-none.inc </FilesMatch> IncludeOptional conf.d/php8.cfg </Directory> <Directory /var/lib/nextcloud/apps/> Include conf.d/nextcloud-auth-local.inc Include conf.d/nextcloud-defaults.inc IncludeOptional conf.d/php8.cfg </Directory> <Directory /var/lib/nextcloud/assets/> Include conf.d/nextcloud-auth-local.inc Include conf.d/nextcloud-defaults.inc IncludeOptional conf.d/php8.cfg </Directory> <Directory /web/nextcloud/data/> Include conf.d/nextcloud-auth-none.inc </Directory> <DirectoryMatch /usr/share/nextcloud/(3rdparty|lib|config|templates)/> Include conf.d/nextcloud-auth-none.inc </DirectoryMatch>
Les changements sont repris en gras. Vers la fin du fichier, on remplace l'espace "/var/lib/nextcloud/data/" par "/web/nextcloud/data/" comme désiré précédemment.
Comme par défaut, Fedora 41 vient avec la version 8.3 de PHP, dans le cadre d'une installation présentant plusieurs versionEt c de PHP, on doit spécifier la version à utiliser pour de logiciel. Voyez l'article sur Coexistence de plusieurs versions de PHP. D'où les lignes:
IncludeOptional conf.d/php8.cfg
On relance le service Apache pour prendre en compte cet ajout:
systemctl restart httpd.service
MariaDB
Avant tout début de configuration, il est plus aisé que la base de données MariaDB (MySQL) comprenne un schéma vide qui va accueillir vos données.
Nous avons nommé ce schéma "dbnextcloud".
Voici le script SQL qui permet de le créer à vide; on nomme ce script: "schema.sql":
DROP SCHEMA IF EXISTS dbnextcloud ; CREATE SCHEMA dbnextcloud ;
On l'exécute via la commande:
mysql --user=root --password=<MOT_DE_PASSE_DE_ROOT> < ./schema.sql
avec un nom d'utilisateur de la base de donnés qui a les droits administrateur.
Il nous faut en outre, créer un utilisateur dans cette base de données qui a tous les droits sur ce schéma nouvellement créé.
On lui a donné le nom "usernextcloud". C'est lui que le logiciel utilisera pour accéder à nos données.
Voici le script SQL qui permet de le créer et de lui attribuer des droits nécessaires; on nomme ce script: "user.sql":
create user 'usernextcloud'@'localhost' identified by '<MOT_DE_PASSE_NEXTCLOUD>' ; grant all privileges on dbnextcloud.* to 'usernextcloud'@'localhost';
Vous y remplacez le mot de passe "<MOT_DE_PASSE_NEXTCLOUD>" par celui désiré.
On l'exécute via la commande:
mysql --user=root --password=<MOT_DE_PASSE_DE_ROOT> < ./user.sql
avec un nom d'utilisateur de la base de donnés qui a les droits administrateur.