Quantcast
Channel: fred – memo-linux.com
Viewing all articles
Browse latest Browse all 515

Installer un serveur Nextcloud sous Debian

$
0
0

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

    Installer Nextcloud sous Debian avec Nginx et PHP 7

    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

    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.com
  • Renseigner les différents champs puis cliquer sur « Finish Setup » :
  • Le serveur Nextcloud est opérationnel :
  • Installation simplifiée de Nextcloud via apt

    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

    Viewing all articles
    Browse latest Browse all 515

    Trending Articles