2

Debian 8 : installer Owncloud avec Nginx et MariaDB

Cet article est une mise à jour du précédent sur l’installation d’un serveur Owncloud, avec comme différence l’utilisation d’un certificat Let’s Encrypt. Je vais donc aller à l’essentiel et utiliser que les paquets stables présent dans les dépôts de Debian Jessie, car dans ce cas présent, je souhaite privilégier la stabilité et la sécurité au dépend de la performance.

Installation de Nginx et MariaDB

apt install nginx php5-fpm php5-mysqlnd mariadb-server

Installation de Owncloud

  • Ajout de la clé :
  • wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key
    apt-key add - < Release.key
    
  • Ajout du dépôt :
  • sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list"
  • Installation de Owncloud :
  • apt update && apt install owncloud

Configuration de Nginx pour Owncloud

Création du certificat Let’s Encrypt avec une clé Diffie-Hellman:

Pour rappel sur l’installation de Let’s Encrypt, voir cet article : https://memo-linux.com/configurer-le-serveur-web-nginx-en-https-avec-letsencrypt-sous-debian-jessie/

  • Création du certificat :
  • cd /opt/letsencrypt
    ./letsencrypt-auto certonly -d owncloud.memo-linux.com --rsa-key-size 4096
    
  • Création de la clé de chiffrement Diffie-Hellman :
  • openssl dhparam -out /etc/ssl/private/dhparams.pem 4096

Le server block pour owncloud

  • Le serveur Block (source sur le wiki)
  • upstream php-handler {
      server 127.0.0.1:9000;
      #server unix:/var/run/php5-fpm.sock;
    }
    server {
      listen 80;
      server_name owncloud.memo-linux.com;
      # enforce https
      return 301 https://$server_name$request_uri;
    }
    server {
      listen 443 ssl;
      server_name owncloud.memo-linux.com;
    
      ssl_certificate /etc/letsencrypt/live/owncloud.memo-linux.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/owncloud.memo-linux.com/privkey.pem;
      ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      ssl_session_cache shared:SSL:10m;
      ssl_dhparam /etc/ssl/private/dhparams.pem;
      ssl_buffer_size 16k;
      ssl_session_tickets off;
      ssl_stapling on;
      ssl_stapling_verify on;
      ssl_trusted_certificate /etc/letsencrypt/live/owncloud.memo-linux.com/fullchain.pem;
      resolver 127.0.0.1 8.8.8.8;##j'ai mon propre serveur dns en local
    
      # Path to the root of your installation
      root /var/www/owncloud/;
      # set max upload size
      client_max_body_size 10G;
      fastcgi_buffers 64 4K;
    
      # Disable gzip to avoid the removal of the ETag header
      gzip off;
    
      # Uncomment if your server is build with the ngx_pagespeed module
      # This module is currently not supported.
      #pagespeed off;
    
      rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
      rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
      rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
    
      index index.php;
      error_page 403 /core/templates/403.php;
      error_page 404 /core/templates/404.php;
    
      location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
      }
    
      location ~ ^/(?:\.htaccess|data|config|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/ =404;
      }
    
      location ~ \.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_pass php-handler;
        fastcgi_intercept_errors on;
      }
    
      # Adding the cache control header for js and css files
      # Make sure it is BELOW the location ~ \.php(?:$|/) { block
      location ~* \.(?:css|js)$ {
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers
        add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        # Optional: Don't log access to assets
        access_log off;
      }
    
      # Optional: Don't log access to other assets
      location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
        access_log off;
      }
    }
    

    Test de la configuration :

    nginx -t

    Relance de Nginx :

    systemctl restart nginx

Création de la base de donnée pour Owncloud

  • Se connecter à MariaDB :
  • mysql -u user -p
  • Création de la base de donnée :
    CREATE DATABASE exemplebase;
    CREATE USER 'userbase'@'localhost' IDENTIFIED BY 'supermdpdelamort';
    GRANT ALL PRIVILEGES ON exemplebase.* TO 'userbase'@'localhost';
    FLUSH PRIVILEGES;
    
    • exemplebase : c’est le nom de la base de données pour owncloud.
    • userbase : c’est le nom de l’utilisateur associé à la base.
    • supermdpdelamort : c’est le mot de passe pour l’utilisateur associé à la base.

Finalisation de l’installation de Owncloud

  • Test d’accès dans un navigateur internet : https://owncloud.domaine.tld
  • Créer un utilisateur et cliquer sur « Terminer l’installation » :
  • owncloud-01

  • Installation de Owncloud terminée :
  • owncloud-debian-08

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

2 commentaires

  1. Bonjour,
    ton serveur owncloud est accessible depuis Internet ? Le mien ne l’est pas et je n’arrive pas à utiliser letencrypt car il cherche à se connecter à mon serveur.

  2. Salut Seb,
    si ton owncloud n’est pas accessible de l’extérieur tu ne pourras pas utiliser Letsencrypt :s
    dans ton cas, faut créé un certificat auto-signé

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *