Quitter Google : ma grande aventure

J’ai commencé à utiliser quotidiennement les services de Google (Gmail, Reader, Calendar, Talk…) en août 2010 lorsque j’ai acheté le Samsung Galaxy Spica sous Androïd que j’utilise encore aujourd’hui. Peu de temps après, j’ai commencé à discuter de l’emprise de ces grosses entreprises sur nos données personnelles avec Simon, un ami UTCen. Plus nous en parlions, plus il devenait évident qu’il faudrait tôt ou tard trouver une solution alternative. Simon s’y est mis très rapidement. Pour ma part ça a été beaucoup plus progressif. J’ai reconverti un vieux PC en serveur à l’été 2012 pour n’acheter un nom de domaine et installer un serveur email que fin novembre 2012. J’ai encore mis un an et demie avant de basculer complètement. Depuis hier, je peux le dire : j’ai enfin quitté Gmail.

Je vais essayé de faire un panorama des questions qui se posent lorsque l’on décide de s’auto-héberger. Tout d’abord je souhaite remercier les personne qui m’ont directement ou indirectement aidé dans la démarche : Simon, Jocelyn Delalande, Benjamin Sontag, les rédacteurs de www.auto-hebergement.fr et tous ceux qui aident les petits nouveaux.

Le serveur sera-t-il chez moi ou dans la salle blanche d’un hébergeur ?
Quel fournisseur d’accès à internet dois-je choisir ?
Quel nom de domaine choisir ?
Quel OS installer sur ma machine ?
Quel certificat TSL ? Quel chiffrement sur HTTP ?
Puis-je réellement héberger mes emails en toute sécurité ?
Comment chiffrer mes emails ?
Quelle méthodologie de sauvegarde mettre en place ?
Doit-on préférer les applications web ou les applications natives ?
Quelle technique d’identification utiliser ?
Quels autres services voudrais-je installer dans les mois à venir ?
Quels sont les autres services du quotidien qui me lient toujours à Google ?

Le serveur sera-t-il chez moi ou dans la salle blanche d’un hébergeur ?

J’ai choisi d’héberger moi-même physiquement mon serveur car c’est ce qui se rapproche le plus de la philosophie d’internet : chaque ordinateur connecté reçoit et émet des données(fournit des services). De plus on parle beaucoup aujourd’hui des problèmes d’interco notamment entre Google et les opérateurs de détail européen. Le peering, l’échange de données entre deux réseaux, est historiquement gratuit et équilibré. La centralisation des lieux d’hébergement et entre autres les vidéos de Youtube (et on risque de parler rapidement de Netflix) mettent en cause cette externalité positive sur laquelle repose internet. Héberger mon serveur chez moi est donc en quelque sorte un acte « militant » prouvant que l’intelligence du réseau Internet est toujours en périphérie, même aujourd’hui.

Attention cependant, ce choix implique quelques inconvénients. La disponibilité de votre serveur est tributaire du bon fonctionnement du réseau électrique et de votre connexion internet. De plus, si vous êtes soucieux de l’écologie, il faut faire attention lors du choix de votre machine. J’ai racheté l’ordinateur portable d’un ami. Je ne sais pas exactement combien il consomme mais à l’année ça doit être relativement important. Notez que l’achat d’un portable est intéressant car avec une batterie vous avez un onduleur intégré pour éviter les arrêts brutaux en cas de coupures, plus fréquentes que l’on ne croit, du réseau électrique.

Un dernier point à vérifier est votre débit en upload. Si vous souhaitez pouvoir utiliser de manière fluide votre serveur, vous devez disposer d’un débit montant correct.

Quel fournisseur d’accès à internet dois-je choisir ?

Le choix du fournisseur d’accès internet n’est pas anodin. Globalement le débit montant dont vous disposez ne dépend plus aujourd’hui du choix votre FAI mais de la qualité de votre boucle locale (je parle du cuivre). C’est physique et vous n’y pouvez rien.  En revanche, si vous souhaitez disposer de tous les services dont votre serveur aura besoin pour fonctionner de manière optimale, le choix du FAI est capital. L’idéal serait d’adhérer à un fournisseur de la Fédération French Data Network qui sont des associations locales, à taille humaine, fournissant de l’internet neutre (désolé, c’est sur Youtube) et luttant pour qu’internet redevienne neutre.

Si vous devez choisir parmi les 5 grands FAI commerciaux Français (parce que Papa ou Maman veut la télé par ADSL par exemple) je vous conseille très vivement que choisir Free qui fournit facilement les services suivants : IPv4 fixe, d’une IPv6, d’un port 25 ouvert, d’un reverse DNS IPv4. Orange est le pire : il n’en fournit aucun. Orange est resté bloqué à la mentalité minitel et ne fournit qu’un moyen de consommer goulûment des octet sur le réseau, il ne fournit pas un accès internet.

Je vais également essayer de lister mes déceptions au cours de cet article. Première déception : Free ne fournit pas encore de reverse DNS IPv6, ce qui semble compliquer les choses : il faut forcer l’envoi SMTP en IPv4 vers les serveurs vérifiant le reverse DNS en IPv6.

Quel nom de domaine choisir ?

LA grande question ! Sachez que si dans un premier temps vous souhaitez juste « jouer » avec votre serveur, vous pouvez soit utiliser votre IP, soit un domaine gratuit du genre No-ip ou des TLD en .tk. Free vous permet également de choisir gratuitement votre nom de domaine en hd.free.fr.

Au delas de la phase de test, il vous faudra louer un nom de domaine auprès d’un registar. Je vous conseille de choisir un registar qui sera capable, si un jour vous en avez besoin (peut-être même en urgence) d’étendre les services que vous lui louez à de l’hébergement email, web ou bien à un serveur complet dans ses baies. On ne sait jamais, ça peut toujours servir. Dans cette optique, je vous conseille de choisir un registar français ou européen (ie, dans l’UE). Entre les outils légaux (Patriot Act) et illégaux (cf Snowden et NSA) de nos amis États-Uniens, je préfère rester en Europe. D’autre part, je ne suis pas sur qu’il soit possible de réserver de .fr auprès d’un registar outre-atlantique.

Choisissez bien votre nom de domaine car il vous suivra probablement pour les années ou décennies à venir. Pas trop long, facile à dicter…. Évitez aussi les noms de domaine avec des caractères spéciaux (lettres accentuées, idéogramme, cyrillique…) appelés IDN. Notez qu’il y a régulièrement des promotions chez les grands registars (OVH, Gandi…).

Si votre bureau d’enregistrement vous fait des misères, il est facile de migrer son nom de domaine vers un autre registar proposant la même extension. La procédure est normalisée, automatique et rapide.

J’ai choisi OVH. Une petite déception : ne pas pouvoir choisir un TTL inférieur à 24h pour ma zone DNS.

Quel OS installer sur ma machine ?

Bien évidement, je vous conseille très très vivement d’installer une distribution GNU/Linux. Debian me paraît stable, très bien documentée et tout à fait adaptée à cette utilisation. Tous les logiciels dont vous aurez besoin seront disponibles compilés dans les dépôts.

Cependant, si vous souhaitez limiter le temps de paramétrage de votre serveur, Yunohost (dérivée de Debian) est l’idéal. Tout y est déjà pré-configuré pour un serveur complet et sécurisé. Cela dit, configurer au moins une fois tous les composants d’un serveur juste pour bidouiller est très formateur. D’autres interface web d’administration existent telles que AlternC (initié par Valentin Lacambre puis réécrit par l’équipe de l’AutreNet), le traditionnel Webmin… Cependant ces projets semblent plus orientés hébergement massif professionnel que serveur all-in-one avec intégration pré-machée pour auto-hébergement personnel.

Valentin Lacambre

Quel certificat TSL ? Quel chiffrement sur HTTP ?

Si vous souhaitez héberger un serveur web, vous serez probablement amené un jour à vouloir chiffrer certains flux en HTTPS. Par exemple, il est inconcevable d’utiliser un webmail en HTTP. Personnellement j’ai choisis de tout chiffrer par défaut. Certains crieront au gaspillage de ressources. Je suis persuadé qu’il est bien plus simple et bien plus sûr de tout chiffrer plutôt que de m’apercevoir un jour que des mots de passe ont fuité car j’ai oublié de chiffrer l’espace d’administration de mon blog ou autre.

Pour chiffrer vos flux HTTPS, il va vous falloir un certificat TLS. Vous avez plusieurs possibilités :

  • auto-signer votre propre certificat
  • le faire signer par CAcert
  • le faire signer par StartSSL
  • le faire signer par tout autre autorité de certification reconnue (cher !)

Toujours dans une démarche d’indépendance, je suis longtemps resté avec un certificat auto-signé. Cela impliquait de créer une exception de sécurité sur le navigateur de mon PC et de valider l’avertissement de sécurité lorsque j’accédais à mon serveur web depuis un autre PC. La chose s’est compliquée lorsque j’ai décidé de chiffrer tout mon blog. Il était peu envisageable de demander à mes visiteurs de valider une exception de sécurité avant d’accéder à mes saints écrits. Je devais donc faire signer mon certificat par une autorité de certification. CA-cert a l’avantage d’être communautaire mais le certificat racine de cette autorité n’est pas installé  par défaut dans tous les navigateurs web fonctionnant sous M$ Windows. J’ai donc choisi l’offre commerciale de StartSSL : certification gratuite pour un seul sous-domaine.

Ne disposant que d’un sous-domaine, j’ai configuré Apache pour réécrire automatiquement les URL de la forme xxx.dumaine.me en www.dumaine.me/xxx/

Puis-je réellement héberger mes emails en toute sécurité ?

Il est encore un peu tôt pour répondre à cette question en me fondant sur mon expérience personnelle. J’ai un serveur email sur ma machine depuis plus d’un an mais je m’en suis peu servi pour le moment. L’excellente conférence de Benjamin Sontag sur l’email (cycle de confs de l’IEUFI) montre qu’héberger son serveur email est tout à fait faisable si on prend un minimum de temps pour s’intéresser à la config pour faire les choses correctement. À défaut, vous devrez utiliser  des outils pré-configurés comme Yunohost et mettre à jour proprement votre zone DNS.

En cas de panne d’un serveur SMTP, l’émetteur répète l’envoi durant 4 au moins quatre jours (en général, c’est une convention). Afin de ne louper aucun email si je suis en vacances durant plus de quatre jours, j’ai créé un compte sur le serveur email OVH (avec les alias qui vont bien) et je l’ai mis en serveur MX secondaire. Ainsi en cas de panne de ma machine, je réceptionne les emails sans bouncer mes correspondants. D’autre part, j’utilise un client SMTP local sur mon ordinateur personnel : j’ai donc accès à mes anciens emails quand mon serveur est hors-ligne.

Le seul risque actuellement serait que mon serveur crash (panne de disque) entre la réception d’un email et la synchro IMAP sur mon PC, la nuit par exemple. Le seul moyen que je vois pour contrer la chose serait d’exécuter automatiquement un script (via un wrapper) qui duplique l’email sur un autre serveur de confiance ou un NAS dès sa réception par mon serveur SMTP. Ça me paraît un peu lourd donc pour le moment je me débrouille sans.

Comment chiffrer mes emails ?

L’extension Enigmail de Thunderbird me parait très bien fichue. Je n’ai pas encore d’extension Roundcube pour le chiffrement. Cependant, l’extension pour navigateurs web www.mailvelope.com doit permettre de chiffrer le texte de m’importe quel champ texte. Je ne l’ai pas encore testée. Cependant, l’utilité d’un webmail est de pouvoir accéder à sa messagerie en déplacement donc lors que l’on a ni le temps ni la possibilité d’installer des extensions dans son navigateur.

Un truc pratique serait de pouvoir stocker la version déchiffrée des messages sur le serveur IMAP une fois reçus. En cas de perte de certificat dans vous pourrez toujours consulter vos anciens emails.

Quelle méthodologie de sauvegarde mettre en place ?

Le plus simple est d’utiliser cron pour sauvegarder automatiquement vos fichiers et notamment les sauvegardes de vos bases de données (fichiers .sql) chaque nuit. Vous pouvez les sauvegarder sur un disque USB ou bien chiffrer les données et les envoyer dans le cloud (dropbox, gdrive, oneDrive…). Il existe également des outils pour faire des sauvegardes différentielles (on ne copie que ce qui a changé depuis la dernière sauvegarde complète)  ou incrémentales (on ne copié que ce qui a changé depuis la dernière sauvegarde incrémentale). Rsync, lui, synchronise des répertoires distants en ne transférant que ce qui a changé. Il est assez réputé.

Doit-on préférer les applications web ou les applications natives ?

Les applications web sont pratiques car elles fonctionnent partout de la même manière, indépendamment du PC. Les applications natives nécessitent de la configuration mais sont plus économe en ressource réseau (pas besoin de tout recharger à chaque fois), gardent une copie locale des données (pratique en cas de pépin sur le serveur) et donc permettent une consultation hors-ligne.

Bonne nouvelle : il n’y a pas à choisir. Le plus important ce sont les protocoles ! La plupart des applications internet sont basées sur des protocoles ouverts et standards (codifiés dans des RFC) permettant d’utiliser un même service avec plusieurs technologies. L’IMAP vous permettra de consulter vos emails chez vous, de les classer dans votre clients lourd et de les retrouver tels quel dans votre webmail quand vous serez au boulot ou bien sur votre client mobile le weekend chez belle-maman. Le webdav permet une synchro de fichiers, le carddav des contacts et le caldav des calendriers.

Une déception : il n’est visiblement pas possible de synchroniser les groupes d’appartenance des contacts avec un serveur carddav sous Owncloud et un client Thunderbird. Je ne sais pas si c’est la faute du protocole ou bien si les implémentations sont incomplètes. De plus Owncloud agrège les différents contacts des carnets d’adresse sans pouvoir retrouver quel contact appartient à quel carnet d’adresse a postériori.

 

 

 

Application Serveur Client console Client graphique natif Client web Client Androïd natif
Envoi d’email SMTP Postfix, Sendmail Mutt, SMTPS Thunderbird, Évolution Roundcube, Horde client intégré
Réception d’email IMAP Dovecot Mutt, MS IMAP Thunderbird, Évolution Roundcube, Horde client intégré
Synchro de contacts CardDav Baikal, Owncloud  pyCardDAV Thunderbird(extension SOGO connector), Évolution Roundcube, Horde, Owncloud CardDavSync, ContactSync
Synchro agenda CalDav Baikal, Owncloud  Khal Thunderbird(extention Lightning), Évolution Roundcube, Horde, Agendav, CalDavZAP, Owncloud CalendarSync, CalDAVSync
Synchro de fichiers WebDav mod_webdav d’Apache, Owncloud Cadaver Nautilus, Konqueror WebDAV File Manager
Messagerie instantanée XMPP ejabberd Poezio, FreeTalk Thunderbird, Pidgin Jappix, Owncloud Xabber (multi-proto)
Streaming de musique Ampache mod_ d’Apache, Owncloud Amarok Amdroid,

Easy Music Transfer
Visionneur de flux RSS Pas de proto de synchro newsbeuter, raggle Thunderbird, Firefox… Leed, TinyRSS, Owncloud  Feedly, FeedR

 

Nota : Owncloud n’est pas vraiment un client CardDav/CalDav à proprement parler. Il dispose d’une interface web permettant de modifier  les calendriers et contacts qu’il contient.

Owncloud permet aussi d’héberger un serveur pour Firefox Sync. Il est là aussi dommage que ce protocole ne soit pas standard et implémenté dans d’autres navigateurs de manière inter-opérable. J’utilise actuellement la version 29 en nighlty de Firefox : je ne sais pas comment utiliser la version 1 de FirefoxSync. Seule la nouvelle version Firefox Account m’est proposée et m’oblige à utiliser les serveurs de la fondation. Ce que je refuse de faire.

Owncloud ne permet pas de gérer de reminder, et encore moins d’envoyer des email ou autres messages instantanés. C’est un gros manque.

Certaines applications sont (malheureusement) indépendantes de toute normalisation ouverte et donc non interopérables. Pour d’autres une normalisation n’aurait pas beaucoup d’intérêt car elle ne sont pas destinées à échanger avec d’autres environnements. Les applications suivantes sont également installées sur mon serveur :

  • Plateforme de blog : WordPress (un peu usine à gaz mais fonctionnel)
  • un proxy HTTP anonymisant et transparent via le module apache (pour une utilisation ponctuelle mieux vaut établir un tunnel via SSH)
  • Publication de texte anonyme (Pastebin like) : Zerobin (merci SebSauvage)
  • Partage de liens : Shaarli (merci SebSauvage)
  • Réplication automatique de blog pour industrialiser l’effet Streisand : Autoblog (merci SebSauvage et pas merci à la fois : je peux plus dire de conneries et les corriger a posteriori XD)

Je trouve dommage qu’il n’y ait pas moyen de synchroniser la liste des flux RSS ni l’état (lu ou non-lu) de chaque item de ces flux. Je trouve assez décevante l’offre d’agrégateurs RSS natifs. Je n’en ai trouvé aucun pour le moment qui permette d’afficher une liste conséquente de flux sans trop scroller, de lire directement la liste des flux en scrollant, de marquer comme lu les flux qui on été srcollés et de ne pas afficher le titre des flux qui n’ont aucun item non-lu. Du coté des applications web il m’a fallu faire une petite modif du code PHP dans Leed et une petite modif de CSS dans Owncloud (pour afficher les titres des flux en plus petit).

Thunderbird ne peut pas synchroniser un carnet d’adresse par CardDav sans extension ! À l’heure de FirefoxOS c’est un sacré problème ! De plus, lorsque j’essaye d’importer mes carnets d’adresses vCard exportés avec Gmail, Thunderbird ne récupère pas les numéros de téléphone alors que cela fonctionne très bien dans Owncloud. D’autre part, la structure du carnet d’adresse est ultra figée. Je dispose d’une cinquantaine de champs qui me sont inutiles mais je ne peux apparemment pas associer plus de deux adresses email à un contact dans Thunderbird.

J’essaye de limiter le nombre de technologies tournant en permanence pour limiter le gaspillage de ressources. Ainsi j’évite tout ce qui utilise Java ainsi que node.js(Latex Sharing,  EtherpadLite, Laverna). J’essaye ainsi de me limiter à PHP et Python.

Quelle technique d’identification utiliser ?

L’authentification entre applications (le Single-Sign-On) permet de s’authentifier une fois pour toute auprès d’un service qui sera contacté par les autres applications pour propager l’identification et les paramètres (email typiquement) d’un utilisateur. Cela permet de ne gérer qu’un seul mot de passe et donc de pouvoir le changer plus souvent et plus rapidement. Certaines solutions propose une déconnexion centralisée.

Il existe de nombreux protocole de SSO sur le web. Cependant je n’ai pas trouvé de solution réellement satisfaisante :

  • OpenID est léger mais oblige à resaisir son URL à chaque connexion dans chaque appli
  • LemonLDAP est mutli-protocoles mais lourd
  • Authentic2, de entreouvert.org est en python et multi-protocoles mais me parait complexe à mettre en oeuvre

D’autre part, assez peu d’applications libres ont mis en place ces protocoles d’authentification unique. Dans l’état actuel des choses, je reste donc avec un couple login/password par application et utilise leurs cookies pour garder ma session ouverte… sur mon PC.

Quels autres services voudrais-je installer dans les mois à venir ?

C’est pas tout ça mais y’a encore du boulot !

  • passer mes boîtes emails du format mailbox au format maildir
  • réparer le plugin depublication du taux d’accès IPv6
  • réparer les QRcode shaarli
  • installer Seive
  • supprimer l’adresse IP du client envoyant l’email des headers SMTP
  • réinstaller un serveur OpenID
  • installer Spamassassin, Amavis, ClamAV
  • importer mes notes depuis ZohoNotebook dans Onwcloud : avec une archi trois niveau et un éditeur HTML ça serait mieux
  • gestionnaire de sondages (Doodle-like) : Framadate
  • gestionnaire de sondage (Google sondage like) : Limesurvey
  • creuser du coté du projet Unhosted
  • VPN : OpenVPN
  • un portail de mashup ? Posh ?
  • un moteur de recherche décentralisé : Seek
  • TOR
  • un truc léger voir intégré dans le module de document partagé de Owncloud pour faire du Latex collaboratif en ligne
  • la mm chose pour éditer de manière collaborative des feuilles de caclus/graphique et des présentations
  • un serveur SIP : Asterisk
  • solution de confs WebRTC : pour éviter au destinataire ponctuel d’installer un soft
  • héberger mon propre serveur DNS avec Bind : juste pour jouer (pas en prod) car iveau résilience c’est moyen et ça apporte peu.
  • utiliser (voire héberger ?) un DNS alternatif
  • un gestionnaire de projet (genre un redmind léger) qui permette de ticketer et parcourir les dépots Hg
  • un back up ditant, chiffré et distribué : Thaoe FS
  • un réseau social/micro blogging : (Identi.ca, Diaspora, Movim…)
  • FTPS ? utile avec SSH et WebDav ?

Faudrait aussi que je me mette à développer des plugins pour essayer d’apporter ma pierre à l’édifice et combler certains de manques que j’ai relevés. C’est ça aussi l’esprit du libre.

Quels sont les autres services du quotidien qui me lient toujours à Google ?

Pour le moment j’utilise encore quasi exclusivement le moteur de recherche Google. Je vais essayer de me mettre progressivement à DuckDuckGo et d’installer un node Seek sur mon serveur… mais Rome ne s’est pas faite en un jour. Avec DoNotTrack activé et mon compte utilisateur déconnecté, le risque pour ma vie privé est déjà assez réduit.

J’utilise encore aussi beaucoup Google Maps. OpenStreetMap est performant mais je crois qu’on va pouvoir attendre longtemps avant de y pouvoir consulter des photos prises par satellite…

Youtube… car l’effet de réseau induit par le contenu ou la masse d’utilisateurs (comme les réseaux sociaux fermés) est bien difficile à combattre… pour le moment.

Sans compter que je suis encore présent sur Facebook et assez actif sur Twitter.

10 réflexions sur « Quitter Google : ma grande aventure »

  1. Tiens, tu suis mon blog Soizic ?!

    Ça paraît pas simple car j’ai détaillé pour les plus curieux. Dans la pratique les plus pressés peuvent s’en tenir à quatre étapes :
    * commander un pack serveur+nom de domaine chez OVH ou Gandi
    * installer Yunohost dessus
    * paramétrer le DNS
    * profiter.

  2. T’aurais pu m’envoyer sur cet article à l’époque où je découvrais tout ça ! C’est très bien fait ; c’est le genre d’article qui remets les idées en place quand on se cogne aux difficultés de l’auto-hébergement… Et je savais pas que ton serveur était chez toi.

  3. C’est très intéressant.
    Il y a plusieurs années j’ai déjà mis en place mon propre serveur de services (mails, cloud, map, web, …). Je n’aime pas l’idée qu’un Google puisse presque tout savoir de moi.
    Je me suis rapidement rendu compte que de mettre en place ses propres services pouvait coûter cher (en équipement, en électricité, mais aussi en temps et en compétences) comparé à du Google « gratuit ».

    Est-ce que tu pense que ce réapproprier (ré-internaliser) ces services a de l’avenir ?

    1. Je ne suis pas sur de bien saisir la question… en ce qui me concerne j’ai bien « ré-internalisé » ces services oui.

      Comme j’ai envie de faire pas mal de choses à la main j’ai toujours une TODO liste longue comme le bras, mais avec un RaspberryPI2 et Yunohost il est assez aisé d’avoir une config sécurisée « clé en main ».

  4. Bonjour, je trouve cela très intéressant, je suis dans la même démarche et j’utilise aussi les logiciels décrits. par contre, je loue un serveur.
    Par contre, je cherche à me débarrasser de Gapps et play store sur mon téléphone.
    il semble qu’il n’y ait pas beaucoup d’applications pour android sans play store ! je pense particulièrement à Gmaps.
    avez vous des idées?

Laisser un commentaire

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