Grimoire du pro - Section Nextcloud

Serveur virtuel
                        Hyperviseur : PROXMOX VE 7.2
                        OS : Ubuntu 20.04LTS
                        Mémoire : 4Go
                        Cpu : 1

Serveur physique
                        OS : Debian 11.1
                        Mémoire : 32Go
                        Cpu : AMD FX(tm)-8300 Eight-Core Processor
                        Disque dur : 3To Adaptec 5405 (4 x 1To WD Black)
                        Disque dur : 512Go Samsung SSD 850 PRO
                        Disque dur : 500Go Samsung SSD 850 EVO


sudo apt install apache2 mariadb-server libapache2-mod-php7.4

sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl

sudo apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip php7.4-ldap

sudo apt install unzip fail2ban net-tools

sudo a2enmod setenvif rewrite headers env dir mime ssl

sudo a2ensite default-ssl

sudo service apache2 start

Comptes SQL :

Dans ta voûte de mots de passe, ajoute 2 comptes pour SQL et générer leurs mots de passe.
  • root@localhost
  • nextcloud@localhost

Commandes bash :

sudo /etc/init.d/mysql start
sudo mysql -uroot -p

                        

Commandes SQL :

ALTER USER 'root'@'localhost' IDENTIFIED BY ' rootPassword ';

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY ' password ';

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';

FLUSH PRIVILEGES;

Charger et placer les fichiers de l'application

wget https://download.nextcloud.com/server/releases/nextcloud-23.0.0.zip
unzip nextcloud-23.0.0.zip
sudo cp -r nextcloud /var/www
touch /etc/apache2/sites-available/nextcloud.conf
chown -R www-data:www-data /var/www/nextcloud/

Configurations pour Apache

/etc/apache2/sites-available/000-default.conf :
<VirtualHost *:80>
    DocumentRoot /var/www/nextcloud
    ErrorLog ${APACHE_LOG_DIR}/nextcloud.error.lo
    CustomLog ${APACHE_LOG_DIR}/nextcloud.access.log combined
</VirtualHost>

/etc/apache2/sites-available/nextcloud.conf :
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>

Ajouter les lignes en bleu dans les fichiers


/etc/php/7.4/Apache2/php.ini
memory_limit = -1
[opcache]                                                                                                            
opcache.enable = 1                                                                                                   
opcache.interned_strings_buffer = 8                                                                                  
opcache.max_accelerated_files = 10000                                                                                
opcache.memory_consumption = 128                                                                                     
opcache.save_comments = 1                                                                                            
opcache.revalidate_freq = 1 /var/www/nextcloud

/etc/php/7.4/mods-available/apcu.ini
apc.enable_cli=1

Ajuster les valeurs en orange gras selon l'environement

/etc/php/7.4/Apache2/php.ini :

<?php                                                                                                                
$CONFIG = array (                                                                                                    
  'instanceid' => ' *************** ',                                                                                    
  'passwordsalt' => ' ******************************************* ',                                                                
  'secret' => ' ********************************************************************************** ',                                                    
  'trusted_domains' =>                                                                                               
  array (                                                                                                            
    0 => 'partage.chezlepro.ca',                                                                                     
    1 => 'autre.domaine,tld',                                                                                 
    2 => '10.10.10.10',                                                                                             
  ),                                                                                                                 
  'trusted_proxies' =>                                                                                               
  array (                                                                                                            
    0 => ' 10.10.10.10 ',                                                                                             
  ),                                                                                                                 
  'datadirectory' => '/var/www/nextcloud/data',                                                                      
  'dbtype' => 'mysql',                                                                                               
  'version' => '23.0.0.10',                                                                                          
  'overwrite.cli.url' => 'https://partage.chezlepro.ca',                                                             
  'dbname' => 'nextcloud',                                                                                           
  'dbhost' => 'localhost',                                                                                           
  'dbport' => '',  
  'dbtableprefix' => 'oc_',                                                                                          
  'mysql.utf8mb4' => true,                                                                                           
  'dbuser' => ' ********** ',                                                                                           
  'dbpassword' => ' ************************ ',                                                                                
  'installed' => true,                                                                                               
  'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',                                                    
  'mail_from_address' => 'nextcloud',                                                                                
  'mail_smtpmode' => 'smtp',                                                                                         
  'mail_sendmailmode' => 'smtp',                                                                                     
  'mail_domain' => 'chezlepro.ca',                                                                                   
  'mail_smtphost' => 'mx.chezlepro.ca',                                                                              
  'memcache.local' => '\OC\Memcache\APCu',                                                                           
  'default_phone_region' => 'CA',                                                                                    
);
CETTE PROCÉDURE COUVRE LES ÉLÉMENTS SUIVANTS :

  • application Nextcloud et sa configuration
  • fichiers de données des utilisateurs
  • base de données SQL
SAUVEGARDE
sudo -u www-data php occ maintenance:mode --on
rsync -Aavx nextcloud/ nextcloud-dirbkp_`date +"%Y%m%d"`/
mysqldump --single-transaction -h localhost -u root -p[rootPassword] nextcloud > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
sudo -u www-data php occ maintenance:mode --off

RESTAURATION
  • Il est assumé que les comptes existent et que leurs mots de passe sont connus
  • bien sûr tous ces comptes et ces mots de passe ont été sauvegardés dans une voûte
sudo service apache2 stop
sudo rsync -Aax nextcloud-dirbkp/ nextcloud/
sudo mysql -h localhost -u root -p[password] -e "DROP DATABASE nextcloud"
sudo mysql -h localhost -u root -p[password] -e "CREATE DATABASE nextcloud"
sudo mysql -h localhost -u root -p[password] -e "GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'"

Problèmes et solutions
MESSAGE D'ERREUR
"Impossible de synchroniser à cause d'une date de modification invalide"

SOLUTION TROUVÉE (PAS ENCORE TESTÉ)
How to fix the error invalid or negative modification date · nextcloud/desktop Wiki · GitHub

L'implémentation de Chezlepro.CA comprend un serveur de courriel Zimbra qui fournit le service d'annuaire LDAP.
L'intégration LDAP se fait via une extension nommée "LDAP user and group backend" et il suffit de l'activer via l'interface d'administration.

Une fois la liaison établie :
un compte Nextcloud est créé pour chaque entrée d'annuaire retournée par la requête LDAP
pour tous ces comptes, l'autentification des utilisateurs se fait via le service LDAP

Pour récupérer le mot de passe du compte ldap dans le serveur zimbra : 
zimbra@mx:~$zmlocalconfig -s zimbra_ldap_password ldap_master_url
zimbra_ldap_password = ********
ldap_master_url = ldap://mx.chezlepro.ca:389
zimbra_ldap_userdn = uid=zimbra,cn=admins,cn=zimbra

Config ldaps:// à faire...




POUR QUE L'URL DE VOTRE ID FÉDÉRÉ SOIT CONVIVIAL





Validations et certifications
Certificat d'authentification et chiffrement

DATE DU DERNIER SCAN :  2023-07-21

RÉSULTATS @ 2022-02-16




Conformité de l'implémentation

DATE DU DERNIER SCAN :  2024-02-12