====== Nextcloud ======
Nous avons installé une instance Nextcloud, disponible à cette adresse : [[https://kloud.khaganat.net]]. Il est actuellement nécessaire de vous créer un compte à cette adresse, et de demander à un admin l'accès au dossier partagé "Khaganat".
Vous pouvez y accéder directement via le web, mais vous pouvez aussi installer un client. Dans ce cas, il suffira de modifier un dossier de votre ordinateur pour que ce soit partagé avec tout le monde.
Nextcloud est un fork de Owncloud, que nous avons privilégié.
Mais je n'ai pas changé les captures d'écran, parce que trop la flemme et en plus en dehors du nom, c'est tout pareil.
Edit au 23/09/2020 : ça serait bien de refaire ces captures, quand même... Car Nextcloud a évolué.
===== Côté utilisatrice =====
==== Installer le client Nextcloud ====
Nextcloud est à présent dans la plupart des dépôts sur Linux. Vous trouverez aussi toutes les possibilités sur [[https://nextcloud.com/install/#install-clients|la page des clients de Nextcloud]]. Enfin, vous pouvez aussi installer le client owncloud, il est encore compatible avec nextcloud (mais pour combien de temps ?).
Faites simplement une recherche dans vos sources avec le mot-clé "nextcloud" ou "owncloud".
Pour les autres OS (**Mac**, **Windows**), rendez-vous sur https://owncloud.com/download/#desktop-clients, choisissez votre système d'exploitation et cliquez sur "Download". Installez le logiciel.
==== Connecter le client à Khaganat ====
Lors de la première installation, Nextcloud devrait vous demander de paramétrer un serveur auquel se connecter. Si ce n'est pas le cas, faites un clic droit sur l'icone dans le systray, sélectionnez //Paramètres// puis dans le menu déroulant //Comptes//, choisissez //Ajouter un nouveau//.
Mettez comme adresse : ''https://kloud.khaganat.net/''
{{ :fr:owncloud2.png?nolink |Mettez comme adresse : ''https://kloud.khaganat.net''}}
Entrez votre identifiant et votre mot de passe :
{{ :fr:owncloud3.png?nolink |Entrez votre identifiant et votre mot de passe :}}
Dans ''Dossier local'', choisissez quel dossier sur votre ordinateur se synchronisera avec le Nextcloud de Khaganat. Choisissez un dossier vide...
Vous pouvez aussi choisir de synchroniser uniquement certains dossiers du serveur sur votre ordinateur
{{ :fr:owncloud4.png?nolink |Quel dossier va se synchroniser ?}}
==== Partager un dossier ====
Passez par l'interface web, c'est plus facile.
Sélectionnez le dossier ou le fichier que vous souhaitez partager. Cliquez sur l'icône de partage. Dans la fenêtre qui s'ouvre, écrivez "Khaganat" pour partager avec les membres de Khaganat. Vous pouvez gérer les droits d'écriture et de modification si vous êtes le créateur du dossier.
{{ :fr:owncloud5.png?direct&2700 | Cliquez pour agrandir}}
===== Installation du serveur Nexcloud =====
==== LEMP ====
Installation:
apt install nginx
apt install php php-fpm php-curl php-cli php-gd php-iconv php-xsl php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-apcu php-memcached php-redis redis-server ffmpeg sudo php-bcmath php-gmp
apt install postgresql postgresql-contrib php-pgsql
Configuration:
nano /etc/php/7.*/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
clear_env = no
nano /etc/php/7.*/fpm/php.ini
memory_limit = 512M
upload_max_filesize = 10240M
date.timezone = Europe\Paris
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
==== Nexcloud ====
Outils:
apt install wget unzip p7zip p7zip-full
Téléchargement de Nextcloud
cd /var/www
wget https://download.nextcloud.com/server/releases/latest.zip
7z x latest.zip
chown -R www-data:www-data /var/www/nextcloud/
Database:
sudo -u postgres createuser -P kloud_user
sudo -u postgres createdb -O kloud_user kloud_prod
==== Nginx ====
=== Conf ===
nano /etc/nginx/site-available/nextcloud
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php/php7.3-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name kloud.khaganat.net;
# enforce https
return 301 https://kloud.khaganat.net:443$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name kloud.khaganat.net;
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
# NOTE: some settings below might be redundant
ssl_certificate /etc/letsencrypt/live/kloud.khaganat.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kloud.khaganat.net/privkey.pem;
# Add headers to serve security related headers
# Before enabling Strict-Transport-Security headers please read into this
# topic first.
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Path to the root of your installation
root /var/www/nextcloud;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
# The following rule is only needed for the Social app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
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;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
location / {
rewrite ^ /index.php;
}
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\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
# Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
# Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js, css and map files
# Make sure it is BELOW the PHP block
location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
# Before enabling Strict-Transport-Security headers please read into
# this topic first.
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
#
# WARNING: Only add the preload option once you read about
# the consequences in https://hstspreload.org/. This option
# will add the domain to a hardcoded list that is shipped
# in all major browsers and getting removed from this list
# could take several months.
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
# Optional: Don't log access to assets
access_log off;
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
}
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enable
=== Certificat ===
apt install certbot
service nginx stop
certbot certonly --standalone -d kloud.kagouille.fr
service nginx start
Lancer votre Nextcloud sur votre navigateur
==== Cache ====
Ajouter le cache :
nano /var/www/nextcloud/config/config.php
'memcache.local' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
'timeout' => 0,
'dbindex' => 0,
),
source : https://docs.nextcloud.com/server/latest/admin_manual/installation/
==== Voir aussi ====
Très bon tuto pour une super install ici : [[https://riegers.in/nextcloud-installation-guide-debian-10/]]. Malheureusement en anglais, donc en extraire les choses importantes pour nous serait un plus ?
==== Personnalisation ====
=== Fichiers par défaut ===
Lorsqu'un nouvel utilisateur est créé, il a automatiquement certains documents dans son dossier personnel. Ces documents viennent du dossier ''core/skeleton'' et sont copiés lors de la création (ouais, c'est même pas des liens symboliques). Ils ont peu d'intérêts et prennent de la place pour rien, d'autant que la plupart des utilisateurs n'osent pas y toucher par peur de casser quelque chose.
Autant changer ça !
Modifier le contenu du dossier est une solution temporaire, mais ce sera remis à zéro à chaque mise à jour. Une solution plus durable consiste à changer le dossier à prendre en compte pour le squelette dans le placard.
Doc officielle : https://docs.nextcloud.com/server/20/admin_manual/configuration_files/default_files_configuration.html?highlight=skeleton
Résumé en français : modifiez le fichier ''config/config.php'' pour ajouter/modifier cette ligne, en indiquant le chemin de votre nouveau squelette :
'skeletondirectory' => '/path/to/nextcloud/core/skeleton'
Laissez vide si vous ne voulez pas de squelette :
'skeletondirectory' => ''
La variable ''{lang}'' peut être pour la langue de l'utilisateur, afin de lui servir des fichiers dans son langage. Si le dossier n'existe pas, il prendra alors la langue par défaut (par exemple anglais, mais ça dépend de vos paramètres généraux).
À tester !
'skeletondirectory' => '/path/to/nextcloud/core/skeleton/en/'
=== Changer la langue par défaut ===
Source : https://docs.nextcloud.com/server/20/admin_manual/configuration_server/language_configuration.html
Nextcloud devrait détecter la langue du navigateur pour décider de l'interface à utiliser, mais dans la pratique c'est très aléatoire pour les utilisateurs connectés. Si votre cloud s'adresse à une seule communauté linguistique, le mieux est de paramétrer la langue par défaut des utilisateurs, en ajoutant/changeant les ligne suivantes dans le fichier ''config/config.php'' :
'default_language' => 'fr',
'default_locale' => 'fr_FR',
{{tag>Tutoriel Outils Obsolète brouillon}}