--- categories: web webapp saas title: Howto Nextcloud ... * [Documentation](https://docs.nextcloud.com/) * [Notes de publication de versions](https://nextcloud.com/changelog/) * [Dates de fin de vie des versions](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule) [Nextcloud](https://nextcloud.com/) est un logiciel libre qui permet de stocker des fichiers sur un serveur distant, communément appelé un « cloud ». Ses fonctionnalités étendues et les nombreux plugins (nommés « Apps ») disponibles font de Nextcloud une plateforme collaborative modulaire et une alternative libre face aux logiciels privateurs comme ~~Google Docs~~, ~~Google Drive~~ ou ~~Dropbox~~. On y trouve, entre autres, des fonctionnalités comme le partage de fichiers, l'édition collaborative, la gestion de droits, un calendrier, la gestion des contacts... ## Installation [Documentation officielle d'installation](https://docs.nextcloud.com/server/latest/admin_manual/installation/) Nous préconisons d'utiliser Nextcloud sur une machine en GNU/Linux Debian 11 (bullseye) avec [Apache](HowtoApache) + PHP, [MariaDB](HowtoMySQL) et [Redis](HowtoRedis). Note : Certaines extensions PHP sont nécessaires pour le bon fonctionnement de Nextcloud. On peut les installer avec la commande suivante : ~~~ # apt install bzip2 php-gd php-json php-xml php-mbstring php-zip php-curl php-bz2 php-intl php-gmp php-apcu php-redis php-bcmath php-imagick ~~~ On peut ensuite télécharger une archive sur . Pour l'installation, nous utilisons l'utilitaire en ligne de commande `occ` fourni par Nextcloud. Mais il est aussi possible de passer par l'interface web pour procéder à l'installation et la configuration de l'instance Pour l'utiliser il faut se déplacer dans le répertoire racine de Nextcloud puis : ~~~ $ php occ -V Nextcloud 24.0.3 $ php ./occ status --output json | grep -v 'Nextcloud is not installed'" $ php ./occ maintenance:install --database mysql --database-name db_foo --database-user foo --database-pass PASSWORD --admin-user admin --admin-pass PASSWORD --data-dir /home/foo/data" $ php ./occ config:system:set trusted_domains nextcloud.example.com ~~~ On configure ensuite Apache, PHP-FPM, MariaDB et Redis. ### Apache Pour [Apache-ITK](HowtoApache) on désactive la gestion des droits pour faciliter les mises à jour : ~~~ AssignUserID example example ~~~ On peut utiliser le vhost suivant : ~~~ ServerName nextcloud.example.org # SSL SSLEngine on SSLCertificateFile /etc/letsencrypt/live/foo/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/foo/privkey.pem # HSTS # Header always set Strict-Transport-Security "max-age=15552000" DocumentRoot /home/foo/nextcloud/ Require all granted AllowOverride All Options FollowSymLinks MultiViews Dav off # SSL Redirect RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteRule ^ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] # ITK AssignUserID foo foo # LOG CustomLog /var/log/apache2/access.log vhost_combined ErrorLog /var/log/apache2/error.log # PHP php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f foo" php_admin_value open_basedir "/usr/share/php:/home/foo:/tmp" ~~~ ### Redis Il ne faut pas oublier de [configurer la politique de gestion de la mémoire de Redis](/HowtoRedis#politique-sur-la-m%C3%A9moire) (directives `maxmemory` et `maxmemory-policy`), sinon, par défaut, Redis peut croître jusqu'à occuper toute la mémoire. Pour que Nextcloud puisse accéder à Redis, on peut ajouter la configurations suivante dans `/config/config.php` : ``` $CONFIG = array ( (...) 'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), ); ``` ## Mise-à-jour Dans Nextcloud, les mises-à-jour se font de version en version. S'il y a plusieurs versions de retard, il faut le mettre à jour autant de fois qu'il y a de versions de retard. Les mises-à-jour peuvent être faites via l'interface web, ou en ligne de commande. ### Via l'interface web Pour cela : cliquez sur le bouton rond en haut à droite > Paramètres > Vue d'ensemble > Ouvrir le système de mise-à-jour. Puis suivez les instructions. Attention, il ne faut pas fermer la page pendant la mise-à-jour, sinon vous resterez bloqué en mode maintenance. A la fin des opérations de mise-à-jour, l'interface propose de quitter le mode maintenance. En cas d'oubli, votre interface web sera [bloquée en mode maintenance](HowtoNextcloud#interface-web-bloquee-en-mode-maintenance). ### Via la ligne de commande L'opération de mise à jour est réalisable en CLI via un outil dédié. Il va procéder aux mêmes opérations que via l'interface web. Il faut appeller avec php le script `updater/updater.phar` à la racine du dossier de Nextcloud et se laisser guider par l'opération. En fin de téléchargement de la nouvelle version, l'updater proposera d'exécuter des commandes de maintenances, puis de lever le mode maintenance. ~~~ $ php updater/updater.phar Nextcloud Updater - version: v24.0.0beta3-1-g67bf13b dirty Current version is 24.0.3. Update to Nextcloud 24.0.5 available. (channel: "stable") Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-24.0.5.zip Open changelog ↗ Steps that will be executed: [ ] Check for expected files [ ] Check for write permissions [ ] Create backup [ ] Downloading [ ] Verify integrity [ ] Extracting [ ] Enable maintenance mode [ ] Replace entry points [ ] Delete old files [ ] Move new files in place [ ] Done Start update? [y/N] ~~~ ## MÀJ / Mise-à-jour spécifiques : ### Mise à jour de Nextcloud 25 à 26 La mise à jour de nextcloud 25 à 26 est un peu difficile sur Debian : Nextcloud 26 ne supporte pas PHP 7.4 (la version par défaut sur Debian Bullseye (11)). On va donc devoir passer à PHP 8.1 ou 8.2. Aussi, lorsqu'il se trouve dans un conteneur, PHP 8 semble plus restrictif sur les manières de se connecter à MySQL, ce qui amène à une erreur 500. Voici la procédure pour mettre à jour vers 26 : * Vérifier que la fonction PHP `system()` n'est pas dans le champ `disable_functions` de la configuration du PHP CLI utilisée `/etc/php//cli/` * Vérifier [comment Nextcloud se connecte à MySQL](https://wiki.evolix.org/HowtoNextCloud#erreur-de-connexion-%C3%A0-mysql) * **IMPORTANT** : Mettre à jour Nextcloud à la dernière version mineure de 25.x en CLI `$ php /updater/updater.phar` (avec l'utilisateur Nextcloud) * Faire l'[upgrade de Debian](/HowtoDebian/MigrationBullseyeBookworm) Bullseye vers Bookworm (11 -> 12) , ou la montée de version PHP de 7.4 vers 8.1 ou 8.2 * Mettre à jour Nextcloud 25 vers 26 `$ php /updater/updater.phar` (avec l'utilisateur Nextcloud) * Désactiver le mode maintenance. La doc officielle : https://docs.nextcloud.com/server/25/admin_manual/maintenance/upgrade.html?highlight=upgrade ### Mise à jour de Nextcloud 22 à 23 La màj de Nextcloud 22 à 23 pu échouer avec l'erreur suivante : ~~~ Updating database schema Doctrine\DBAL\Schema\SchemaException: The table with name 'COMPTE.oc_authorized_groups' already exists. Update failed ~~~ COMPTE correspond ici au compte client. La solution est de renommer la table en question après avoir confirmé qu'elle est bien vide : ~~~ $ mysql ~~~ Dans l'invite de mysql/mariadb : ~~~ SELECT * FROM COMPTE.oc_authorized_groups; Empty set (0.001 sec) RENAME TABLE COMPTE.oc_authorized_groups TO COMPTE.oc_authorized_groups_old; Query OK, 0 rows affected (0.007 sec) ~~~ Une fois sorti de mysql/mariadb (avec la commande `exit`), il suffit de relancer le script `updater/updater.phar`. ## Administration en ligne de commande (CLI) Documentation officielle : NextCloud fournit une interface d'administration en CLI assez riche appelée `occ`. C'est un script PHP. Pour l'utiliser, il faut l'exécuter en tant que l'utilisateur propriétaire de l'application Nextcloud, et se placer dans le répertoire d'installation de Nextcloud. La syntaxe générale est la suivante : ~~~ :$ php occ : [OPTION ...] ~~~ Ou avec `sudo` : ~~~ $ sudo -u php occ : [OPTION ...] ~~~ **Note :** Pour une meilleure lisibilité, dans les sections suivantes, **on ne re-précisera pas le chemin et l'utilisateur Nextcloud**. On peut lister les options d'une commande avec le module `help` : ~~~ php occ help : ~~~ ### Gestion des utilisateurs en CLI #### Ajouter un compte ~~~ php occ user:add --display-name "" ~~~ #### Avoir les informations sur un compte ~~~ php occ user:info ~~~ #### Changer le mot de passe d'un compte ~~~ php occ user:resetpassword ~~~ #### Désactiver/Activer un compte ~~~ php occ user:disable php occ user:enable ~~~ Pour savoir si le compte est activé ou non, voir [les informations sur ce compte](#avoir-les-informations-sur-un-compte). #### Supprimer un compte ~~~ php occ user:delete ~~~ #### Lister les compte et les groupes Lister les comptes : ~~~ php occ user:list ~~~ Lister les groupes et les comptes associés : ~~~ php occ group:list ~~~ #### Donner ou retirer les droits administrateur d'un compte Pour donner les droits d'administrateur à un compte `foo`, l'ajouter dans le groupe `admin` : ~~~ $ php occ group:adduser admin foo ~~~ Pour retirer les droits, il suffit de faire l'opération inverse : ~~~ php occ group:removeuser admin foo ~~~ #### Vider **toute** la corbeille d'un compte ~~~ $ php occ trashbin:cleanup admin foo ~~~ Si besoin de vider automatiquement les fichiers plus vieux de 20 jours, à insérer dans `config/config.php` : ~~~ 'trashbin_retention_obligation' => 'auto, 20', ~~~ ## Utilisation Les fichiers stockés sont accessibles : * Via une interface web accessible à partir de n'importe quel navigateur (depuis un PC ou un smartphone) ; * Dans un dossier local, grâce à l'application de synchronisation Nextcloud (disponible sur Linux, Mac et Windows) ; * Sur un lecteur réseau avec le [protocole WebDAV](https://fr.wikipedia.org/wiki/WebDAV) (disponibles sur Linux, Mac et Windows) ; * Via une application mobile [Android](https://f-droid.org/fr/packages/com.nextcloud.client/) ou [iPhone](https://apps.apple.com/fr/app/nextcloud/id1125420102). Le choix des modes d'accès dépend de vos cas d'usage : * Si vous utilisez Nextcloud pour stocker des données très volumineuses que vous ne voulez pas stocker localement, il est plus intéressant d'utiliser l'interface web et/ou un lecteur réseau WebDAV. * Si vous utilisez Nextcloud comme solution de sauvegarde de vos fichiers locaux, vous aurez besoin de l'application de synchronisation. * Si vous utilisez beaucoup les Apps Nextcloud, comme le calendrier ou l'éditeur collaboratif, vous utiliserez plutôt l'interface web. Dans la plupart les cas d'usage, sauf stockage volumineux, nous conseillons d'installer l'application de synchronisation et d'utiliser l'interface web pour tout usage autre que du stockage ou du partage (collaboration, calendrier...). ### Synchronisation automatique L'application de synchronisation copie et maintient à jour vos fichiers Nextcloud sur votre ordinateur dans un dossier local de votre choix, accessible comme d'habitude avec votre gestionnaire de fichiers. Les fichiers synchronisés seront accessibles sans latence. Cependant, contrairement au lecteur réseau WebDAV, ils prendront de l'espace sur votre disque dur. L'application s'exécute en tâche de fond et ajoute une icône dans la barre des tâches, à partir de laquelle on peut configurer la synchronisation. #### Installation de l'application de synchronisation sur Debian Note : Le nom des paquets peut varier selon votre distribution. Sur **Debian**, le paquet à installer est [nextcloud-desktop](https://packages.debian.org/stable/nextcloud-desktop). S'il n'est pas visible dans les icônes de la barre des tâches après l'installation, il faut le lancer manuellement via le menu des programmes et vérifier dans ses paramètres que l'option « Lancer au démarrage du système » est bien cochée. Par exemple, pour le lancer sur XFCE : `Menu > Accessoires > Client de synchronisation Nextcloud`. S'il ne démarre pas automatiquement au prochain redémarrage, vous devez l'ajouter manuellement aux applications démarrées automatiquement par votre environnement de bureau (KDE, Gnome, XFCE, Windows...). Par exemple, pour XFCE : * `Menu > Paramètres > Session et démarrage > Démarrage automatique d'application > +` * Commande à exécuter : `/usr/bin/nextcloud --background` #### Installation de l'application de synchronisation sur d'autres systèmes Si votre système d'exploitation ne fournit pas de paquet pour installer l'application de synchronisation (**Windows, MacOS, distributions Linux n'ayant pas de paquet Nextcloud**), vous pouvez utiliser : * Les binaires pré-compilés sur le [GitHub de Nextcloud](https://github.com/nextcloud/desktop). * Le fichier d'installation ou le binaire sur le [site de Nextcloud](https://nextcloud.com/install/#install-clients). Cependant, avec ce type d'installation, vous devez effectuer les mises-à-jour de l'application manuellement. ### Lecteur réseau (via le protocole WebDAV) Cette solution permet de rendre les fichiers accessibles dans votre gestionnaire de fichiers via un lecteur réseau, avec un temps de latence qui dépendra de votre connexion à internet et de la taille des fichiers. Contrairement au client de bureau, ils ne prendront pas de place sur votre disque dur. L'avantage du protocole WebDAV est d'être indépendant du système d'exploitation que vous utilisez. En revanche, en cas de coupure d'accès à internet, vous ne pourrez pas accéder à vos fichiers. L'url à renseignée est `https://nextcloud-demo.evolix.org/remote.php/dav/files/$login`. #### Ajout du lecteur réseau WebDAV à votre gestionnaire de fichiers Linux La plupart des gestionnaires de fichiers prennent en charge le protocole WebDAV nativement. Cette solution a l'avantage de ne pas nécessiter l'installation de paquets supplémentaires. En général, il suffit d'entrer l'URL suivante dans la barre de chemin de votre gestionnaire de fichiers, en adaptant `$login` : * Thunar, Nautilus, Caja, Nemo : `davs://nextcloud-demo.evolix.org/remote.php/dav/files/$login` * Dolphin : `webdavs://nextcloud-demo.evolix.org/remote.php/dav/files/$login` Selon votre configuration ou la version de votre gestionnaire de fichiers, il faut parfois cliquer sur la barre de chemins pour pouvoir entrer l'URL (Dolphin), cliquer sur une icône à côté (Nemo, Caja), ou ajouter explicitement un nouveau lecteur réseau (Nautilus). Sur Nautilus, il n'y a pas de barre de chemin, il faut ajouter un lecteur réseau en cliquant sur `+ Autres emplacements` dans le panneau latéral de gauche, puis renseigner l'URL WebDAV de l'instance Nextcloud dans « Connexion à un serveur ». #### Intégration dans votre environnement de bureau Linux Certains environnements de bureau proposent une intégration native de Nextcloud : * Gnome (Nautilus) : [nautilus-nextcloud](https://packages.debian.org/stable/nautilus-nextcloud), (documentation)[https://docs.nextcloud.com/server/19/user_manual/pim/sync_gnome.html] * KDE (Dolphin) : [dolphin-nextcloud](https://packages.debian.org/stable/dolphin-nextcloud) * Cinnamon, Unity (Nemo) : [nemo-nextcloud](https://packages.debian.org/stable/nemo-nextcloud) * Mate (Caja) : [caja-nextcloud](https://packages.debian.org/stable/caja-nextcloud) Généralement, vous pouvez ensuite configurer votre compte Nextcloud dans les paramètres de votre bureau. Par exemple, pour Gnome, cela se passe dans `Settings > Online accounts > Nextcloud`. Ces intégrations ajoutent un lecteur réseau nextcloudavec le protocole WebDAV et permettent de synchroniser votre calendrier et vos contacts avec les applications du bureau. #### Ajout du lecteur réseau WebDAV sur Windows Dans l'explorateur de fichiers : `Clic droit sur PC > Connecter un lecteur réseau`. Dans `Dossier`, indiquez `A COMPLETER`. ## Applications Ce qui rend attractif Nextcloud est son côté modulaire à pouvoir intégrer des fonctionnalitées supplémentaires au stockage de fichiers grâce aux applications. C'est à dire qu'il est possible d'activer les commentaires, journal des modifications, liens de partages, etc. Avec un compte d'administrateur de l'instance, la liste est présente à l'adresse `https://nextcloud-demo.evolix.org/settings/apps` Il est également possible de les manipuler via des commandes en CLI grâce à `php occ [options] [arguments]` Par exemple : - Voir les applications installées : `php occ app:list` - Désactiver une application : `php occ app:disable monitoring` - Supprimer une application : `php occ app:remove serverinfo` ### Group folders Pour gérer les partages, nous préconisons l'utilisation du plugin [Group folders](https://apps.nextcloud.com/apps/groupfolders). Le plugin « Group folders » permet de créer des groupes de partage et de configurer les droits d'accès par groupe dans l'interface (bouton « Dossiers du groupe » dans l'Administration de l'interface web). Sans ce plugin, on peut créer un répertoire et le partager avec certains droits. Cependant, ce n'est pas pratique : les droits sont gérés par une seule personne qui pourrait les retirer par erreur, et l'on sera embêté si l'on doit supprimer cet utilisateur dans le futur. ~~~ php occ app:enable groupfolders ~~~ ### Agenda Utilisant le procotole CalDAV, ses principales fonctionnalités sont : - Invitation par mail aux évènements (fonctionne avec l'application contacts) - Indiquer ses disponibilités - Planifier des rappels - Gestion de plusieurs calendrier - Partages de calendrier via compte Nextcloud et mails - Rechercher un évènement via la barre de recherche Son installation en mode CLI : ~~~ php occ app:enable calendar ~~~ Si l’instance n’est pas publique, il est possible de supprimer les liens de confirmation envoyés avec la configuration suivante. ~~~ php occ config:app:set dav invitation_link_recipients --value="no" ~~~ Afin de n’envoyer les liens qu’aux personnes ayant accès à l’interface, il est possible d’indiquer les adresses ou domaines à la place de `no` (séparés par des virgules). ~~~ php occ config:app:set dav invitation_link_recipients --value="example.com,example.org,email@sub.example.org" ~~~ Il faut alors configurer le module Mail pour pouvoir valider les confirmations par le protocole iMIP. ### Contacts Utilisant le protocole CardDAV avec un seul carnet d'adresse, ses principales fonctionnalités sont : - Partage d'un contact au format vCard - Synchronisation possible avec DavX - Intégration avec d'autres applications issue de nextcloud : mail, calendrier, ... - Intégration avec d'autres applications tierces : rainloop - Créer des groupes de contacts - Importer des contacts au format vCard - Rappel des dates d'anniversaires - Pleins d'informations de contacts disponible (nom, prénom, adresse mail, téléphone, adresse postale, photo, métier, type de travail, etc) - Ajout d'informations personnalisées (étiquettes, année, ...) Son installation en mode CLI : ~~~ php occ app:enable contacts ~~~ ## FAQ ### Interface web bloquée en mode maintenance C'est une erreur courante lorsque l'on oublie ou que l'on se trompe lors de la dernière étape de la mise-à-jour via l'interface web. Pour être sûr que la mise-à-jour s'est bien déroulée, on peut la relancer : ~~~ $ php occ upgrade ~~~ Puis, on sort du mode maintenance : ~~~ $ php occ maintenance:mode --off ~~~ ### Erreur de connexion à MySQL Vérifier `dbhost` dans `/config/config.php` : ~~~ 'localhost', ~~~ * La valeur `localhost` indique à Nextcloud de se connecter à MySQL via le socket. Si on utilise PHP dans un conteneur, il faut vérifier que le socket est bien « bind mounté » dans le conteneur. * Sinon, on peut mettre `127.0.0.1`, qui indique à Nextcloud de se connecter à MySQL en TCP (un peu plus lent). ### Connecteur ONLYOFFICE On utilisera un serveur ONLYOFFICE DOC, si besoin de support voir ### Synchronisation automatique pour smartphone C'est possible de le faire pour les applications calendar et contacts dont l'application [DAVx5](https://www.davx5.com/faq/what-does-davx5-stand-for) est disponible sur [F-droid](https://f-droid.org/fr/packages/at.bitfire.davdroid/) et après l'avoir lancé en acceptant les autorisations, toucher le bouton rond " + " pour ajouter un compte. Plusieurs choix sont possibles où seulement le 2ème point "Connexion avec une URL et un nom d'utilisateur" est intéressante Il y aura besoin de renseigner ces informations dans les champs respectifs : - URL de base : https://nextcloud.example.org/remote.php/dav/ - Nom d'utilisateur : BAR - Mot de passe : PASSWORD Enfin, acceptez les propositions des pages suivantes. Par défaut, rien n'est sélectionné alors choisissez ce que vous souhaitez autoriser. Pensez aussi à sélectionner les agendas ou calendriers à synchroniser. Si la synchronisation n'est pas immédiate, soit il y a besoin d'attendre la prochaine heure de synchronisation, soit que des autorisations sont manquantes. ### Autoriser la synchronisation de fichiers .htaccess Par défaut, Nextcloud met en liste noire les fichiers .htaccess de la synchronisation car ce n'est pas recommandé de synchroniser ce genre de fichiers. Néanmoins, il est possible de lever cette limitation en ajoutant la directive suivante au fichier `config/config.php` ~~~ 'blacklisted_files' => [''], ~~~ ### Si bloqué sur l'erreur `Step 4 is currently in process. Please call this command later.` Débloquer la situation avec `occ maintenance:repair` et relancer la mise à jour ~~~ $ php nextcloud/occ maintenance:repair $ php nextcloud/updater/updater.phar ~~~ ### Langue par défaut À insérer dans `config/config.php` : `'default_language' => 'fr',` ### Fichiers données en exemple Il y a par défaut des fichiers donnés en exemple qui sont copiés dans le compte de chaque nouvel utilisateur. On peut vouloir copier d'autres fichiers à la place ou même n'en copier aucun. Pour ne rien copier, il faut insérer cette ligne dans `config/config.php` : `'skeletondirectory' => '',`