Il y a un ou trois ans, lorsque je m’occupais de l’informatique d’une UL Croix-Rouge, j’avais vu fleurir des dropbox sur tous les postes. Cela m’avait quelques peu agacés car on ne sait pas où se retrouve les fichiers et la peur de la faille de sécurités. Dès lors on m’avait demandé de proposer une solution alternative. J’avais bien essayé quelques trucs mais rien de convaincant.
A l’heure où le cloud est largement développé il peut être intéressant de créer le sien à soi histoire de ne pas trop laisser traîner des informations sensibles sur des serveurs on ne sait où. Car oui la grande rengaine des fournisseurs de cloud est de dire, sur la masse d’infos mon fichier est en sécurité sur le cloud, aucun risque qu’un petit malin s’intéresse au contenu et on vous propose de chiffrer etc ... . Comme on est jamais assez prudent il vaut mieux prendre les devant et créer son propre cloud.
Une solution est OwnCloud, elle a l’avantage de s’installer un peu partout (même sur certain NAS). Niveau sécurité, on ne sait pas trop, mais ça à l’air plutôt solide (enfin comme tout). Cette solution est modulaire et répond à beaucoup de besoin. Pour peu qu’on lui intègre un serveur mail elle sera quasi tout faire. On peut étendre les possibilités grâce à de très nombreux plugin On a même un éditeur de texte (basique oui mais il est existe). Il faudra aussi penser à crypter le contenu des disques cela est proposé à l’install du linux(attention en cas de casse …).
La documentation de owncloud est très très fournie et l’utilité d’un tuto pour installer Owncloud sous Nginx est juste un petit luxe pour éviter de lire la documentation d’origine. L’essentiel étant de trouver le fichier config de Nginx (je vous en fourni un que j’ai copié-bricolé).
Tout d’abord les pré-requis :
php5 (>= 5.3)
php5-gd
php-xml-parser
php5-intl
On peut ajouter ceci à la liste
php5-sqlite (>= 3)
php5-mysql
smbclient
curl
libcurl3
php5-curl
Enfin aller chercher les sources ici http://owncloud.org/install/
Personnellement j’ai opté pour la version Mysql, essentiellement parce que j’ai déjà un serveur Mysql. Cela dit la version sqlite a l’air d’avoir de performances supérieures.
Je ne reviens pas sur l’install Nginx, j’ai déjà fait un tuto ici, cela dit celui de Nicolargo est encore mieux et propose les dépôts d’origine pour Ubuntu.
Maintenant que vous avez tout réuni il suffit de pomper en intégral le fichier de configuration Nginx proposé ci-dessous et le coller dans un fichier de config Nginx avec la commande suivante.
sudo gedit /etc/nginx/sites-available/owncloud
# redirect http to https. server { listen 8081; server_name_in_redirect on; server_name owncloud.local; rewrite ^ https://$server_name$request_uri? permanent; # enforce https } # owncloud (ssl/tls) server { listen 8443 ssl; server_name_in_redirect on; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; server_name owncloud.local; root /home/jbaptiste/www/nginx/owncloud; client_max_body_size 1000M; # set maximum upload size fastcgi_buffers 64 4K; rewrite ^/caldav((/|$).*)$ /remote.php/caldav$1 last; rewrite ^/carddav((/|$).*)$ /remote.php/carddav$1 last; rewrite ^/webdav((/|$).*)$ /remote.php/webdav$1 last; index index.php; error_page 403 = /core/templates/403.php; error_page 404 = /core/templates/404.php; # deny direct access location ~ ^/(data|config|\.ht|db_structure\.xml|README) { deny all; } location / { 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/ @webdav; } # owncloud WebDAV location @webdav { fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_pass 127.0.0.1:9000; # or use php-fpm with: "unix:/var/run/php-fpm/php-fpm.sock;" fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; } location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ { # regexp required pcre installed, otherwise try 'location ~ ^(.+?\.php)(/.*)?$ {' try_files $script_name = 404; # Or 'try_files $1 = 404;' if you don't have pcre installed include fastcgi_params; fastcgi_param PATH_INFO $path_info; # Or 'fastcgi_param PATH_INFO $2;' if you don't have pcre installed fastcgi_param HTTPS on; fastcgi_pass 127.0.0.1:9000; # Or use unix-socket with 'fastcgi_pass unix:/var/run/php5-fpm.sock;' } # Optional: set long EXPIRES header on static assets location ~* ^.+.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires 30d; # Optional: Don't log access to assets access_log off; } }
une fois sauvegardé faire un lien dans sites-enableb avec la commande
sudo ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud
On va modifier le fichiers hosts pour ajouter une ligne avec la commande suivante
sudo gedit /etc/hosts
Ajoutez la ligne
127.0.0.1 owncloud.local
Vous devez vous faire un certificat auto signé, le problème il est possible que celui ci soit refusé par l’application Android, IOS etc ….
Si on tente le restart avec la commande ci-dessous
sudo service nginx restart
vous allez obtenir une erreur du style
Restarting nginx: nginx: [emerg] SSL_CTX_use_certificate_chain_file("/etc/nginx/certs/server.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory error:20074002:BIO routines:FILE_CTRL:system lib error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib) nginx: configuration file /etc/nginx/nginx.conf test failed
Va falloir créer les certificats :
on va créer le répertoire pour les certificats
sudo mkdir /etc/nginx/certs cd /etc/nginx/certs
on va créer la clef
sudo openssl genrsa -des3 -out server.key 1024
------
jbaptiste@Ubuntu-v2:/etc/nginx/certs$ sudo openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus ..++++++ ..........................++++++ e is 65537 (0x10001) Enter pass phrase for server.key: Verifying - Enter pass phrase for server.key:
------
on va créer le certificat
sudo openssl req -new -key server.key -out server.csr
----
jbaptiste@Ubuntu-v2:/etc/nginx/certs$ sudo openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:France Locality Name (eg, city) []:Courbevoie Organization Name (eg, company) [Internet Widgits Pty Ltd]:GeekMPS Organizational Unit Name (eg, section) []:GeekMPS Common Name (e.g. server FQDN or YOUR name) []:GeekMPS Email Address []:Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: jbaptiste@Ubuntu-v2:/etc/nginx/certs$
sudo cp server.key server.key.org sudo openssl rsa -in server.key.org -out server.key
-----
jbaptiste@Ubuntu-v2:/etc/nginx/certs$ sudo cp server.key server.key.org jbaptiste@Ubuntu-v2:/etc/nginx/certs$ sudo openssl rsa -in server.key.org -out server.key Enter pass phrase for server.key.org: writing RSA key jbaptiste@Ubuntu-v2:/etc/nginx/certs$
----
Enfin il faut signer le certificat
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=/C=FR/ST=France/L=Courbevoie/O=GeekMPS/OU=GeekMPS/CN=GeekMPS/emailAddress=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Getting Private key
sudo service nginx restart
L’install commence et elle est ultrasimple, elle consiste juste à choisir une base de donnée (Avancé pour mysql)
Voilà si vous avez tout bien fait dans un navigateur un petit https://owncloud.local:8443 pour accèder à votre owncloud
Comments powered by CComment