Bonjour à toute la communauté mondedie,
Découvrons ensemble comment installer Nextcloud en sous-domaine sur Debian 8 ET corriger les erreurs qui suivent l'installation, erreurs qui se trouvent dans la partie Administration.
Ce tutoriel est plus une synthèse de toutes les informations présentes sur mondedie, regroupées en un seul post.
Ce tutoriel est basé:
- sur celui de l'installation de Owncloud proposé par nami007 Un tout grand merci à lui d'ailleurs!
- sur les solutions proposées par patatra & kaoz52 pour régler les erreurs présentes dans l'administration
- et sur l'idée géniale de xavier de proposer un sous-domaine gratos
Bien entendu le tutoriel est compatible avec le script de Ex_rat, donc sous php5, si vous avez suivi le tutoriel de Magicalex, php7, la modification sera précisée.
Prérequis:
Avoir suivi le tuto de Ex_rat ou Magicalex pour avoir nginx et php-fpm
Debian 8
Un sous-domaine (dans le cas contraire, je vous en fournirai un sur demande)
Du temps, de la patience
Avoir envie d'installer Nextcloud 😜
Pour commencer:
Installer mysql si vous ne l'avez pas encore fait:
En raccord avec le tutoriel de Ex_rat [php5]
apt-get -y update && apt-get -y install php5-gd mysql-server php5-mysql php5-sqlite php5-fpm php5-sqlite zip
En raccord avec le tutoriel de Magicalex [php7]
apt-get -y update && apt-get -y install php7.0-gd php7.0-mysql php7.0-zip
Maintenant il est temps d'aller créer votre sous-domaine: cloud.votreserveur.tld
De télécharger la dernière archive zip Nextcloud => https://nextcloud.com/install/
cd /var/www/
wget https://download.nextcloud.com/server/releases/nextcloud-11.0.2.zip
unzip nextcloud-11.0.2.zip
On supprime le zip:
rm nextcloud-11.0.2.zip
On crée le fichier config:
nano /etc/nginx/sites-enabled/nextcloud.conf
Et coller ça dedans:
server {
listen 80;
server_name cloud.votreserveur.tld;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.votreserveur.tld;
index index.php;
# ssl on;
ssl_certificate /etc/nginx/keys/votrekey.crt-unified;
ssl_certificate_key /etc/nginx/keys/votrekey.fr.key;
# include /etc/nginx/conf.d/ciphers.conf; #à désactiver si vous ne faites pas le tuto Logjam
# ssl_prefer_server_ciphers on; #à activer si vous ne faites pas le tuto Logjam
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # à activer si vous ne faites pas le tuto Logjam
# ssl_ciphers 'AES256+EECDH:AES256+EDH'; #à activer si vous ne faites pas le tuto Logjam
# ssl_session_cache shared:SSL:10m; (limite la session ssl à 10mn, à activer ou non si vous le souhaitez.
#LOGS
access_log /var/log/nginx/nextcloud-access.log combined;
error_log /var/log/nginx/nextcloud-error.log error;
# root doit pointer vers le chemin d'installation de Nextcloud. Typiquement /var/www/nextcloud.
root chemin_de_votre_nextcloud;
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
#rewrite url pour la synchronisation caldav/webdav.
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
#eviter le référencement de votre cloud par google.
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
#interdire l'accès aux sous dossiers de nextcloud.
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
#config php
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# Mise en cache des images
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don’t log access to assets
access_log off;
}
}
.:: Pensez à retirer le # devant ssl; après avoir installé vos certificats! ::.
Si vous utilisez php7, il faut indiquer:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
à la place de:
fastcgi_pass unix:/var/run/php5-fpm.sock;
Si vous avez utilisé le script de Ex_rat, remplacer:
ssl_certificate /etc/nginx/keys/votrekey.crt-unified;
ssl_certificate_key /etc/nginx/keys/votrekey.fr.key;
Par:
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
Si vous avez votre propre domaine et sous-domaine et que vous avez suivi le tuto Letsencrypt
☢ ne s'applique pas si vous m'avez fait la demande d'un sous-domaine ☢
ssl_certificate /etc/letsencrypt/live/votreserveur.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votreserveur.tld/privkey.pem;
Vérifiez votre conf:
nginx -t
Détection et correction des éventuelles erreurs:
journalctl -xn
Tout est en ordre? Redémarrez nginx:
service nginx restart
Maintenant il est temps d'afficher votre cloud:
https://cloud.votredomaine.tld
Vous devriez arriver à ce résultat:
Comme le signale nami007:
Pour des raisons de sécurité, la documentation Nextcloud recommande de ne pas mettre le dossier data dans /var/www. Nous allons donc faire ceci!
mkdir /home/VOTRE_USER/DataNextcloud/
Puis
cd /home/VOTRE_USER/DataNextcloud/
Et on change le propriétaire pour www-data qui correspond à notre serveur web:
chown -R www-data:www-data /home/votre_utilisateur/DataNextcloud/
Création de la base de données:
mysql -u root -p
Entrez le mot de passe choisi précédement
Créer la base de données Nextcloud:
CREATE DATABASE nextcloud;
Création de l'utilisateur nextcloud et ajout des permissions sur la base de données Nextcloud:
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'votre_password';
FLUSH PRIVILEGES;
exit;
Ensuite on remplit la page d'installation suivant ce qu'on a choisit:
De préférence, choisissez un mot de passe suffisamment sécurisé pour être en vert!
On change le propriétaire du répertoire /var/www/nextcloud
chown -R www-data:www-data /var/www/nextcloud
On mets les bonnes permissions:
chmod -R 755 /var/www/nextcloud
chmod 755 /home/votre_user/DataNextcloud
Vous pouvez terminer l'installation 🙂
Maintenant allons dans l'administration de nextcloud.

C'est le bordel! Mais pas pour longtemps...
Corrigeons tout ça!
[PHP5]Il faut modifier le fichier /etc/php5/fpm/pool.d/www.conf
nano /etc/php5/fpm/pool.d/www.conf
OU [PHP7.0]
nano /etc/php/7.0/fpm/pool.d/www.conf
Il faut décommenter: env[PATH] = /usr/local/bin:/usr/bin:/bin en supprimant le ;
...
;env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
...
Pour le memcache sous php5, installer php5-apcu :
apt-get install php5-apcu
Pour le memcache sous php7.0, installer php7.0-apcu
apt-get install php7.0-apcu
Modifier le fichier /var/www/nextcloud/config/config.php:
nano /var/www/nextcloud/config/config.php
et ajouter 'memcache.local' => '\\OC\\Memcache\\APCu', :
<?php
$CONFIG = array (
...
'memcache.local' => '\\OC\\Memcache\\APCu',
...
);
Pour l'entête HTTP qui n'est pas définie à 15768000 secondes, modifier le fichier /etc/nginx/sites-enabled/nextcloud.conf et ajouter add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
nano /etc/nginx/sites-enabled/nextcloud.conf
Sous les certificats SSL, par exemple, ajoutez cette ligne:
...
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
...
Pour php5: On redémarre le service php5-fpm
/etc/init.d/php5-fpm restart
Pour php7.0-fpm: On redémarre le service service php7.0-fpm
service php7.0-fpm restart
Et pour terminer un petit:
service nginx restart
Faites un refresh de la page d'administration de Nextcloud, vous devriez arriver à ça:

BONUS: pour changer de la taille des pièces jointes facilement:
nano /var/www/nextcloud/.user.ini
Et coller ça:
upload_max_filesize=513M
post_max_size=513M
memory_limit=512M
mbstring.func_overload=0
always_populate_raw_post_data=-1
default_charset='UTF-8'
output_buffering=0
Un petit coupe de:
chown -R www-data:www-data /var/www/nextcloud;
Maintenant on redémarre tout:
Pour php5:
/etc/init.d/php5-fpm restart
Pour php7.0:
service php7.0-fpm restart
Et pour finir:
service nginx restart
Vérifier que c'est bien pris en compte dans l'administration de Nextcloud, partie Paramètres supplémentaires.
Vous devriez arriver à un résultat identique:

Bonus 2: monter son dossier rutorrents dans Nextcloud:
Rendez-vous dans la partie applications en haut à gauche:

Ensuite cliquez sur Désactivées et sélectionnez External storage support et activez cette option:

Maintenant rendez-vous dans Administration et sur le côté gauche vous devez apercevoir Stockage externe, cliquez dessus. Vous arrivez ici:

Replissez comme il suit:
Nom du dossier: c'est le nom qui va apparaître dans le montage
Stockage externe: choisissez local
Configuration: Il faut renseigner ou se trouve votre dossier torrents. En général: /home/votre_user/torrents
Disponible pour: Si vous n'indiquez aucun nom, il sera disponible pour tout personne disposant d'un compte. Si vous voulez qu'il ne soit visible que par vous, indiquez juste votre nom. Chaque nom ajouté bénéficiera de l'accès au montage.
Afin de pouvoir partager vos fichiers, veillez à activer, en cliquant sur l'engrenage: Permettre le partage

BONUS 3: vous ne disposez pas d'un nom de domaine? Je peux fournir un sous-domaine xxxxx.zarev.ovh sur simple demande