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
sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list"
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
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
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 » :
- Installation de Owncloud terminée :
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.
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é