Un Cloud personnel auto-hebergé : Owncloud

Le formidable Raspberry n’a pas fini de nous étonner. Nous allons maintenant nous en servir comme serveur cloud. Fini les cloud des grandes firmes avec leurs politiques de confidentialité plus ou moins douteuses. Reprenez le contrôle ! Bon allez stop à la casse aux GAFA et allons-y pour monter notre serveur qui synchronisera un volume illimité de données entre tout vos équipements où que vous soyez et tout ça hébergé chez vous, en ne consommant que très peu de ressources et « framboise » sur le gâteau, pour pas cher !

 

Prérequis

 

  • Tout d’abord munissez vous d’un Raspberry pi 2 ou 3 minimum (les performances sont nettement meilleures sur ces deux là pour ce qu’on veut faire) équipé et configuré avec l’OS compatible de votre choix. Pour nous ce sera du Raspberry pi 3 à la sauce Raspbian. (Téléchargez ici)
  • S’il n’est pas branché à un écran, vous savez accéder au Raspberry via ssh et vous avez déjà effectué les configurations de base du système : Tuto de config et éventuellement mon Tuto pi zéro headless (utile si vous avez un pi3 et que vous souhaitez le gérer sans écran).
  • Vous avez ensuite installé un serveur LAMP sur votre Raspberry :Voir le tuto LAMP/PHP7
  • Enfin, vous savez monter automatiquement un volume (formaté en NTFS) au démarrage de votre Raspberry : voir tuto Monter un Volume avec fstab
  • Trouvez une grosse clé usb ou un disque dur externe (conseillé) voir, le must, un boitier RAID avec deux disque durs (voir la review).(A savoir : Owncloud peut utiliser aussi votre partage SAMBA comme espace de stockage… Je dis ça je dis rien ;-))
  • Prévoyez un HUB alimenté si vous utilisez un boitier RAID ou tout autre disque dur externe auto-alimenté.

Vous avez donc fait tout ça et ça fonctionne. Il va s’agir maintenant d’installer et de configurer Owncloud pour une utilisation optimale et d’un peu de personnalisation.

 

Installation

 

1/ Téléchargement et installation

 

On commence par ajouter les clés ainsi :

$ sudo wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key
$ sudo apt-key add - < Release.key

 

Puis on installe en exécutant successivement les commandes suivantes :

$ sudo sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' > /etc/apt/sources.list.d/owncloud.list"
$ sudo apt-get update
$ sudo apt-get install owncloud-files

2/ Dernières vérifications

Vérifiez d’abord que vous avez bien installé les modules suivants de php. si vous tournez sous php7.0 ce sont les paquets suivants sinon pour php 5 la plupart du temps il suffit d’enlever le 7.0 du paquet (ex: php7.0-curl devient php-curl) :

sudo apt-get install php7.0-curl php7.0-mysql php7.0-apcu php7.0-gd php7.0-fpm php7.0-zip php7.0-dom php7.0-mbstring

Dans un second temps (si ce n’est pas déjà fait pour d’autre sites que vous hebergez) il va falloir modifier le « document root » de la config apache. En effet, ce dernier renvoie par défaut systématiquement vers le dossier html de /var/www. Or votre/vos installations de sites ne se situent pas souvent dans ce dossier.

éditez le fichier suivant de cette manière :

sudo nano /etc/apache2/sites-available/000*

modifiez la ligne suivante :

DocumentRoot /var/www/html

Pour qu’elle devienne ainsi :

DocumentRoot /var/www

sortez en enregistrant puis redémarrez apache

sudo service apache2 restart

Nous allons maintenant vérifier que les droit de notre dossier de stockage sont bien compatibles avec owncloud. L’utilisateur principal de Apache s’appelle www-data. On va donc rendre l’utilisateur et le groupe www-data propriétaires de notre disque de stockage ainsi :

sudo chown -R www-data:www-data /chemin/vers/votre/stockage/externe

 

3/ Premier Accès et configuration

Vous avez donc installé votre serveur owncloud.

Il va falloir maintenant le configurer pour qu’il fonctionne et notamment créer l’utilisateur principal, la base de donnée et lui dire ou stocker vos données.

Accédez-y via un navigateur à l’adresse :

  • http://localhost/owncloud (ou 127.0.0.1/owncloud) si vous êtes sur la machine serveur.
  • http://ip-interne-du-serveur/owncloud si vous êtes sur un autre pc de votre réseau interne.

 

 

Renseignez donc :

  • votre nom utilisateur
  • votre mot de passe utilisateur
  • Le chemin où seront stockées les données (le dossier s’appellera « data ») pour ma part c’est un dossier situé sur mon disque dur externe monté automatiquement dans /media/storage/expansion. Je renseigne donc « /media/storage/expansion/data »
  • le type de base de donnée : Par defaut MySql est renseigné. Si vous avez le choix préférez MySQL et pas les autres pour cause de lenteurs
  • le nom d’utilisateur de la base de donnée (mettez « root »)
  • le mot de passe de la base de donnée (Le mot de passe utilisé pour paramétrer mysql lors de l’installation)
  • le nom de la base de donnée (mettez owncloud)
  • et laissez localhost

Vous accédez alors à votre toute belle toute neuve interface owncloud et vous pouvez dès lors commencer à uploader des fichiers qui seront stockés dans le dossier « data » précédemment paramétré.

 

Paramétrages et suppléments

La plupart des paramètres d’Owncloud se situent dans le fichier /var/www/owncloud/config/config.php On y retrouve notamment le chemin des stockages (vous pourrez donc le modifier ici), les domaines autorisés, le thème utilisé, le type de cache etc… :

1/Accès de l’extérieur

  • Pour accéder à votre interface owncloud depuis l’exterieur, il va d’abord falloir vous assurer d’avoir crée la bonne règle dans votre box/routeur sur le port 80.
  • On va ensuite s’assurer d’avoir une ip fixe. Si ce n’est pas le cas suivez ce tuto : no-ip puis lisez la suite.
  • Si vous avez dû en passer par un nom de domaine fournit par un service du type no-ip, il va falloir indiquer à owncloud que les connexions qui appellent cette adresse sont dignes de confiance (trusted domains). Nous allons donc renseigner une nouvelle ligne dans le fichier config.php de cette manière :

<?php
$CONFIG = array (
'instanceid' => '***',
'passwordsalt' => '****',
'secret' => '****',
'trusted_domains' =>
array (
0 => '192.168.1.12',
1 => 'votre.adresse.ou.domaine.no-ip.com',
),
.........

 

Vous pouvez donc maintenant, de l’exterieur, accéder à votre owncloud en renseignant dans un navigateur, l’adresse http://votre.adresse.ou.domaine.no-ip.com/owncloud

  • Si cette adresse externe ne fonctionne pas à l’intérieur de votre réseau il va vous falloir si c’est possible paramétrer le Nat-Loopback dans l’interface de votre box/routeur et sinon (vous êtes sûrement chez orange) suivez ce tuto : Orange-Nat-Loopback

2/ SSL

Nous allons ici enregistrer un certificat « auto-signé » afin qu’owncloud soit accessible en « https ».

  • Création du virtualhost
cd /etc/apache2/sites-available
sudo nano owncloud-https.conf

 

insérez ceci :

NameVirtualHost *:443
# Port d’écoute
<VirtualHost *:443>
<IfModule mod_headers.c>
 Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
</IfModule>
DocumentRoot /var/www/ #ou /var/www/owncloud
# Mode SSL activé
SSLEngine On
# Où est le certificat
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key
</VirtualHost>

 

  • Création des certificats

Saisissez successivement les commandes suivantes

$ sudo mkdir /etc/apache2/CertOwncloud
$ cd /etc/apache2/CertOwncloud
$ sudo openssl genrsa -out owncloud.key 1024
$ sudo openssl req -new -key owncloud.key -out owncloud.csr 
$ sudo openssl x509 -req -days 365 -in owncloud.csr -signkey owncloud.key -out owncloud.crt
$ sudo cp owncloud.crt /etc/ssl/certs
$ sudo cp owncloud.key /etc/ssl/private

 

  • Activation

Saisissez succéssivement les trois commandes suivantes :

$ sudo a2enmod ssl
$ sudo a2ensite owncloud-https
$ sudo service apache2 restart

 

Vous pouvez désormais accéder à votre owncloud via « https » (assurez-vous néanmoins d’avoir autorisé et routé le port 443).

 

  • Pour forcer l’utilisation de ce mode même lorsque vous saisissez par erreur http dans le navigateur, créez un nouveau virtualhost :
sudo nano /etc/apache2/sites-available/owncloud-local.conf

 

et insérez les lignes suivantes :

<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 ServerName Votre.domaine.com
 ServerAlias Votre.domaine.com
 Redirect / https://Votre.domaine.c/

DocumentRoot /var/www/owncloud
 <Directory />
 Options FollowSymLinks
 AllowOverride all
 </Directory>
 <Directory /var/www/owncloud>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride all
 Order allow,deny
 allow from all
 </Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
 AllowOverride all
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
 </Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!local
</VirtualHost>

 

Activez le et redémarrez :

$ sudo a2ensite owncloud-local
$ sudo service apache2 restart

 

 

3/ Sécurisation

Il s’agit d’éviter de se faire pirater, car désormais vous avez un serveur web qui est ouvert sur le monde et qui peut faire face à toute sortes de dangers. Je vous invite donc à suivre une petite suite de tutos afin de vous prémunir un minimum : Une-Histoire-De-Pirates

4/ Durée de vie carte SD

La carte SD du Raspberry n’a malheureusement pas une durée de vie extrêmement longue. Par conséquent je vous encourage vivement à faire des backup de vos systèmes afin de pouvoir les remettre en service rapidement en cas de pépin. Suivez ce petit tuto très simple pour créer et/ou restaurer des images systèmes. Il existe sinon des solutions pour booter le raspberry sur USB mais je n’ai pas eu le temps de me pencher la dessus pour l’instant. On en parle ICI.

5/ Personnalisation

  • Thèmes

Pour modifier le thèmes, les phrases d’acceuil etc je vous conseille de lire ce très bon tuto sur le sujet : Création de thème

  • Editeur de fichier en ligne

Owncloud intègre la possibilité d’éditer bon nombres de fichiers directement en ligne. Pour faire fonctionner cette fonctionnalité il faudra avoir installé libreoffice sur votre serveur.

sudo apt-get install libreoffice
  • Plugins

Vous pouvez améliorer Owncloud grâce au « market » sur lequel se trouvent beaucoup de plugins supplémentaires vous permettant d’améliorer votre expérience.

6/ Synchronisation

Avec Owncloud vous pouvez également synchroniser toute votre suite de bureau. Votre smartphone, tablette, vos PC windows, Mac, ou Linux. Vous pouvez télécharger les clients de synchronisation directement depuis vos app-stores pour la partie mobile et sur le site d’owncloud pour les ordinateurs.

Ces clients vous donne la possibilité de choisir quel contenu vous souhaitez synchroniser. Par exemple sur mon serveur j’ai mes photos et j’ai aussi mes différents projets. Je choisi de synchroniser mes projet avec mon PC professionnel et mes photos avec le PC familial (afin de les avoir aussi hors-ligne). cela évite de manger trop de stockage inutilement.

plus d’infos par là rubrique « sync your data »  https://owncloud.org/install/

Conclusion

 

Owncloud est donc une très bonne solution de cloud personnel. Il est assez simple d’installation et d’utilisation et permet de se passer des grands groupes et de leurs conditions (vie privée/ tarifs etc…). Vous pouvez en outre agrandir votre espace de stockage à volonté (tant que vous pouvez acheter des disques..). Pour le travail collaboratif c’est également une solution intéressante d’autant que les développeur axent actuellement leur travail sur cette voie.

Néanmoins, si vous avez une connexion ADSL classique, vous êtes forcément limités par la vitesse de votre débit montant. A savoir 1Mo à peu de choses près. Peut importe la vitesse de votre débit, en ADSL vous serez bridé en montant. Par conséquent l’upload ou la navigation (surtout le visionnage photos/video) sur l’interface owncloud lorsque vous êtes à l’extérieur peut s’avérer un poil déconcertante même avec une optimisation php et des caches de qualité. Si vous possédez une ligne satellite ou fibre cela ne devrais pas être un problème pour vous.

 

 

 

3 réflexions sur “Un Cloud personnel auto-hebergé : Owncloud

  • février 12, 2019 à 7:39
    Permalien

    bonjour,
    honnêtement, pas mal! c’est le seul tuto qui m’a permis d’installer owncloud. Pour la suite, c’est mort! je mexplique : jusqu’à la creation de l’interface sur l’ordi, nickel, j’ai même glissé un fichier pour voir si tout fonctionnait. J’ai tout relancé et là, misère de misère, l’ordi bloque sur la page index.php et ne sais pas l’ouvrir. L’interface client c’est encore pire, puisqu’il lui faut obligatoirement du https et que là c’est moi qui ne comprend plus rien au tuto.
    Mais pour en revenir à nos moutons, félicitations, j’ai réussi la première partie!

    Répondre
    • février 13, 2019 à 6:27
      Permalien

      Bonjour et merci pour le retour,
      Pour l’impossibilité d’afficher la page, avez-vous pensé à vérifier que votre instance de serveur apache etais bien active ? (sudo service apache2 status)
      Si ce n’est pas le cas il faudrait le relancer (sudo service apache2 start ou restart) et prévoir un lancement automatique du serveur à l’allumage.
      Pour le souci avec https, si vous ne comptez pas exposer votre serveur sur l’extérieur ce n’est pas indispensable et par conséquent vous pouvez tout à fait désactiver cette configuration. Sinon cela peut aussi venir du premier problème..
      Sur quel type de machine et de système executez vous owncloud ?

      Répondre
  • février 14, 2019 à 9:19
    Permalien

    La machine serveur est un Raspi 3. Bon, il était temps que je m’y mette sérieusement! Tout fonctionne, avec beaucoup de tâtonnements, en accès extérieur. J’ai pour cela chargé tous les programmes individuellement sur les serveurs d’origine (php, mysql, apache2). Ceci fait, en concaténant beaucoup de tutos, en récupérant ici et là des fichiers manquants (dont php-intl, qui manque de manière récurrente) et in-fine en installant owncloud de la même manière, cela fonctionne. C’est complètement anarchique comme installation, et il me serait bien difficile d’expliquer pourquoi ça marche. Bien sûr il a fallu aller rediriger les ports dans la box et autres manipulations du même acabit. Comme je ne suis pas informaticien, tous les termes propres au monde de linux me sont étrangers : paquets, instance de serveur et consorts! mais que je bricole beaucoup, j’ai fini par comprendre quelques manipulations élémentaires. Je pense que le fond du problème avec tous ces programmes open, c’est qu’un tuto reste d’actualité tant que la version du programme ne change pas. Ce que j’ai bien regretté, c’est qu’il n’existe pas une version « owncloud-pour-raspberry-pi-3.img » à graver directement!
    Enfin, maintenant que je dispose d’une configuration qui fonctionne et qui est sauvegardée, je vais pouvoir m’attacher à protéger tout ça des attaques de l’extérieur.
    Je vous remercie sincèrement d’avoir pris la peine de me répondre aussi vite. Je n’ai toujours pas d’idée pour utiliser mon Pi, à mon niveau, autrement que comme ça, et pourtant, j’imagine ce qu’il y aurait à faire! J’aurais du me pencher sur ce problème il y a 40 ans…
    Bien à vous
    Lio

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Show Buttons
Hide Buttons