Voici mon retour d'expérience concernant l'installation et le paramétrage d'un serveur owncloud.
Mon objectif: Me passer de google pour mes contacts, et disposer d'une plateforme personnelle ( chez moi ) hébergeant certains fichiers dont je souhaite disposer depuis n'importe où.
Les mesures de protections que je veux atteindre : protection par firewall , https, et utilisation d'un autre port que 443. Par contre, je compte utiliser un certificat auto-signé.
Ce document n'est PAS un manuel : votre configuration diffère certainement de la mienne, la version d'owncloud aura peut-être changé quand vous lirez ceci. Même si je vous épargne ici tous les cul-de-sac que j'ai emprunté pour arriver à mon but, il s'agit plutôt d'un compte rendu de mon installation du 09/2014. Prenez avec discernement les informations qui vous intéressent.
Ma configuration au 09/2014 :
- un EEEPC asus déjà installé avec Lubuntu version 14.04 ( Lutuntu, c'est comme ubuntu, mais avec une interface graphique plus légère ).
- un réseau local derriere une freebox V5 de chez free.
>> Adresse IP : dhcp, mais avec réservation d'adresse IP permanente via adresse mac : 192.168.8.24
>> Reverse DNS (free propose un reverse dns ) : owncloudsksbir.hd.free.fr
Note du 01/2015 : Utiliser le DNS proposé par votre FAI vous expose à des manipulations assez lourdes si vous changez de FAI. Voir ici pour plus de détails.
>> Port d'entree qu'on va utiliser : 3443
Note: Ces deux dernières infos ont été modifiées afin de protéger mon anonymat
- C'est Owncloud 7.02 qui s'est installé ( enfin je crois que j'ai eu une version antérieure pendant quelques jours, mais j'ai upgradé la distrib avant de vraiment bidouiller, et ça a donc migré "tout seul". )
- un galaxy S2, rom cyanogenmod , android 4.4.4
[edit au 21/12/2014] : Migration vers lubuntu 14.10, réactivation du dépot owncloud pour ubuntu, mais vers ubuntu 14.10 au lieu de 14.04 , upgrade owncloud 7.0.2-1 vers 7.0.4-3
edit au 05/03/2015 : mise à jour majeure suite à apt-get dist-upgrade : passé à owncloud 8
Installation de owncloud sur ma plateforme Ubuntu.
J'ai tout simplement suivi le manuel d'installation depuis https://owncloud.org/.
https://owncloud.org/ --> clic sur "Host owncloud for server owner" -->
https://owncloud.org/install/ --> clic sur "package for autoupdate" --> clic sur "continue" dans la pop-up qui est apparue -->
http://software.opensuse.org/download/p ... e=owncloud ---> clic sur le logo d'Ubuntu -->
J'ai suivi les instructions pour xUbuntu 14.04. Du coup, il y en avait pour > 180Mo de data, vu qu'il n'y avait pas apache non plus sur mon PC. Mais tout c'est installé nickel.
Après quoi, on saute à l'assistant de 1ere installation d'owncloud :
http://doc.owncloud.org/server/7.0/admi ... izard.html
donc : http://192.168.8.24/owncloud (depuis un autre PC sur mon réseau local... le EEEPC est trop lent) et c'est parti...
J'ai laissé SQLite car pas de BDD déjà installée sur mon PC.[edit : et c'était une erreur. regardez plus bas dans ce topic, j'explique comment installer mysql ]
Après quoi, j'ai commencé à me familiariser avec l'interface d'Owncloud : création de deux utilisateurs, de quelques groupes, activation des apps contacts et fichiers ( ou alors c'était fait par défaut, je ne me souviens plus ).
A ce stade, on reste bien sur le réseau local et on n'ouvre pas de ports vers le serveur depuis l'extérieur.
Sécuriser Apache
- Déjà, on sécurise apache : La page http://192.168.8.24 affiche des infos sur mon serveur. On va remplacer cette page par une page de texte qui n'apprend rien sur votre configuration. A terme, cette page ne sera pas accessible ( firewall, redirection d'un autre port que le 80 ), mais on ne sait jamais...
Code: Select all
sudo mv /var/www/html/index.html /var/www/html/index.html.ori
sudo echo test > /var/www/html/index.html
Sécuriser Owncloud
J'ai commencé par reprendre la doc de ce lien : http://www.it-connect.fr/securiser-ownc ... -httpsssl/ , sauf que la config générée permet alors de lister les fichiers du serveur apache sur https://192.168.8.24 (je n'appelle pas ça "améliorer la sécurité"...), que le certificat généré ne fonctionnera pas avec davdroid sous android car il ne respecte pas la directive "CA:TRUE" ( voir http://davdroid.bitfire.at/faq/entry/im ... ertificate, j'ai testé, ça ne fonctionne effectivement pas ) , et que la directive "Namevirtualhost" est obsolète.
J'ai trouvé une autre doc qui expliquait comment faire pour le certificat : http://www.leftbrainthings.com/2013/10/ ... id-device/
l'objectif est devenu le suivant: créer un site apache qui écoute sur le port 3443, et situé à la racine ( plus de .../owncloud/.. ) afin de supprimer la possibilité de lister le répertoire père ( owncloud protège lui-même ses répertoires contre une consultation directe, j'ai testé ). Donc pour moi, l'accueil de owncloud doit devenir ceci depuis mon réseau local : https://192.168.8.24:3443
Bref, voici donc comment j'ai fait
Dans le répertoire « /etc/apache2/sites-available », j'ai créé un nouveau fichier "owncloud-ssl.conf" ( qui correspond à la définition d'un "site virtuel" dans apache ).
Code: Select all
Listen 3443 https
# Hote virtuel qui ecoute sur le port HTTPS 3443
<VirtualHost *:3443>
DocumentRoot /var/www/owncloud/
# Activation du mode SSL
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# On indique ou est le certificat
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key
</VirtualHost>
J'ai activé ssl ,puis le site virtuel que je viens de définir :
Code: Select all
sudo a2enmod ssl
sudo a2ensite owncloud-ssl.conf
J'ai généré les clés en respectant les directives imposées par Davdroid:
Code: Select all
cd /etc/apache2/CertOwnCloud
sudo openssl genrsa -out owncloud.key 2048
sudo openssl req -new -days 3650 -key owncloud.key -out owncloud.pem
country : FR
state : RRA
city : LYON
Organization : <mettre qqchose ici>
unit name : <vide>
common name : owncloudsksbir.hd.free.fr (le nom doit correspondre à la façon dont vous allez accéder à votre serveur depuis l'extérieur )
email : <vide>
challenge password : <vide>
optionnal company name : <vide>
Créer le fichier android_options.txt comme ci-après:
Code: Select all
sudo echo "basicConstraints=CA:true" > android_options.txt
Générer les certificats:
Code: Select all
sudo openssl x509 -req -days 3650 -in owncloud.pem -signkey owncloud.key -extfile ./android_options.txt -out owncloud.crt
sudo openssl x509 -inform PEM -outform DER -in owncloud.crt -out owncloud.der.crt
On obtient donc les fichiers suivants:
- android_options.txt
- owncloud.crt
- owncloud.der.crt <-- a envoyer sur android
- owncloud.key
- owncloud.pem
On recopie maintenant les bons fichiers aux bons endroits , là où ils seront lus par notre serveur owncloud:
Code: Select all
sudo cp owncloud.crt /etc/ssl/certs
sudo cp owncloud.key /etc/ssl/private
On vérifie que notre nouveau site virtuel en ssl est opérationnel, puis on relance apache pour le prendre en compte :
Code: Select all
apachectl configtest
service apache2 restart
Autoriser owncloud avec les nouvelles URL
Owncloud version 7 ( et peut etre la précédente ) contient une directive de sécurité : on doit préciser les URL qui sont valides pour se connecter au serveur, sinon il y a un message de rejet sur la page de login.
Voici à quoi ressemble mon fichier config.php après modification manuelle : j'ai conservé 2 entrées, une depuis le réseau local, et une depuis mon URL publique :
Code: Select all
sudo cat /var/www/owncloud/config/config.php
<?php
$CONFIG = array (
'instanceid' => 'xxx',
'passwordsalt' => 'xxxxx',
'trusted_domains' =>
array (
0 => '192.168.8.24:3443',
1 => 'owncloudsksbir.hd.free.fr:3443',
),
'datadirectory' => '/var/www/owncloud/data',
'dbtype' => 'sqlite3',
'version' => '7.0.2.1',
'installed' => true,
'forcessl' => true,
);
Activer le firewall
- installation d'un module qui se souvient des règles à établir par delà un reboot ( hé oui, iptables, c'est volatile par défaut..)
Code: Select all
sudo apt-get install iptables-persistent
- installation des règles et sauvegarde :
Code: Select all
sudo service iptables-persistent flush
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3443 -j ACCEPT
sudo service iptables-persistent save
- Et pour voir le travail:
Code: Select all
sudo iptables -L --line-numbers -v
cat /etc/iptables/rules.v4
Arrivé à ce moment des opérations, j'ai redirigé le port 3443 vers l'IP 192.168.8.24, ce qui m'a permit d'utiliser enfin l'URL définitive :
Code: Select all
https://owncloudsksbir.hd.free.fr:3443
Cette redirection se fait depuis l'interface de gestion de la freebox sur la page de gestion de son compte chez free. Avec un autre FAI, ça se passe autrement..
Installation (sur android ) du certificat autosigné pour davdroid
- J'ai transféré le fichier owncloud.der.crt sur mon téléphone.
- Installation du certificat : systeme --> securité --> certificat --> importer un certificat
Création d'un compte sur android pour synchroniser les contacts
Il faut aller dans le paramétrage systeme d'android, dans la section qui permet de gérer les comptes ( c'est là on voit la liste de vos comptes de synchronisation déjà installés : votre compte google, votre compte skype* , le compte viber* , le compte whatsapp * (* Si vous avez installé l'application correspondante )
On va rajouter un compte "à la main" : il y a généralement un "+" qui permet de démarrer l'assistant d'ajout d'un nouveau compte. On choisi alors un compte de type "davdroid".
l'URL à utiliser est alors :
Code: Select all
https://owncloudsksbir.hd.free.fr:3443/remote.php/carddav/
On est maintenant dans une phase transitoire : les contacts sont encore chez google, et la nouvelle liste de contacts est (à priori ) vide.
Commencez par maitriser les fonctionnalités pas encore utilisées de votre gestionnaire de contacts : En particulier: comment sélectionner quelle(s) liste(s) de contacts je veux afficher ( avant, avec google seulement, on ne se pose généralement pas la question ).
Après quoi, il faudra transférer les contacts de google vers votre compte owncloud.
Pour l'importation des contacts dans owncloud, ça n'a pas été tout seul, j'en parle ici : http://forum.owncloud.org/viewtopic.php?f=19&t=23781
Création d'un compte sur android pour synchroniser les calendriers
On fait comme pour les contacts : il faut créer un autre compte, mais toujours de type davdroid, et la différence, c'est que l'URL est avec "caldav" au lieu de "carddav" -->
Code: Select all
https://owncloudsksbir.hd.free.fr:3443/remote.php/caldav/
L'assistant vous proposera de synchroniser les calendriers disponibles depuis votre compte Owncloud. ça peut être votre propre calendrier, plus celui d'un autre utilisateur de votre serveur owncloud qui aura voulu partager son calendrier avec vous.
Je ne gérais pas mes évènements dans google, donc je n'ai pas eu à me soucier de faire un import pour les calendriers...
Transferts de fichiers : Foldersync
J'ai testé cette application, et elle ne fonctionne pas si on tente d'utiliser l'assistant de création de compte de type "owncloud". Par contre, elle fonctionne très bien si on crée un compte de type "webdav", et qu'on précise bien le chemin vers le serveur owncloud comme ceci :
Code: Select all
https://owncloudsksbir.hd.free.fr:3443/remote.php/webdav/
Transferts de fichiers : synchronize ultimate
Ce challenger de Foldersync est disponible gratuitement. Je suis en train de le tester [ 9/10/2014]
Lien vers forum XDA
Lien vers google play
Migration vers mysql
J'ai décidé de passer à mysql ( conseil du moment : commencez par mysql dès le départ ).
J'ai trouvé un tuto qui explique comment relancer l'assistant d'installation de owncloud : http://www.2daygeek.com/how-to-migrate- ... -database/
Préalable : Installation sur mysql/mariadb
sudo apt-get install mysql-server
Puis, http://doc.ubuntu-fr.org/mysql , paragraphe 3.3 pour securiser le compte root sur mysql.
Ensuite, j'ai suivi le tuto de migration. Attention: Comme le tuto l'explique on doit recréer les comptes utilisateurs d'owncloud. Les fichiers par contre sont conservés. On perd donc tout ce qui est associé aux comptes : contacts, déclaration de partages et sans doute les calendriers.
J'ai pu restaurer mes contacts sans soucis depuis l'interface web de owncloud , avec une sauvegarde effectuée via owncloud avant la migration.
Owncloud et keepass : utiliser la synchronisation interne à keepass.
- Sur un PC sous windows 7, je cherche à synchroniser ma base keepass entre la copie locale et la copie hébergée sur owncloud avec l'outils de synchronisation interne de keepass.
Source info: http://sourceforge.net/p/keepass/discus ... /65c7d9ba/
Il faut d'abord installer le certificat racine de confiance dans le magasin du PC: Transférer sur le PC le fichier owncloud.der.crt généré plus haut.
démarrer--> exécuter --> certmgr.msc --> clic droit sur "Autorités de certification racines de confiance" --> toutes les tâches --> importer --> suivant --> parcourir et sélectionner "owncloud.der.crt" --> choisir "placer tous les certificats dans le magasin suivant:Autorités de certification racines de confiance" ( parce que c'est un certificat de type "racine" qu'on a généré plus haut, pour être aussi compatible avec android...) --> suivant --> passer la page de blabla qui explique que le PC va toujours faire confiance à "owncloudsksbir.hd.free.fr", et terminer.
Le certificat est maintenant visible dans le magasin "Autorités de certification racines de confiance", sous le nom "owncloudsksbir.hd.free.fr".
Je vérifie que c'est bien installé : Je lance IE ( hé oui.. ), et je vais sur la page https://owncloudsksbir.hd.free.fr:3443 .. IE ne m'affiche plus d'injure à propos du certificat, et l'URL n'est plus en rouge. C'est OK,on peut vite refermer IE...
Ma base keepass est stockée dans le sous-répertoire keepass, et s'appelle keepass.kdbx
Depuis ma base keepass ouverte localement, je demande une synchronisation par URL.
L'URL, c'est :
Code: Select all
https://owncloudsksbir.hd.free.fr:3443/remote.php/webdav/keepass/keepass.kdbx
Et ça fonctionne.
A l'avenir, il suffit d'aller dans fichier-->synchroniser-->fichiers récents pour retrouver l'entree qui correspond à l'URL ( le menu, ça devrait être "fichiers ET url récents".. ) et relancer la synchro.
onwcloud et fail2ban :
fail2ban,c'est un module qui surveille les tentatives de connexion utilisateur erronnées, et qui bannit d'IP de celui qui fait trop de tentatives en erreur.
Pas encore réalisé...
https://mespotesgeek.fr/owncloud-fail2ban/
C'est tout pour le moment
