« NextCloud » : différence entre les versions

De Le Wiki de Lug
Aller à la navigation Aller à la recherche
Ligne 346 : Ligne 346 :
Puis installer "'''Antivirus for files'''" depuis [[#Application|la GUI de l'administrateur]].
Puis installer "'''Antivirus for files'''" depuis [[#Application|la GUI de l'administrateur]].
Voila!
Voila!
== Collabora Online ==
=== Client ===
On installe l'application "'''Collabora Online'''" via [[#Application|la GUI de l'administrateur]].
=== Serveur ===
[https://www.linuxbabe.com/ubuntu/integrate-collabora-onlinenextcloud-without-docker Source] [https://www.collaboraoffice.com/code/linux-packages/ Autre source]
Pour des performances optimales nous allons installer le serveur nativement, il sera joignable via le reverse-proxy NGINX :
== Support de Stockages Externes ==
== Support de Stockages Externes ==


Ligne 364 : Ligne 357 :
Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :
Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :
  # apt install smbclient libsmbclient
  # apt install smbclient libsmbclient
== Collabora Online ==
=== Client ===
On installe l'application "'''Collabora Online'''" via [[#Application|la GUI de l'administrateur]].
=== Serveur ===
[https://www.linuxbabe.com/ubuntu/integrate-collabora-onlinenextcloud-without-docker Source] [https://www.collaboraoffice.com/code/linux-packages/ Autre source]
Pour des performances optimales nous allons installer le serveur nativement, il sera joignable via le reverse-proxy NGINX :

Version du 14 avril 2021 à 14:57

LXC Ubuntu 20.04

Installation Serveur

Source autre source

# apt update && apt upgrade

Archive NextCloud

Page de téléchargement

# apt install unzip
# cd /tmp/
# wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip
# unzip nextcloud-21.0.1.zip -d /var/www/
# rm nextcloud-21.0.1.zip
# chown -R www-data. /var/www/nextcloud

Serveur SQL MariarDB

Installation :

# apt install mariadb-server

On lance le script pour attribuer un mot de passe root, virer l'utilisateur anonyme etc.

# mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
... Success!

On créé la base de donnée pour NextCloud :

# mysql -U
MariaDB [(none)]> create database nextcloud;
MariaDB [(none)]> create user nextcloud@localhost identified by 'motdepasse';
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost IDENTIFIED BY 'motdepasse';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

Installation de Apache2 & PHP7.4

# apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

On créé le vhost local :

# vi /etc/apache2/sites-available/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

On active le site :

# a2ensite nextcloud.conf

On active quelques modules :

# a2enmod rewrite
# a2enmod headers
# a2enmod env
# a2enmod dir
# a2enmod mime

On active SSL :

# a2enmod ssl
# a2ensite default-ssl
# systemctl reload apache2

Configuration de NextCloud

On se rend sur l'adresse https://IP_NEXCLOUD/nextcloud/ et on rempli les champs indiqués puis ont clique sur "Terminer l'installation".

Page d'installation NextCloud

Si message d'erreur pas de panique, on retourne sur https://IP_NEXCLOUD/nextcloud/ pour vérifier que tout s'est bien déroulé.

Page de première connexion.

Configuration Reverse-Proxy NGINX

VHost NextCloud

Exemple de vhost pour NextCloud :

server {
listen 80;
    listen [::]:80;
    server_name     nextcloud.exemple.com;
   # return 404;
    return 301 https://$host$request_uri;
}

server {
server_name     nextcloud.exemple.com;
    error_page 403  https://nextcloud.exemple.com;

    location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;
            proxy_pass https://IP_SERVEUR_NEXTCLOUD/nextcloud/;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot


    ssl_certificate /etc/letsencrypt/live/nextcloud.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.exemple.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    add_header Strict-Transport-Security "max-age=31536000" always;
    ssl_trusted_certificate /etc/letsencrypt/live/nextcloud.exemple.com/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

    location ^~ /.well-known {
        # The following 6 rules are borrowed from `.htaccess`

        location = /.well-known/carddav     { return 301 /remote.php/dav/; }
        location = /.well-known/caldav      { return 301 /remote.php/dav/; }
        # Anything else is dynamically handled by Nextcloud
        location ^~ /.well-known            { return 301 /index.php$uri; }

        try_files $uri $uri/ =404;
    }

}

Configuration de Nextcloud

On modifie le fichier de configuration de NextCloud pour qu'il accepte le nom de domaine et le reverse proxy :

NextCloud ~# vi /var/www/nextcloud/config/config.php
...
'trusted_domains' =>
 array (
         0 => '12.34.56.789',
         1 => 'nextcloud.exemple.com',
 ),
 'trusted_proxies' =>
 array (
         0 => 'IP_PROXY',
 ),
 'overwritewebroot' => '/',
...

Post-Installation

NextCloud est maintenant fonctionnel, mais si vous vous rendez, depuis la page de l'administrateur, sur Administrateur -> Paramètres -> Vue d'ensemble .

Accès du menu "Vue d'ensemble"

Il reste quelques réglages à effectués. (3 si vous avez suivie ce tutorial).

Message d'erreurs post installation

(optionnel) Jolie URL

# vi /var/www/nextcloud/config/config.php
...
  'installed' => true,
  'overwrite.cli.url' => 'https://nextcloud.exemple.com/nextcloud',
  'htaccess.RewriteBase' => '/nextcloud',
);
# cd /var/www/nextcloud/
# sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess

Limite de mémoire PHP à 512 Mo

# vi /etc/php/7.4/apache2/php.ini
...
memory_limit = 512M
...
# apache2ctl graceful

Préfixe de région par défaut

# vi /var/www/nextcloud/config/config.php
...
  'htaccess.RewriteBase' => '/nextcloud',
  'default_phone_region' => 'FR',
);

Memcache via Redis & APCu

source

# apt install redis-server php-redis php-apcu
# vi /etc/redis/redis.conf

Il faut activer les deux ligne suivantes en supprimant le "#" devant + modification des droits :

unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770

On désactive l'écoute TCP :

port 0
# usermod -a -G redis www-data
# systemctl restart redis
# systemctl restart apache2

Enfin, on édite Nextcloud pour utiliser Redis :

# vi /var/www/nextcloud/config/config.php
...
  'default_phone_region' => 'FR',
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.locking' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'redis' => [
       'host'     => '/var/run/redis/redis-server.sock',
       'port'     => 0,
       'timeout'  => 1.5,
  ],
);

Test final

On retoune dans le menu "Vue d'ensemble", normalement tous les tests devraient être validés :

Satisfaisant non ? :)

Comme suggéré on se rend sur ce site pour tester le niveau de sécurité de notre serveur NextCloud, si tout va bien vous devriez obtenir ceci :

une note comme j'aurais aimé en avoir à l'école.

Crontab

Source

# vi /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Puis

# vi /etc/systemd/system/nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

On active les scripts :

# systemctl enable --now nextcloudcron.timer

On peut ensuite se rendre dans "Paramètres" -> "Paramètres de base" pour vérifier que le changement est prise en compte :

C'est par ici Activation confirmé

Astuces de personnalisation

Fichiers par défaut

Lorsque l'on créé un nouvel utilisateur, Nextcloud peuplera le nouveau dossier personnel avec le contenu de "/var/www/nextcloud/core/skeleton". Par défaut tous les utilisateurs se retrouveront donc avec diverse images et fichiers d'exemple sans intérêt.

Désativation du modèle de création

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'skeletondirectory' => '',
 'memcache.locking' => '\OC\Memcache\Redis',
...

Modèle de création personnalisé

Création du dossier pour le modèle :

# mkdir /var/www/nextcloud/mon_model

Ensuite on peut créer/copier les dossiers/fichiers que l'on souhaite à l'intérieur. Puis l'on attribue les droits au dossier et son contenu :

# chown -R www-data. /var/www/nextcloud/mon_model

Enfin, on active le nouveau dossier :

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'skeletondirectory' => '/var/www/nextcloud/mon_model',
 'memcache.locking' => '\OC\Memcache\Redis',
...

Application

Les applications s'installent via la GUI de l'administrateur :

Par ici les apps!

Certaines demandent cependant des interventions supplémentaires.

Antivirus ClamAV

Source

Il faut simplement installer l'antivirus sur le serveur :

# apt-get install clamav clamav-daemon

Puis installer "Antivirus for files" depuis la GUI de l'administrateur. Voila!

Support de Stockages Externes

Il faut activer "External storage support" via la GUI de l'administrateur. Un nouveau menu "Stockages Externes" apparaitra dans la console d'administration de l'administrateur.

Menu Stockages Externes

Partages CIFS/Samba

source Autre source

Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :

# apt install smbclient libsmbclient

Collabora Online

Client

On installe l'application "Collabora Online" via la GUI de l'administrateur.

Serveur

Source Autre source

Pour des performances optimales nous allons installer le serveur nativement, il sera joignable via le reverse-proxy NGINX :