Ceci est une ancienne révision du document !
Table des matières
Retour à nextcloud.
Installation manuelle de Nextcloud sur un serveur web
C'est la version la plus "sportive" de l'installation de Nextcloud mais qui vous donnera une vue et un contrôle complet. Elle reste d'ailleurs assez simple:
Prérequis
- vous devez avoir sur votre serveur web existant un PHP en version 7.2 au moins
- par exemple: Debian 10 (PHP 7.3), mais pas Debian 9.
- avec plusieurs versions pensez à
update-alternatives --set php /usr/bin/php7.3
- il vous faudra aussi Mysql / MariaDB (ou sqlite pour une version "légère")
Téléchargement
Repérez le lien de téléchargement depuis sur la page officielle, via Details and download options
et un clic droit sur le .tar.bz2
.
Sur votre serveur, on récupère l'archive et on la décompresse:
cd /tmp/ wget https://download.nextcloud.com/server/releases/nextcloud-16.0.4.tar.bz2 # lien ci-dessus tar xvjf nextcloud-*.tar.bz2 && rm nextcloud-*.tar.bz2
# Réglage de quelques droits chown -R www-data:www-data nextcloud/ find nextcloud/ -type d -exec chmod 755 {} \; find nextcloud/ -type f -exec chmod 644 {} \;
# Installation en tant que un sous-domaine dédié (préférable): mv /tmp/nextcloud /var/www/share.tecrd.com
# Mais on pourrait aussi l'installer dans un sous-dossier d'un site existant: #mv /tmp/nextcloud /var/www/www.tecrd.com/nextcloud
Configuration du service web
Si l'on a opté pour un sous-domaine dédié, de type https://share.tecrd.com voici les configurations apache et nginx. Pensez bien sûr ensuite à activer le fichier de configuration (e2enssite) et relancer le serveur web.
Configuration nextcloud pour Apache
PHP doit être activé (a2enmod php…)
à adapter, non testé!
Fichier à mettre dans votre /etc/apache2/sites-available/share.tecrd.com.conf
:
<VirtualHost *:80> DocumentRoot /var/www/share.tecrd.com/ ServerName share.tecrd.com <Directory /var/www/share.tecrd.com/> Options +FollowSymlinks AllowOverride All Require all granted <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/share.tecrd.com/ SetEnv HTTP_HOME /var/www/share.tecrd.com/ </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Configuration nextcloud pour NGINX
On utilise ci-dessous un fastcgi_pass php-handler
à base de socket, contrairement à la configuration mentionnée ici:
Fichier à mettre dans votre /etc/nginx/sites-available/share.tecrd.com
:
server { server_name share.tecrd.com ; root /home/www/share.tecrd.com; index index.html index.php; 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; } client_max_body_size 512M; fastcgi_buffers 64 4K; 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$request_uri; } 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)(\/.*|)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param HTTPS on; fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; #####fastcgi_pass php-handler; include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) { try_files $uri/ =404; index index.php; } location ~ \.(?:css|js|woff2?|svg|gif|map)$ { try_files $uri /index.php$request_uri; add_header Cache-Control "public, max-age=15778463"; #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;"; 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 Referrer-Policy no-referrer; access_log off; } location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ { try_files $uri /index.php$request_uri; access_log off; } }
Base de données
Il faut ensuite configurer une base de données pour servir Nextcloud.
Seulement si l'on a une faible activité et un petit volume de données, on peut rester sur du sqlite (c'est-à-dire un seul fichier dédié à Nextcloud, facilement sauvegardable).
Sinon, on passe par MariaDB / Mysql:
pwd="12lJTKUyufFDLM345" # le mot de passe du futur utilisateur SQL dédié au système nextcloud sudo mysql -u root << EOF CREATE DATABASE nextcloud; CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '$pwd'; GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY '$pwd' WITH GRANT OPTION; FLUSH PRIVILEGES; EOF
Si vous devez le refaire: DROP DATABASE nextcloud; DROP USER 'nextclouduser'@'localhost';
Finalisation via l'interface web
pensez d'abord à valider le support HTTPS avec Letsencrypt.
Puis aller sur votre site: https://share.tecrd.com, et suivre les indications pour la création d'un administrateur et l'accès à la base de donnée:
le dossier des données gagnera probablement à se trouver en dehors de la zone www, par exemple ici
/home/nextcloud
(qu'il faudra créer et avec les droits chown www-data:www-data /home/nextcloud
). Cela simplifie l'arborescence et facilite les sauvegardes.
Suite: sur la page d'admin et d'usage de nextcloud.