Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
documentations:linux:debian_-_installation_de_nextcloud [2023/01/17 11:15] – créée sheltemdocumentations:linux:debian_-_installation_de_nextcloud [2023/01/20 14:23] (Version actuelle) – [Configuration du cache (Optionnel)] sheltem
Ligne 1: Ligne 1:
 +====== Debian - Installation de Nextcloud ======
 +
 ====== Prérequis ====== ====== Prérequis ======
   * Une machine virtuelle sous Debian   * Une machine virtuelle sous Debian
Ligne 64: Ligne 66:
  
   * On valide simplement vu qu'il n'y a pas de mot de passe root pour le moment   * On valide simplement vu qu'il n'y a pas de mot de passe root pour le moment
 +
 +  Enter current password for root (enter for none):
 +  OK, successfully used password, moving on...
 +  
 +  * On répond oui à la connexion via socket
 +  witch to unix_socket authentication [Y/n] Y
 +  Enabled successfully!
 +  Reloading privilege tables..
 +  ... Success!
 +
 +  * On choisi un mot de passe pour l'utilisateur root
 +
 +  Change the root password? [Y/n] Y
 +  New password:
 +  Re-enter new password:
 +  Password updated successfully!
 +  Reloading privilege tables..
 +  ... Success!
 +
 +  * On interdit les connexions anonymes.
 +
 +  By default, a MariaDB installation has an anonymous user, allowing anyone
 +  to log into MariaDB without having to have a user account created for
 +  them.  This is intended only for testing, and to make the installation
 +  go a bit smoother.  You should remove them before moving into a
 +  production environment.
 +  
 +  Remove anonymous users? [Y/n] Y
 +  ... Success!
 +
 +  * On interdit à l'utilisateur root de se connecter à distance. (cela ne devrait jamais être nécessaire)
 +
 +  Normally, root should only be allowed to connect from 'localhost' This
 +  ensures that someone cannot guess at the root password from the network.
 +  
 +  Disallow root login remotely? [Y/n] Y
 +  ... Success!
 +
 +  * On supprime la base de test qui ne sert a rien
 +
 +  By default, MariaDB comes with a database named 'test' that anyone can
 +  access.  This is also intended only for testing, and should be removed
 +  before moving into a production environment.
 +  
 +  Remove test database and access to it? [Y/n] Y
 +  - Dropping test database...
 +  ... Success!
 +  - Removing privileges on test database...
 +  ... Success!
 +
 +  * On accepte de recharger les privilèges pour que les modifications prennent effet immédiatement.
 +
 +  Reloading the privilege tables will ensure that all changes made so far
 +  will take effect immediately.
 +  
 +  Reload privilege tables now? [Y/n] Y
 +  ... Success!
 +
 +===== Création de la base de données pour Nextcloud =====
 +
 +  * On se connecte à MariaDB
 +
 +  mysql -u root -p
 +
 +Dans certain cas, le paramètre -p doit être omis car l'utilisateur root du système peut se connecter en tant que root de MariaDB sans avoir a entrer le mot de passe.
 +
 +  * On crée la base de données pour Nextcloud.
 +
 +  CREATE DATABASE nextcloud_db;
 +
 +  * On crée l'utilisateur de service pour l'accès à la base nouvellement créée. (Remplacer UTILISATEURNEXCLOUD et PASSWORD)
 +
 +  CREATE USER UTILISATEURNEXCLOUD@localhost IDENTIFIED BY 'PASSWORD';
 +
 +  * On donne les droits au nouvel utilisateur sur la nouvelle base de données. (Remplacer UTILISATEURNEXTCLOUD par celui choisi précédement)
 +
 +  GRANT ALL PRIVILEGES ON nextcloud_db.* TO UTILISATEURNEXTCLOUD@localhost;
 +
 +  * On applique les nouveau privilèges.
 +
 +  FLUSH PRIVILEGES;
 +
 +  * On se déconnecte de MariaDB avec la commande "quit"
 +
 +====== Installation de Nextcloud ======
 +
 +On se place dans /var/www
 +  
 +  cd /var/www
 +
 +On télécharge la dernière version de Nextcloud (Adapter le lien en fonction de la dernière version)
 +
 +  curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest-25.zip
 +
 +On extrait le fichier zip
 +
 +  unzip nextcloud.zip
 +
 +On donne les droits d'accès aux fichiers à apache
 +
 +  chown -R www-data:www-data nextcloud
 +
 +====== Installation d'un certificat Let's Encrypt ======
 +
 +Cela permet de tester son installation via SSL même si la solution Let's Encrypt n'est pas définitive.
 +
 +On installe Certbot
 +
 +  apt install certbot
 +
 +Une fois installé, on crée les répertoires nécessaire et on ajuste les droits
 +
 +  mkdir -p /var/lib/letsencrypt/.well-known
 +  chgrp www-data /var/lib/letsencrypt
 +  chmod g+s /var/lib/letsencrypt
 +
 +On crée un Vhost pour Let's Encrypt avec son editeur préféré. (Exécuter l'éditeur en indiquant un fichier qui n'existe pas le crée automatiquement)
 +
 +  vi /etc/apache2/conf-available/well-known.conf
 +ou
 +  nano /etc/apache2/conf-available/well-known.conf
 +
 +Copier/coller le contenu suivant
 +
 +  Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
 +  <Directory "/var/lib/letsencrypt/">
 +      AllowOverride None
 +      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
 +      Require method GET POST OPTIONS
 +  </Directory>
 +
 +Activer le nouveau Vhost en créant un lien symbolique dans le dossier "conf_enable" (c'est une convention d'Apache)
 +
 +  a2ensite well-known.conf
 +ou
 +  ln -s /etc/apache2/conf-available/well-known.conf /etc/apache2/conf-enabled/
 +
 +On redémarre apache
 +
 +  systemctl restart apache2
 +
 +On génère un certificat (Remplacer UTILISATEUR@DOMAINE.COM et DOMAINE.COM)
 +
 +  certbot certonly --agree-tos --email UTILISATEUR@DOMAINE.COM --webroot -w /var/lib/letsencrypt/ -d DOMAINE.COM
 +
 +====== Création des Virtual Hosts Apache ======
 +Pour simplifier la configuration, les Vhosts pour les ports 80 et 443 sont configurés dans le même fichiers.
 +les connexions sur le ports 80 sont automatiquement redirigés vers la connexion 443.
 +
 +Créer le fichier de configuration des Vhosts avec votre éditeur préféré. (Exécuter l'éditeur en indiquant un fichier qui n'existe pas le crée automatiquement)
 +
 +  vi /etc/apache2/sites-available/nextcloud.conf
 +ou
 +  nano /etc/apache2/sites-available/nextcloud.conf
 +
 +Coller le contenu suivant en remplaçant "DOMAINE.COM" par le nom de domaine utilisé.
 +
 +  <VirtualHost *:80>
 +      ServerName DOMAINE.COM
 +      ServerAlias www.DOMAINE.COM
 +  
 +      # auto redirect HTTP to HTTPS
 +      Redirect permanent / https://DOMAINE.COM/
 +  </VirtualHost>
 +  
 +  <VirtualHost *:443>
 +      ServerName DOMAINE.COM
 +      ServerAlias www.DOMAINE.COM
 +    
 +      DocumentRoot /var/www/nextcloud/
 +  
 +      Protocols h2 http/1.1
 +  
 +      # log files
 +      ErrorLog /var/log/apache2/DOMAINE.COM-error.log
 +      CustomLog /var/log/apache2/DOMAINE.COM-access.log combined
 +  
 +      SSLEngine On
 +      SSLCertificateFile /etc/letsencrypt/live/DOMAINE.COM/fullchain.pem
 +      SSLCertificateKeyFile /etc/letsencrypt/live/DOMAINE.COM/privkey.pem
 +  
 +      # HSTS
 +      <IfModule mod_headers.c>
 +          Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 +      </IfModule>
 +  
 +      <Directory /var/www/nextcloud/>
 +          Options +FollowSymlinks
 +          AllowOverride All
 +  
 +          <IfModule mod_dav.c>
 +              Dav off
 +          </IfModule>
 +  
 +          SetEnv HOME /var/www/nextcloud
 +          SetEnv HTTP_HOME /var/www/nextcloud
 +      </Directory>
 +  </VirtualHost>
 +
 +On active les Vhosts
 +
 +  a2ensite nextcloud.conf
 +ou
 +  ln -s /etc/apache2/conf-available/nextcloud.conf /etc/apache2/conf-enabled/
 +
 +Il est possible de tester toute la configuration d'Apache avec cette commande
 +
 +  apachectl configtest
 +
 +Redémarrer Apache
 +
 +  systemctl restart apache2
 +
 +====== Configuration de Nextcloud ======
 +Si la procédure d'Installation standardisé de Debian a été suivi, c'est le répertoire /DATA qui sera utilisé stocker les données de Nextcloud.
 +Il est donc nécessaire de donner les droits d'accès a Apache pour ce répertoire.
 +
 +Donner les droits à Apache sur le répertoire /DATA (Si il n'est pas dans le répertoire de Nextcloud)
 +
 +  chown -R www-data:www-data /DATA
 +
 +A ce stade l'instance Nextcloud devrait être accessible via son URL
 +
 +  * Ouvrer un navigateur est entrer l'URL définitive.
 +  * L'assistant de configuration de Nextcloud s'ouvre.
 +  * **Créer un compte adminstrateur.**
 +  * Indiquer** /DATA** en tant que **répertoire de données.**
 +  * Indiquer le nom de la base de données crée précédement
 +  * Indiquer l'utilisateur de la base de données créé précédement.
 +  * Indiquer le mot de passe défini précédement pour l'utilisateur de la base de données.
 +  * l'adresse de la base de données peut rester sur "localhost"
 +
 +===== Configuration des tâches planifiées =====
 +
 +  * Rendez-vous dans l'interface web de Nextcloud
 +  * Cliquer sur le logo de profil (en haut à droite)
 +  * Cliquer sur **Administration Settings** puis **Paramêtres de base**
 +  * Sélectionner **Cron (Recommandé)**
 +  * Se connecter en SSH au serveur
 +  * Créer la tâche planifiée
 +
 +  crontab -u www-data -e
 +
 +Ajouter la ligne suivante à la fin du fichier et quitter **(Remplacer par le chemin vers le fichier cron.php)**
 +
 +  */5  *  *  *  * php -f /var/www/NEXTCLOUDFOLDER/cron.php
 +
 +Il est possible de vérifier que la modification est bien enregistrée avec la commande suivante
 +
 +  crontab -u www-data -l
 +
 +Il est possible de vérifié que la tâche s'exécute en se rendant de nouveau sur la page **Paramètres de base** de la **page d'administration**
 +
 +====== Configuration du cache (Optionnel) ======
 +
 +La méthode la plus courant et la plus simple est d'utiliser Redis Server
 +
 +  Installer Redis Server et php-redis
 +
 +  apt install redis-server php-redis
 +
 +Éditer le fichier de configuration de redis-server
 +
 +  vi /etc/redis/redis.conf
 +
 +Dé-commenter et modifier les lignes suivantes
 +On enlève "/var" de la première ligne
 +On remplace 700 par 770 sur la seconde
 +
 +  unixsocket /run/redis/redis-server.sock
 +  unixsocketperm 770
 +
 +Dé-commenter et modifier également
 +On remplace 6379 par 0
 +
 +  port 0
 +
 +Ajouter l’utilisateur www-data (Utiliser par Nextcloud au groupe Redis)
 +
 +  usermod -a -G redis www-data
 +
 +Éditer le fichier de configuration de nextcloud pour y ajouter l'utilisation de Redis server comme cache
 +
 +  vi /var/www/NEXTCLOUDFOLDER/config/config.php
 +
 +Ajouter les lignes suivante en fin de fichier mais avant le dernier **");**"
 +
 +    'memcache.local' => '\\OC\\Memcache\\Redis',
 +    'memcache.distributed' => '\\OC\\Memcache\\Redis',
 +    'redis' =>
 +    array (
 +      'host' => '/run/redis/redis-server.sock',
 +      'port' => 0,
 +      'dbindex' => 0,
 +      'timeout' => 1.5,
 +    ),
 +
 +Démarrer redis-server
 +
 +  service redis-server start
 +
 +Redémarrer le serveur web Apache
 +
 +  service apache2 restart
 +
 +====== Notes ======
 +Emplacement des fichiers
 +
 +  /etc/apache2/sites-available/ <- Fichiers de configuration Vhosts
 +  /etc/apache2/sites-enabled/ <- Fichiers de configuration Vhosts actifs
 +  
 +====== Commandes utiles ======
 +
 +Statut Apache
 +
 +  systemctl status apache2
 +
 +Statut Let's Encrypt
 +
 +  systemctl status certbot.timer
 +
 +Test de renouvellement du certificat
 +
 +  certbot renew --dry-run
 +
 +Activer un site Apache
 +
 +  a2ensite nomduvhost.conf
 +ou
 +  ln -s /etc/apache2/conf-available/nomduvhost.conf /etc/apache2/conf-enabled/
  
  
Haut de page