Aller au contenu

Installer un serveur Nextcloud sous Debian


Ldfa

Messages recommandés

Un mémo sur comment installer Nextcloud, le fork de OwnCloud sur un serveur Debian.
Dans cet article deux méthode sont proposées, l’une avec un serveur web basé sur Nginx et PHP7 et l’autre basé sur Apache2 et PHP5 avec une installation simplifiée.

Installation et configuration de MariaDB

Pour les deux méthodes d’installation du serveur web pour Nextcloud, il faut au préalable installer le serveur de base de données et créer la future base pour Nextcloud.

  • Installation du serveur de base de données MariaDB :
apt install mariadb-server
Exécuter la commande mysql_secure_installation, pour sécuriser à minima l’installtion de MariaDB :
mysql_secure_installation
Ajout de la base de données pour le futur NexCloud :
  • Se connecter au serveur MariaDB :
mysql -u root -p
Créer la base de données pour Nextcloud :
CREATE DATABASE nextcloud; 
Ajouter un utilisateur pour cette base de données :
GRANT ALL PRIVILEGES ON nextcloud.* TO 'USER'@'localhost' IDENTIFIED BY 'SuperMDP';
Recharger les privilèges :
FLUSH PRIVILEGES;
Quitter :
quit

Dans cette première partie, le serveur Nextcloud est installé sur un serveur web basé sur Nginx et PHP7.

Installation du serveur web Nginx

Pour le serveur web Nginx, il est possible d’installer la version présente dans les dépôts officiels mais dans cet article, la version de Nginx sera la dernière version stable disponible à partir des dépôts de Nginx.

  • Ajout du dépôts Nginx :
    • Pour Debian Jessie :
    echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" > /etc/apt/sources.list.d/nginx.list
  • Pour Debian Stretch :
echo "deb http://nginx.org/packages/mainline/debian/ stretch nginx" > /etc/apt/sources.list.d/nginx.list
Téléchargement de la clé :
wget http://nginx.org/keys/nginx_signing.key
Ajout de la clé :
apt-key add nginx_signing.key
Mise à jour :
apt update
Installation du serveur web Nginx :
apt install nginx

Installation de PHP 7

  • Installation de PHP 7:
    apt install php7.0-fpm php7.0
  • Installation des dépendances PHP pour NexCloud :
apt install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring php7.0-intl php7.0-mcrypt  php7.0-xml php7.0-zip
Configuration de PHP 7 :
  • Modification de php.ini :
nano /etc/php/7.0/fpm/php.ini
Dé-commenter la ligne :
cgi.fix_pathinfo=0
Copie de www.conf vers nextcloud.conf :
cp /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/nextcloud.conf
Renommer www.conf en www.old :
mv /etc/php/7.0/fpm/pool.d/www.conf /etc/php/7.0/fpm/pool.d/www.old
Mofifier la ligne du fichier nextcloud.conf :
listen = /run/php/php7.0-fpm.sock

par

listen = 127.0.0.1:9000

et

user=www-data

par

user=nextcloud

Certificat TLS Let’s Encrypt

Pour créer un certificat TLS pour son domaine, voir cet article : https://memo-linux.com/installer-certbot-sous-debian/

Configuration du server block pour NexCloud

nano /etc/nginx/conf.d/nextcloud.conf
upstream php-handler {
    server 127.0.0.1:9000;
    }

server {
    listen 80;
    server_name cloud.example.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name cloud.example.com;
 
    ###certificat Let's Encrypt
    ssl_certificate /etc/letsencrypt/live/cloud.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cloud.exemple.com/privkey.pem;
    ###ajout perso
    ssl_protocols TLSv1.2;
    ssl_dhparam  /etc/ssl/certs/dhparams.pem;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/cloud.exemple.com/fullchain.pem;
    resolver 127.0.0.1 9.9.9.9;##j'ai mon propre serveur dns en local
    
    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;

    # Path to the root of your installation
    root /var/www/html/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;

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/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 ~ ^/(?: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 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;
        # 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;
    }
}

Installation de NexCloud

La première parie est le téléchargement du fichier zip de Nextcloud, puis l’installation proprement dite.

Mise ne place de Nexcloud

  • Ajouter un utilisateur dédié à NexCloud et l’ajouter au groupe www-data :
useradd nextcloud
usermod -a -G www-data nextcloud
Se placer dans le répertoire /var/www/html/
cd /var/www/html/
Télécharger lu fichier zip :
wget https://download.nextcloud.com/server/releases/nextcloud-12.0.4.zip
Décompression du zip :
unzip nextcloud-12.0.4.zip
Changer les droits d’appartenance au répertoire nextcloud :
chown -R nextcloud:www-data nextcloud/
Supprimer le fichier zip :
rm nextcloud-12.0.4.zip

Installation de Nextcloud

  • Relancer les service Nginx et php7.0-fpm :
systemctl restart nginx
systemctl restart php7.0-fp
Ouvrir un navigateur internet puis saisir l’url du serveur : https://cloud.exemple.comRenseigner les différents champs puis cliquer sur « Finish Setup » :Le serveur Nextcloud est opérationnel :

nextcloud-debian-install-finish-550x412.

Cette installation de Nextcloud est basée sur le serveur web Apache2 et PHP5 et installé via apt.

  • Ajout du dépôt pour Nextcloud :
    • Ajout du dépôt pour Debian Jessie :
    echo "deb http://apt.jurisic.org/debian/ jessie main contrib non-free" > /etc/apt/sources.list.d/nextcloud.list
  • Ajout du dépôt pour Debian Strecth :
echo "deb http://apt.jurisic.org/debian/ stretch main contrib non-free" > /etc/apt/sources.list.d/nextcloud.list
Récupération de la clé :
wget -q http://apt.jurisic.org/Release.key -O- | apt-key add -
Mise à jour des dépôts :
apt update
Installation du serveur Nexcloud :
apt install nextcloud-server
Pour installer le client Nexcloud :
apt install nextcloud-client

Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.