• Archive
  • [Tuto] Installer Nextcloud sur Debian 8 & Nginx

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:

cloud

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:

cloud2

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.

error

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:

test

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:

size

Bonus 2: monter son dossier rutorrents dans Nextcloud:

Rendez-vous dans la partie applications en haut à gauche:

fichiers

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

support

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

ext2

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
sharelink

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

2 mois plus tard

Hello @zarev
j'ai refais une install propre de mon serveur avec une debian 8
j'ai utilisé la solution bonobox de @ex_rat et j'ai voulu ajouté Nexcloud en suivant ce tuto.

Avant de faire ma RAZ du serveur il fonctionnait très bien avec mon domaine, mais lors de l'installation je me retrouve bloqué avec l'erreur 502 Bad Gateway après avoir crée mon fichier nexcloud.conf et redémarré mon serveur nginx.

Voilà à quoi ressemble mon fichier :

server {

listen 80;
server_name cloud-superboki.ddns.net;
    return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name cloud-superboki.ddns.net;
        index index.php;

   ssl on;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_certificate /etc/letsencrypt/live/cloud-superboki.ddns.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cloud-superboki.ddns.net/privkey.pem;
#       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 L$
        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 /var/www/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;
        }

}

As tu une idée de l'erreur que j'aurais pu faire dans mon install?

note : mes certificats SSL ont été fait et son fonctionnel

3 ans plus tard
Répondre…