Base de connaissances
Cozy
Cozy est une plateforme flexible. Ses différentes applications lui permettent de s’adapter à de nombreux usages. Découvrez ce que notre équipe et la communauté ont intégré pour vous.
Fonctionnement
Plus qu’un simple serveur personnel, Cozy est un véritable assistant personnel. Fort des informations fournies par le croisement des données, il aide à prendre les bonnes décisions. Tout ceci se fera dans un total respect de la vie privée, car elles seront stockées dans un espace personnel dédié (VPS ou Serveur).
Installation
Le processus d’installation est valable pour les distribution Debian 8 (et plus) pour pouvoir suivre les étapes ci-dessous.
(Des utilisateurs nous ont signalé que cette procédure pouvait également fonctionner pour GNU/linx Mint)
root@debian:~# lsb_release -c Codename: jessie
Cozy a besoin d’un serveur web. Par défaut, nous installons et configurons un serveur Nginx, mais si un serveur Web est déjà installé, vous pouvez l’utiliser en ajoutant un hôte virtuel pour Cozy.
1. Assurez-vous que les paquets wget, ca-certificatesetapt-transport-https` sont bien installés
sudo apt-get install ca-certificates apt-transport-https
2. Importez la clé publique du dépôt
wget -O - https://debian.cozycloud.cc/cozy.gpg.key 2>/dev/null | apt-key add -
3. Ajoutez le dépôt Cozy à vos sources de logiciels.
echo 'deb [arch=amd64] https://debian.cozycloud.cc/debian jessie cozy' \ > /etc/apt/sources.list.d/cozy.list
4. Installez Cozy
sudo apt-get update ; sudo apt-get install -y python-cozy-management ; sudo cozy_management install_cozy
(lisez également le paragraphe ci-dessous à propos des dépendances)
5. Assurez vous que le service Nginx est bien démarré :
sudo service nginx start
6. Paramétrez votre compte Cozy et accédez aux services :
https://ip-du-serveur-cozy/
À propos des dépendances
Pour fonctionner, Cozy a absolument besoin d’une base de données CouchDB, celle-ci sera donc installée automatiquement. Mais il a également besoin d’un serveur SMTP écoutant sur le port 25 de la machine, et d’un serveur Web agissant comme un proxy inversé. Le paquet Cozy n’impose pas l’installation de ces composants, car, selon votre configuration, vous pouvez vous en passer (le proxy peut par exemple être installé sur une autre machine). Cependant, pour une installation basique de Cozy, vous devriez installer les dépendances recommandées en utilisant la commande
apt-get install --install-recommends cozy.
Les paquets recommandés sont :
- un serveur Web, de préférence Nginx. Il va gérer les certificats SSL et rediriger les requêtes vers le serveur Cozy lui-même ;
- un serveur SMTP, pour envoyer des messages de la part de votre Cozy (par exemple pour réinitialiser votre mot de passe, vous rappeler un rendez-vous ou inviter des contacts à un évènement).
Comment re-générer le certificat ?
sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/cozy/server.key -out /etc/cozy/server.crt -days 3650 -subj "/CN=URL.DE.VOTRE.INSTANCE"
Installer un certificat SSL (via Let’s Encrypt)
Pré-requis
-
- posséder un nom de domaine ;
- héberger soi-même son Cozy ;
- une addresse email (ça n’est pas obligatoire mais hautement recommandé : Let’s Encrypt utilisera cette adresse pour signaler des problèmes de sécurité et vous prévenir quelques jours avant que votre certificat expire).
Installation de Let’s Encrypt
Toutes les commandes suivantes doivent être exécutées avec les droits root. Faite-les donc précéder de sudo, ou, plus simplement, lancez un shell avec ces droits :
sudo su
Assurez vous que les paquets git et ca-certificates sont installés :
apt-get install git ca-certificates
Installez Let’s Encrypt depuis son dépôt Github :
git clone https://github.com/certbot/certbot /root/letsencrypt
NB : L’ancien repo https://github.com/letsencrypt/letsencrypt est devenu obsolète
Configuration de Let’s Encrypt et génération de votre premier certificat
Dans cet exemple, nous allons utiliser l’adresse mon_adresse@exemple.com pour obtenir un certificat pour un serveur Cozy sur le domaine https://mon_cozy.com.
Tout d’abord, il faut accepter les conditions générales Let’s encrypt : ici
Pour vérifier que vous êtes bien le propriétaire du domaine pour lequel nous demandez un certificat, le serveur de Let’s encrypt a besoin de communiquer avec votre serveur Web. Vous pouvez soit gérer cela avec votre propre serveur Web, en rendant accessibles des fichiers fournis par Let’s encrypt à une URL déterminée, soit arrêter temporairement votre serveur Web et lancer un serveur spécifique à Let’s Encrypt, qui s’occupera de la validation du domaine et de la génération des certificats. C’est cette seconde option que nous avons choisie.
Nous commençons donc par arrêter le serveur Nginx, ce qui va rendre votre Cozy inaccessible pour quelques minutes :
/etc/init.d/nginx stop
Sauvegarder votre ancien certificat et sa clé :
mv /etc/cozy/server.key /etc/cozy/server.key.backup mv /etc/cozy/server.crt /etc/cozy/server.crt.backup
La commande suivante va créer un compte sur les serveurs de Let’s Encrypt et générer votre premier certificat. Adaptez la avec votre adresse email et le nom de domaine de votre Cozy :
/root/letsencrypt/letsencrypt-auto certonly \ --standalone --agree-tos \ --email mon_adresse@exemple.com -d mon_cozy.com \ --standalone-supported-challenges tls-sni-01
Installez ensuite le nouveau certificat, généré dans le dossier /etc/letsencrypt/live/mycozy.domain.com/ (attention, le chemin des fichiers dépend de votre domaine) :
ln -s /etc/letsencrypt/live/mycozy.domain.com/privkey.pem /etc/cozy/server.key ln -s /etc/letsencrypt/live/mycozy.domain.com/fullchain.pem /etc/cozy/server.crt
Il ne reste plus qu’à redémarrer Nginx :
/etc/init.d/nginx start
Vous pouvez à présent vous connecter à votre Cozy et vérifier, en cliquant sur le cadenas situé à la gauche de l’URL, que la communication est sécurisée grâce au nouveau certificat.
Mettre en place un renouvellement automatique tous les mois
Les certificats Let’s Encrypt ne sont valide que 90 jours. Il faut donc les renouveler régulièrement. Nous allons automatiser ce renouvellement en créant une tâche périodique qui générera de nouveaux certificats le 1er de chaque mois.
Créez un fichier /root/renew_cert.sh contenant le script suivant :
#!/bin/sh /etc/init.d/nginx stop /root/letsencrypt/letsencrypt-auto certonly --standalone -d domaine_cozy.com --standalone-supported-challenges tls-sni-01 --renew-by-default /etc/init.d/nginx start
(en replaçant domaine_cozy.com par l’adresse de votre Cozy)
Rendez ce script exécutable
chmod u+x /root/renew_cert.sh
Vous pouvez testez ce script en l’exécutant manuellement (attention, des quotas sont en place : vous ne pouvez générer que 5 certificats par semaine pour un même domaine).
Il nous reste à lancer le script automatiquement tous les mois.
Ouvrez votre crontab :
crontab -e
Ajoutez la ligne suivante à la fin du fichier, puis enregistrez-le
0 3 1 * * /root/renew_cert.sh
Désormais, le certificat sera désormais automatiquement renouvelé le 1er de chaque mois à 3h du matin.
Annexe d’installation pour l’application Kresus
Pour environnement Debian
Pour pouvoir utiliser Kresus, il est nécessaire de disposer des dépendances compilées Weboob. Kresus se chargera ensuite de toutes les installations et mises à jours. Pour le cas présent, voici les dépendances nécessaires :
apt-get install python-dev libffi-dev libxml2-dev libxslt-dev libyaml-dev libjpeg-dev python-virtualenv.
Il est désormais possible d’installer weboob ainsi que toutes ses applications:
apt-get install weboob weboob-qt
Si vous souhaitez uniquement disposer de l’application en mode console, vous pouvez utiliser :
apt-get install weboob
Dans le cas où seulement les bibliothèques et dépendances du coeurs sont nécessaire (conseillé pour Kresus) :
apt-get install python-weboob-core
Il faudra alors redémarrer l’application Kresus depuis la console de gestion Cozy avant de pouvoir la lancer correctement.