2ème partie – Ubuntu 20.04 – Installation de Nextcloud 20 (Nginx, PHP7-FPM, MariaDB et SSL/TLS)
8 – Nom de domaine & virtual host
-
Créez le fichier suivant /etc/nginx/sites-available/nextcloud et modifiez les lignes en surbrillance en fonction de votre configuration :
upstream php-handler { server unix:/var/run/nextcloud.sock; } server { listen 80; listen [::]:80; server_name cloud.mondomaine.com; # Path to the root of your installation root /var/www/nextcloud/; # Add headers to serve security related headers add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; add_header Referrer-Policy no-referrer always; location = /robots.txt { allow all; log_not_found off; access_log off; } location = /.well-known/carddav { return 301 $scheme://$host:$server_port/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host:$server_port/remote.php/dav; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; location / { rewrite ^ /index.php$uri; } location ~ ^/.well-known/acme-challenge/* { allow all; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) { fastcgi_split_path_info ^(.+.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* .(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* .(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
-
Activez le virtual host :
sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud
-
La nouvelle configuration sera prise en compte après redémarrage des services Nginx et PHP-FPM :
sudo systemctl restart nginx.service sudo systemctl restart php7.4-fpm.service
9 – SSL/TLS avec Let’s Encrypt
Let’s Encrypt est une autorité de certification libre, automatisée et ouverte. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique SSL/TLS au moyen d’un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l’installation et le renouvellement des certificats pour la sécurisation des sites internet. Depuis sa création, Let’s Encrypt a livré plus de 100 millions de certificats.
9.1 – Installation
Installez les paquets software-properties-common et certbot :
sudo apt-get install -y software-properties-common
sudo apt-get install -y certbot
9.2 – Génération des certificats
Let’s Encrypt permet de générer de différentes façons plus ou moins automatisées un certificat. La méthode standalone permet de générer simplement un certificat. En revanche, celle-ci demande d’arrêter le serveur Nginx et ceci est valable à chaque renouvellement dudit certificat. Il existe aussi des plugins Apache et Nginx entièrement automatisés. Ces plugins mettent à jour automatiquement la configuration des virtual hosts mais le plugin Nginx est encore expérimental. Dans cet article, nous recommandons d’utiliser le plugin webroot pour Nginx qui permet de générer et renouveler son certificat sans interrompre le serveur Nginx.
Le plugin webroot crée un fichier temporaire /var/www/nextcloud/.well-known/acme-challenge dans le dossier racine de votre Nextcloud, celui-ci permettra aux serveurs de Let’s Encrypt de valider votre certificat en appelant ce fichier temporaire.
-
Générez votre certificat en remplaçant email@mondomaine.com et cloud.mondomaine.com par vos informations personnelles :
sudo certbot certonly --webroot -w /var/www/nextcloud --agree-tos --no-eff-email --email email@mondomaine.com -d cloud.mondomaine.com --rsa-key-size 4096 Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator webroot, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for cloud.mondomaine.com Using the webroot path /var/www/nextcloud for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/cloud.mondomaine.com/fullchain.pem. Your key file has been saved at: /etc/letsencrypt/live/cloud.mondomaine.com/privkey.pem Your cert will expire on 20XX-XX-XX. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Vous obtiendrez 4 fichiers dans le répertoire /etc/letsencrypt/live/cloud.mondomaine.com :
- cert.pem : le certificat de votre domaine cloud.mondomaine.com
- chain.pem : le certificat Let’s Encrypt
- fullchain.pem : les certificats cert.pem et chain.pem combinés
- privkey.pem : la clé privée du certificat.
-
SSL/TLS utilise un système de chiffrement asymétrique (comme RSA ou Diffie-Hellman) afin de sécuriser les échanges de vos flux. Par défaut, Nginx utilise une clé de 1048 bits. En augmentant la longueur de la clé à 4096 bits, vous augmenterez ainsi la sécurité de votre protocole SSL/TLS.Générez une nouvelle clé Diffie-Hellman (DH) de 4096 bits et attribuez-lui un minimum de permissions. La première commande peut prendre plusieurs heures :
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096 sudo chmod 600 /etc/ssl/certs/dhparam.pem
-
Ajoutez ou modifiez les lignes en surbrillance dans votre virtual host (/etc/nginx/sites-available/nextcloud) en remplaçant les chemins des directives ssl_certificate, ssl_certificate_key, ssl_trusted_certificate et ssl_dhparam par l’emplacement de vos certificats et de la clé DH précédemment générés :
upstream php-handler { server unix:/var/run/nextcloud.sock; } server { listen 80; listen [::]:80; server_name cloud.mondomaine.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name cloud.mondomaine.com; # Path to the root of your installation root /var/www/nextcloud/; ssl_certificate /etc/letsencrypt/live/cloud.mondomaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.mondomaine.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/cloud.mondomaine.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 1440m; ssl_buffer_size 8k; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; # Add headers to serve security related headers add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; add_header Referrer-Policy no-referrer always; location = /robots.txt { allow all; log_not_found off; access_log off; } location = /.well-known/carddav { return 301 $scheme://$host:$server_port/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host:$server_port/remote.php/dav; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; location / { rewrite ^ /index.php$uri; } location ~ ^/.well-known/acme-challenge/* { allow all; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) { fastcgi_split_path_info ^(.+.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* .(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* .(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
-
Rechargez votre configuration Nginx :
sudo systemctl reload nginx.service
9.3 – Renouvellement automatique du certificat
Les certificats délivrés par Let’s Encrypt sont valides 90 jours. Une tâche planifiée permettant de renouveler l’ensemble des certificats présents sur votre serveur est fournie avec le paquet certbot. Celle-ci est exécutée deux fois par jour et les renouvelle si et seulement si vos certificats expirent dans un délai inférieur à 30 jours.
-
Testez si le renouvellement automatique est fonctionnel avec la commande suivante :
sudo certbot renew --dry-run
10 – HTTP2
Je vous conseille vivement d’activer le nouveau protocole HTTP2 qui augmentera la sécurité et la rapidité de votre Nextcloud.
HTTP2 permet notamment :
- la compression des headers des requêtes et des réponses qui permet de réduire la bande passante lorsque les headers (comme les cookies) sont similaires
- le multiplexage des requêtes au serveur consistant à faire passer de multiples informations via un seul tuyau de transmission. Ainsi, on économise les multiples connexions entre le client et le serveur. Les requêtes, quant à elles, sont effectuées simultanément par le navigateur. Les requêtes ne se suivent donc plus les unes derrière les autres (HTTP1) et les plus prioritaires (CSS par exemple) ne sont plus bloquées par les moins prioritaires (images par exemple)
- le push des ressources du serveur au navigateur. Désormais, le serveur pourra envoyer l’ensemble des ressources référencées dans une même page (CSS, JS…), avant même que le navigateur n’ait analysé celle-ci.
L’activation du protocole HTTP2 est très simple et consiste en l’ajout de la directive http2 dans votre virtual host :
upstream php-handler {
server unix:/var/run/nextcloud.sock;
}
server {
listen 80;
listen [::]:80;
server_name cloud.mondomaine.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.mondomaine.com;
# Path to the root of your installation
root /var/www/nextcloud/;
...
Une fois la modification effectuée, n’oubliez pas de recharger votre configuration Nginx :
sudo systemctl reload nginx.service
11 – Nextcloud
Vous risquez d’obtenir un timeout lors du premier lancement de Nextcloud dans votre navigateur (dû aux processus en arrière-plan permettant la création du filesystem pour votre utilisateur, la création du schéma de la base données Nextcloud, etc.). Il est donc nécessaire d’augmenter le temps de réponse dans la configuration de PHP-FPM et Nginx.
-
Éditez le fichier /etc/php/7.4/fpm/pool.d/nextcloud.conf et ajoutant le paramètre request_terminate_timeout (valeur en secondes) :
[nextcloud] listen = /var/run/nextcloud.sock listen.owner = nextcloud listen.group = www-data user = nextcloud group = www-data pm = ondemand pm.max_children = 56 pm.process_idle_timeout = 60s pm.max_requests = 500 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp request_terminate_timeout = 3600
-
Éditez le virtual host /etc/nginx/sites-available/nextcloud et ajoutant le paramètre fastcgi_read_timeout (valeur en secondes) :
upstream php-handler { server unix:/var/run/nextcloud.sock; } server { listen 80; listen [::]:80; server_name cloud.mondomaine.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name cloud.mondomaine.com; # Path to the root of your installation root /var/www/nextcloud/; ssl_certificate /etc/letsencrypt/live/cloud.mondomaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.mondomaine.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/cloud.mondomaine.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 1440m; ssl_buffer_size 8k; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; # Add headers to serve security related headers add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;'; add_header Referrer-Policy no-referrer always; location = /robots.txt { allow all; log_not_found off; access_log off; } location = /.well-known/carddav { return 301 $scheme://$host:$server_port/remote.php/dav; } location = /.well-known/caldav { return 301 $scheme://$host:$server_port/remote.php/dav; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Enable gzip but do not remove ETag headers gzip on; gzip_vary on; gzip_comp_level 4; gzip_min_length 256; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; location / { rewrite ^ /index.php$uri; } location ~ ^/.well-known/acme-challenge/* { allow all; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; } location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) { fastcgi_split_path_info ^(.+.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass php-handler; fastcgi_intercept_errors on; fastcgi_request_buffering off; fastcgi_read_timeout 3600; } location ~ ^/(?:updater|ocs-provider)(?:$|/) { try_files $uri/ =404; index index.php; } # Adding the cache control header for js and css files # Make sure it is BELOW the PHP block location ~* .(?:css|js|woff|svg|gif)$ { try_files $uri /index.php$uri$is_args$args; add_header Cache-Control "public, max-age=15778463"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; # Optional: Don't log access to assets access_log off; } location ~* .(?:png|html|ttf|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
La nouvelle configuration sera prise en compte après redémarrage des services Nginx et PHP-FPM :
sudo systemctl restart nginx.service
sudo systemctl restart php7.4-fpm.service
Lancez votre navigateur et rendez-vous à l’adresse suivante : http://cloud.mondomaine.com/.
Configurez votre compte administrateur et les informations de votre base de données nécessaires à Nextcloud :
Vérifiez la force de votre protocole SSL/TLS en vérifiant votre Nextcloud sur SSL Labs. Avec une telle configuration, vous devriez obtenir un A+.
12 – Améliorer les performances de votre Nextcloud avec le cache
12.1 – Cache PHP : OPcache
OPcache (qui signifie Optimizer Plus Cache) est introduit depuis la version 5.5.0 de PHP. Il sert à cacher l'opcode de PHP, c’est-à-dire les instructions de bas niveau générées par la machine virtuelle PHP lors de l’exécution d’un script. Autrement dit, le code pré-compilé est stocké en mémoire.
La suite est réservée aux membres. Déjà membre ? Se connecter
Accédez à l'intégralité des contenus de HowTo Wared en illimité.
Soutenez la publication de tutoriels et une rédaction indépendante.
Obtenez des réductions (VPN, plugins Nextcloud, Wordpress, ...)
12.2 – Cache de données : APCu & Redis
APCu permet notamment de mettre en cache les variables PHP et de les stocker en mémoire vive. Redis est un système de gestion de base de données NoSQL avec un système de clef-valeur scalable (s'adapte à la charge). Une des principales caractéristiques de Redis est de conserver l'intégralité des données
La suite est réservée aux membres. Déjà membre ? Se connecter
Accédez à l'intégralité des contenus de HowTo Wared en illimité.
Soutenez la publication de tutoriels et une rédaction indépendante.
Obtenez des réductions (VPN, plugins Nextcloud, Wordpress, ...)
13 – Améliorer la sécurité de votre Nextcloud
Développé en langage Python, Fail2Ban est un outil permettant d'analyser des fichiers de logs et de déclencher des actions si certaines activités suspectes sont détectées. Fail2ban est capable de détecter des connexions non autorisées et de bannir (via iptables) l'adresse IP de l'attaquant
La suite est réservée aux membres. Déjà membre ? Se connecter
Accédez à l'intégralité des contenus de HowTo Wared en illimité.
Soutenez la publication de tutoriels et une rédaction indépendante.
Obtenez des réductions (VPN, plugins Nextcloud, Wordpress, ...)
14 – Suivre les recommandations de Nextcloud
Votre instance Nextcloud effectue automatiquement des vérifications sur la sécurité et la configuration. Il est possible de consulter les avertissements liés à votre configuration dans les paramètres de votre Nextcloud (Administration → Vue d’ensemble) :
14.1 – Augmenter la mémoire PHP
-
Éditez le fichier /etc/php/7.4/fpm/php.ini et modifiez la valeur de la variable memory_limit (ligne 409) :
memory_limit=512M
-
Redémarrez le service php-fpm :
sudo systemctl restart php7.4-fpm.service
14.2 – Création d’index supplémentaires
Cette opération permet d’améliorer la vitesse des requêtes SQL et par conséquent la navigation, l’affichage et la recherche de vos fichiers.
-
Connectez-vous sous l’utilisateur nextcloud et placez-vous à la racine du répertoire de Nextcloud :
su nextcloud
cd /var/www/nextcloud
-
Lancez une nouvelle indexation :
php occ db:add-missing-indices
14.3 – Modification du type de données dans les tables Nextcloud
Certaines colonnes de la base de données n’ont pas été converties automatiquement en big int. Il est nécessaire de réaliser cette opération manuellement.
-
Toujours connecté avec l’utilisateur nextcloud et dans le répertoire /var/www/nextcloud, lancez la conversion :
php occ db:convert-filecache-bigint
Vous pouvez maintenant recharger la page et constater que la sécurité et la configuration suivent désormais les recommandations officielles :
15 – Installation de la suite Collabora Online
Collabora Online est une puissante suite bureautique en ligne basée sur LibreOffice avec édition collaborative. Elle prend en charge tous les principaux documents, formats de feuille de calcul et de présentation, et fonctionne avec tous les navigateurs modernes...
La suite est réservée aux membres. Déjà membre ? Se connecter
Accédez à l'intégralité des contenus de HowTo Wared en illimité.
Soutenez la publication de tutoriels et une rédaction indépendante.
Obtenez des réductions (VPN, plugins Nextcloud, Wordpress, ...)
16 – Accéder à votre Nextcloud à partir de votre réseau local
Si votre Nextcloud est hébergé chez vous, l’accès à votre cloud via votre réseau local peut être intéressant. Nous allons créer un nom de domaine accessible uniquement à partir de votre réseau local.
-
Ajoutez un nom de domaine dans le fichier /etc/hosts pointant vers votre réseau local (127.0.0.1) :
127.0.0.1 localhost 127.0.0.1 cloud.local
-
Ajoutez le nom de domaine dans le virtual host de votre Nextcloud (/etc/nginx/sites-available/nextcloud) :
upstream php-handler { server unix:/var/run/nextcloud.sock; } server { listen 80; listen [::]:80; server_name cloud.mondomaine.com cloud.local; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name cloud.mondomaine.com cloud.local; ...
-
Rechargez la configuration Nginx :
sudo systemctl reload nginx.service
-
Connectez-vous sous l’utilisateur nextcloud afin de pouvoir modifier le fichier de configuration de votre Nextcloud :
su nextcloud
-
Ajoutez la ligne suivante dans le fichier de configuration Nextcloud (/var/www/nextcloud/config/config.php) :
<!--?php $CONFIG = array ( 'instanceid' =--> '*****secret*****', 'passwordsalt' => '*****secret*****', 'secret' => '*****secret*****', 'trusted_domains' => array ( 0 => 'cloud.mondomaine.com', 1 => 'cloud.local' ), 'datadirectory' => '/var/www/nextcloud/data', 'overwrite.cli.url' => 'http://cloud.mondomaine.com', 'dbtype' => 'mysql', 'version' => '20.0.2.0', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => 'nextcloud', 'dbpassword' => '*****secret*****', 'installed' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), 'loglevel' => 2, 'logtimezone' => 'Europe/Paris', 'logfile' => '/var/log/nextcloud/nextcloud.log', 'log_rotate_size' => 104857600 );
-
Lancez votre navigateur et rendez-vous à l’adresse suivante : cloud.local
Cette adresse ne sera accessible qu’au sein de votre réseau local.
17 – Questions et problèmes rencontrés
Où se trouvent mes fichiers ?
Les fichiers créés dans Nextcloud sont classés par utilisateur et se trouvent dans /var/www/nexcloud/data/[USER]/files.
Le téléchargement de gros fichiers échoue au bout d’une heure précisément…
Reprenez la section 11 et augmentez la valeur du paramètre request_terminate_timeout dans le fichier /etc/php/7.4/fpm/pool.d/nextcloud.conf et celle du paramètre fastcgi_read_timeout dans le fichier /etc/nginx/sites-available/nextcloud.
Lorsque je dépose des fichiers par FTP ou SMB dans le répertoire de mon Nextcloud, les fichiers ne sont pas visibles dans l’interface web Nextcloud.
Pour éviter des accès disques permanents, Nextcloud sauvegarde l’emplacement de vos fichiers en base de données. Si pour ajouter un fichier, vous utilisez un autre moyen que l’interface web, Nextcloud doit être notifié. Pour cela, vous disposez de deux solutions :
-
Solution 1 : forcer la vérification du filesystem à chaque requête. Cette méthode peut impacter les performances de votre Nextcloud.
Connecté sous l’utilisateur nextcloud, ajoutez la ligne suivante dans le fichier de configuration Nextcloud (/var/www/nextcloud/config/config.php) :
<!--?php $CONFIG = array ( 'instanceid' =--> '*****secret*****', 'passwordsalt' => '*****secret*****', 'secret' => '*****secret*****', 'trusted_domains' => array ( 0 => 'cloud.mondomaine.com', 1 => 'cloud.local' ), 'datadirectory' => '/var/www/nextcloud/data', 'overwrite.cli.url' => 'http://cloud.mondomaine.com', 'dbtype' => 'mysql', 'version' => '20.0.2.0', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => 'nextcloud', 'dbpassword' => '*****secret*****', 'installed' => true, 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), 'loglevel' => 2, 'logtimezone' => 'Europe/Paris', 'logfile' => '/var/log/nextcloud/nextcloud.log', 'log_rotate_size' => 104857600, 'filesystem_check_changes' => 0, );
N’oubliez pas d’ajouter une virgule à la fin de la ligne précédente !
-
Solution 2 : scanner les fichiers avec la commande occ.
Connecté sous l’utilisateur nextcloud et dans le répertoire /var/www/nextcloud, exécutez la commande suivante :
php occ files:scan
Cette solution implique que la commande occ doit être exécutée à chaque modification de votre arborescence de fichiers. Il est tout à fait possible d’automatiser l’opération et de choisir une fréquence d’exécution en créant une tâche cron.
Nextcloud sur Android…
Découvrez l’excellente application officielle Nextcloud sur Android qui vous permettra de synchroniser et de partager vos fichiers sur votre mobile.
Ubuntu Server 20.04 LTSNginx 1.18.0
PHP7-FPM 7.4.3
MariaDB 10.3.25
Nextcloud 20.0.2
Fail2ban 0.11.1
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!