1 line
15 KiB
JSON
1 line
15 KiB
JSON
{"uuid":"d5957a86-0d2e-4194-8a45-9b0d8bdde166","slug":"nextcloud","title":"NextCloud","author":"cedric@abonnel.fr","published":true,"published_at":"2023-12-13 09:33:03","created_at":"2023-12-13 09:33:03","updated_at":"2023-12-13 09:33:03","revisions":[],"cover":"","files_meta":[],"external_links":[],"seo_title":"","seo_description":"","og_image":"","category":"Informatique","content":"# NextCloud\n\n## - Installer NextCloud\n### - Pré requis\nEnvironnement utilisé lors de la rédaction de ce document\n\n- OS : Linux Debian 10\n- HTTP : Serveur Apache 2.4\n- SGBD : MariaDB\n- Langage : PHP 7.4 exécuté en FPM avec Apache\n\n### - Modules PHP installés\n```\nsudo apt install php7.4-fpm php7.4-common\nsudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl\nsudo apt install php7.4-gmp php7.4-bcmath php7.4-imagick php7.4-xml php7.4-zip\nsudo apt install imagemagick\n```\n\n### - Configuration PHP\n<u>Mémoire limite</u>\n\nDans la configuration par défaut, la valeur **memory_limit** n'est pas indiquée. Ajouter dans le fichier de configuration PHP FPM `/etc/php/7.4/fpm/conf.d/25-memory.ini`.\n\n```\nmemory_limit = 1G\n```\n\n### - Base de données\nIl faut créer un utilisateur et une base de données.\n\nDans cette section on définie :\n- password_nextcloud : le mot de passe MariaDb ssociée\n\n**Se connecter à mariaDb** :\n```\nmysql -uroot -p\n```\n\n```SQL\nUSE mysql;\n```\n\n**Créer la base de données **:\n```SQL\nCREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n```\n\n**Créer le compte de connexion ** et associer les droits sur la base de données :\n```SQL\nGRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON nextcloud.* TO 'user_nextcloud'@'localhost' IDENTIFIED BY '${password_nextcloud}';\nquit;\n```\n\n## - Configurer Apache 2.4\nNous allons ajouter un dossier à notre configuration Web actuelle. L'accès se fera par http:*www.abonnel.fr/cloud\n\nÉditer le fichier de configuration Apache `/etc/apache2/sites-available/100-fr.abonnel.www-cloud.conf`\n\n```\nAlias /cloud \"/var/www/abonnel.fr/cloud/\"\n\n<Directory /var/www/abonnel.fr/cloud/>\n Require all granted\n AllowOverride All\n Options +FollowSymLinks +MultiViews\n MultiviewsMatch Any\n\n <IfModule mod_dav.c>\n Dav off\n </IfModule>\n\n</Directory>\n```\n\n >> Prendre en considération la configuration\n\n```\na2ensite 100-fr.abonnel.www-cloud.conf\n```\n\n >> Activer les modules Apache 2 suivants\n\n```\nsudo a2enmod rewrite\nsudo a2enmod headers\nsudo a2enmod env\nsudo a2enmod dir\nsudo a2enmod mime\n```\n\n >> Activer la gestion du SSL\n\n```\nsudo a2enmod ssl\nsudo a2ensite default-ssl\n```\n\n >> Modifier les droits d'accès sur le dossier data\n\n```\nsudo chown -R www-data:www-data /var/www/abonnel.fr/cloud/\n```\n\n >> Télécharger le script\n\nLe script est disponible à l'adresse https:*nextcloud.com/install/#instructions-server \n\n\n \n```\nwget https:*download.nextcloud.com/server/releases/nextcloud-18.0.3.tar.bz2\n```\n\n >> Déployer le script\n\n```\nsudo tar -xjf nextcloud-18.0.1.tar.bz2 -C /var/www/abonnel.fr/\nsudo mv /var/www/abonnel.fr/cloud/nextcloud /var/www/abonnel.fr/cloud\n```\n\n >> Mettre les bons droits sur le dossiers\n\n```\nsudo chown -R www-data:www-data /var/www/abonnel.fr/cloud\n```\n\n >> Redémarrage du service Apache\n\n```\nservice apache2 restart\n```\n\n >> Se connecter à NextCloud pour terminer le paramétrage\n\nUtiliser l'URL qui permet d'accéder à NextCloud. Par exemple https:*abonnel.fr/cloud\nLors du premier appel, le panneau de configuration initiale s'affiche.\n\n### - Configuration l'antivirus\n apt-get install clamav clamav-daemon\n\n### - Configuration Redis et APCu\n```\nsudo apt install redis php7.4-redis php7.4-apcu\nsudo apt install redis php8.1-redis php8.1-apcu\nsudo apt install redis php8.3-redis php8.3-apcu\n```\n\nIl faut éditer le fichier de configuration NextCloud `/var/www/abonnel.fr/cloud/config/config.php` :\n\n```\n'memcache.distributed' => '\\OC\\Memcache\\Redis',\n'memcache.locking' => '\\OC\\Memcache\\Redis',\n'memcache.local' => '\\OC\\Memcache\\APCu',\n'redis' => array(\n 'host' => 'localhost',\n 'port' => 6379,\n),\n```\n\nIl faut associer le groupe `redis` au compte `www-data`\n\n sudo usermod -a -G redis www-data\n\nPuis redémarrer Apache2\n\n sudo systemctl restart apache2\n\n#### Activation de memcache\n```\napt install php7.4-memcache\n```\n\nAssurez-vous également que le module Memcache est activé dans votre fichier de configuration PHP. Vous devrez peut-être ajouter ou décommenter la ligne suivante dans les fichiers de configuration :\n\n```\n/etc/php/7.4/mods-available/memcache.ini:extension=memcache.so\n/etc/php/8.3/mods-available/memcache.ini:extension=memcache.so\n/etc/php/8.1/mods-available/memcache.ini:extension=memcache.so\n```\n\n```\n/etc/php/7.4/cli/php.ini:apc.enable_cli=1\n/etc/php/7.4/fpm/php.ini:apc.enable_cli=1\n/etc/php/8.1/mods-available/apcu.ini:apc.enable_cli=1\n/etc/php/8.3/mods-available/apcu.ini:apc.enable_cli=1\n```\n\nAprès avoir apporté des modifications, redémarrez le service PHP-FPM pour prendre en compte les modifications :\n\n```\nsudo service php7.4-fpm restart\nsudo service php8.1-fpm restart\nsudo service php8.3-fpm restart\n```\n\n### - Les options nextCloud\nPour modifier les options il faut éditer le fichier de configuration NextCloud `/var/www/abonnel.fr/cloud/config/config.php`.\n\nUne fois les modification effectuées, il faut exécuter le script suivant :\n```\nsudo -u www-data php /var/www/abonnel.fr/cloud/occ maintenance:update:htaccess\n```\n\n> Forcer les connexions en https\n\n```\n'forcessl' => true,\n 'forceSSLforSubdomains' => true,\n```\n\n> Mettre par défaut l'interface en Français et le code pays\n\n```\n'default_phone_region' => 'FR',\n 'default_language' => 'fr',\n 'default_locale' => 'fr_FR',\n```\n\n> Faire disparaître le index.php de l'URL\n\n```\n'overwrite.cli.url' => 'https:*www.abonnel.fr/cloud',\n 'htaccess.RewriteBase' => '/cloud',\n```\n\n> Mise à jour en ligne de commande\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ upgrade\n```\n\n \n> Désactiver le mode maintenance\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off\n```\n\n \n> Mettre à jour toutes les applications\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ app:update --all\n``` \n\n### - ajouter une tâche cron pour NextCloud\n >> Éditer la configuration cron pour www-data\n\n```\nsudo crontab -u www-data -e\n```\n\nDans la configuration, ajouter :\n\n```\n*/5 * * * * php -f /var/www/abonnel.fr/cloud/cron.php\n```\n\n### - configurer fail2ban\nCréer le fichier `/etc/fail2banb/filter.d/nextcloud.conf` qui définie les règles de détection d'erreur d'authentification.\n```\n[Definition]\n_groupsre = (?:(?:,?\\s*\"\\w+\":(?:\"[^\"]+\"|\\w+))*)\nfailregex = ^\\{%(_groupsre)s,?\\s*\"remoteAddr\":\"<HOST>\"%(_groupsre)s,?\\s*\"message\":\"Login failed:\n| \\{%(_groupsre)s,?\\s*\"remoteAddr\":\"<HOST>\"%(_groupsre)s,?\\s*\"message\":\"Trusted domain error. |\n| ------------------------------------------------------------------------------------------- |\ndatepattern = ,?\\s*\"time\"\\s*:\\s*\"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?\"\n```\n\nLe fichier `/etc/fail2ban/jail.d/nextcloud.local` permet de renseigner l'environnement Nextcloud.\n```\n[nextcloud]\nbackend = auto\nenabled = true\nport = 80,443\nprotocol = tcp\nfilter = nextcloud\nmaxretry = 3\nbantime = 86400\nfindtime = 43200\nlogpath = /var/www/abonnel.fr/cloud/data/nextcloud.log\n```\n\nRedémarrer, vérifier :\n```\nsudo systemctl restart fail2ban\nsudo systemctl status fail2ban\nsudo fail2ban-client status nextcloud\n```\n\n### - configurer mysql\nDans le fichier `/etc/mysql/conf.d/mysql.cnf`\n```\ninnodb_buffer_pool_size=1G\ninnodb_io_capacity=4000\n```\n\n### - configurer php\nDans un fichier de configuration PHP-FPM, par exemple `/etc/php/8.0/fpm/conf.d/25-nextcloud.ini`\n\n```\nmemory_limit = 1G\n\npm = dynamic\npm.max_children = 120\npm.start_servers = 12\npm.min_spare_servers = 6\npm.max_spare_servers = 18\n\nopcache.enable=1\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.memory_consumption=128\nopcache.save_comments=1\nopcache.revalidate_freq=1\n```\n\n### - Mettre à jour automatiquement NextCloud\n >> Éditer la configuration cron pour www-data\n\n```\nsudo crontab -u www-data -e\n```\n\nDans la configuration, ajouter :\n\n```\n0 3 * * * php /var/www/abonnel.fr/updater/updater.phar --no-interaction\n```\n\n### - Mettre à jour automatiquement les applications NextCloud\n >> Éditer la configuration cron pour www-data\n\n```\nsudo crontab -u www-data -e\n```\n\nDans la configuration, ajouter :\n\n```\n* 10 */1 * * php -f /var/www/abonnel.fr/cloud/occ app:update --all\n```\n\n## - Maintenance suite aux mises à jour\n### - Index manquants\nLa base de données a quelques index manquants. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant `occ db:add-missing-indices`, ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-indices\n```\n\n### - Clés primaires manquantes\nIl manque des clés primaires dans la base de données. En raison du fait que l’ajout de clés primaires sur les grandes tables peut prendre un certain temps, elles n’ont pas été ajoutées automatiquement. En exécutant `occ db:add-missing-primary-keys`, ces clés primaires manquantes peuvent être ajoutées manuellement pendant que l’instance continue de fonctionner.\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-primary-keys\n```\n\n### - Clés primaires manquantes\nCertaines colonnes facultatives sont manquantes dans la base de données. Étant donné qu'ajouter des colonnes sur des grandes tables peut prendre du temps, elles n'ont pas été ajoutées automatiquement lorsqu'elles sont facultatives. En exécutant `occ db:add-missing-columns` ces colonnes manquantes peuvent être ajoutées manuellement alors que l'instance continue de fonctionner. Une fois que les colonnes sont ajoutées, la performance ou l'utilisabilité de certaines fonctionnalités pourraient être améliorées.\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-columns\n```\n\n### - Clés primaires manquantes\nCertaines colonnes de la base de données n'ont pas été converties en **big int**. Changer le type de colonne dans de grandes tables peu prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant `occ db:convert-filecache-bigint` ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne.\n\n```\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --on\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:convert-filecache-bigint\nsudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off\n```\n\n## - Quelques trucs et astuces\n### - Utilisateur désactivé\nActiver un utilisateur qui a été désactivé :\n\n sudo -u www-data php occ user:enable [username]\n \n\n### - Import d'un VCard en erreur\nConvertir un fichier **vcard 2.1** en **vcard 3.0** pour l'importer dans NextCloud :\n\nhttps:*github.com/jowave/vcard2to3\n\n```\ngit clone https://github.com/jowave/vcard2to3.git\ncd vcard2to3\n./vcard2to3.py your_file.vcf\n```\n\n### - Contacts / CardDAV\n**Nextcloud** propose un backend **CardDAV** pour que les utilisateurs puissent stocker et partager leurs carnets d'adresses et leurs contacts.\n\n#### Carnet d'adresses système\n**Modifié dans la version 27 : Le carnet d'adresses système est désormais accessible à tous les utilisateurs de Nextcloud.**\n\nNextcloud maintient un carnet d'adresses en lecture seule contenant les informations de contact de tous les utilisateurs de l'instance.\n\nLes utilisateurs désactivés sont supprimés de ce carnet d'adresses.\n\nVous pouvez désactiver l'accès au carnet d'adresses système en utilisant la valeur de configuration de l'application `system_addressbook_expose`.\n\nExécutez la commande `occ config:app:set dav system_addressbook_exposed --value=\"no\"` pour désactiver l'accès au carnet d'adresses système pour tous les utilisateurs. Veuillez noter que cela n'influence pas le partage fédéré.\n\n#### Avertissement\nSi des clients se sont déjà connectés au point de terminaison CalDAV, les clients peuvent rencontrer des problèmes de synchronisation après la désactivation de l'accès au carnet d'adresses système. Cela peut souvent être résolu en choisissant un carnet d'adresses par défaut différent sur le client et en forçant une nouvelle synchronisation.\n\n#### Confidentialité et étendue des propriétés de l'utilisateur\nLes informations de contact dans le carnet d'adresses système sont extraites des informations de profil des utilisateurs. Les propriétés de profil ne sont écrites dans le carnet de contacts système que si l'étendue est définie sur \"Local\" ou plus élevé.\n\nLes utilisateurs qui définissent toutes leurs étendues de propriétés sur \"Privé\" sont supprimés du carnet d'adresses système et ne sont donc pas visibles par les autres utilisateurs.\n\nLes paramètres de partage de fichiers contrôlent l'énumération des autres utilisateurs.\n\n- Si l'autocomplétion du nom d'utilisateur n'est pas autorisée, le carnet d'adresses système ne montrera que le contact système de l'utilisateur mais pas d'autres contacts.\n- Si l'autocomplétion du nom d'utilisateur est autorisée, les utilisateurs verront les cartes de contact de tous les autres utilisateurs.\n1. Si l'autocomplétion est limitée aux utilisateurs au sein des mêmes groupes, les utilisateurs verront les cartes de contact d'autres utilisateurs dans les groupes partagés.\n1. Si l'autocomplétion est limitée aux numéros de téléphone correspondants, le carnet d'adresses système ne montrera que le contact système de l'utilisateur mais pas d'autres contacts.\n1. Si l'autocomplétion est limitée aux utilisateurs au sein des mêmes groupes et aux numéros de téléphone correspondants, les utilisateurs verront les cartes de contact d'autres utilisateurs dans les groupes partagés.\n\n#### Synchronisation du carnet d'adresses\nLe carnet d'adresses est mis à jour automatiquement à chaque ajout, modification, désactivation ou suppression d'utilisateur. Les administrateurs peuvent également déclencher une réécriture complète du carnet d'adresses avec `occ`.","featured":false,"tags":[]} |