Garage, stocker des données en dehors des datacenters

Bonjour à toutes et tous,

Je me permets d’ouvrir un fil unique pour vous partager notre actualité autour de notre logiciel Garage.

À propos de Garage

Logo Garage

Garage est un outil qu’on développe depuis maintenant bientôt 2 ans. Il est conçu pour nos besoins de petit hébergeur indépendant hors des datacenters. Il permet de stocker des données de manière distribuée, afin de permettre une bonne disponibilité malgré les coupures/pannes d’ordinateur, de courant, d’internet, etc.

Garage implémente l’API S3 qui est un standard de facto, et donc Nextcloud, Peertube, Matrix, Mastodon et bien d’autres logiciels sont déjà compatibles. Garage intègre aussi un système de publication de site statique, ce qui permet d’avoir un seul service pour envoyer ses fichiers et faire serveur web.

Si vous êtes plutôt vidéo, une démonstration de ces fonctionnalités est disponible (15 minutes) : https://video.tedomum.net/w/moYKcv198dyMrT8hCS5jz9

J’ai déjà parlé de Garage sur le forum CHATONS par le passé :

Pour accéder au site officiel de Garage, c’est par ici : https://garagehq.deuxfleurs.fr

Nous présenterons Garage au FOSDEM

Et je me permets d’utiliser ce fil de discussion pour vous informer que nous présenterons Garage au FOSDEM le week-end prochain.

Le FOSDEM est une conférence d’environ 5000 personnes destinées aux développeurs et développeuses du libre. Nous présenterons le fonctionnement interne de Garage, nous ferons quelques démonstrations et nous serons là pour échanger. Ça se passera dans la devroom Software Defined Storage.

Une redifusion de l’évènement sera disponible.

Le lien de l’évènement sur le site du FOSDEM : https://fosdem.org/2022/schedule/event/sds_garage_introduction/

Vous pouvez retrouver toutes les infomations sur notre blog : https://plume.deuxfleurs.fr/~/Deuxfleurs/Garage%20sera%20à%20la%20conférence%20du%20logiciel%20libre%20"FOSDEM%202022"

7 Likes

Hello,

Merci pour la présentation! Je ne connaissais ni deuxfleurs ni Garage (et je me demande comment je suis passé à côté).

Un peu HS, mais je suis vraiment impressionné par la qualité de votre documentation et l’intelligence des outils que vous avez développé. J’ai beaucoup aimé votre post de blog sur l’autogestion.

Je vais jeter un oeil plus qu’intéressé à Garage, puisque je fais un état de l’art des systèmes de backup et de stockage distribué en vue de créer un système de sauvegarde solidaire, où les acteurs s’échangent leurs sauvegardes (c’est un projet de recherche).

1 Like

Oui, stockons nos données par nous même.
Par contre, avec garage, on doit gérer des « cluster »,

Connaissez-vous IPFS?

https://www.youtube.com/watch?v=7MGMkGq60VU

https://github.com/anthonybudd/S4

Puet-être est-ce possible de rendre garage compatible?

On prépare une revue assez large des différentes techno de stockage distribué car c’est vrai que c’est une question qui revient souvent. On a donc connaissance de Ceph, Riak CS, Openstack Swift, Minio, OpenIO, GlusterFS, SeaweedFS, Tahoe-LAFS, IPFS, Freenet, HDFS, etc. En attendant, pas mal des différences avec ces projets sont expliquées dans les commentaires de ce fil Hacker News.

Pour IPFS et Content-based addressing, je ne suis pas expert donc c’est peut-être imprécis. Il me semble que ce sont des techniques qui s’adressent à du contenu public : les autres nœuds du réseau peuvent, si ils le souhaitent, mettre en cache le contenu.

Premier point : si ils le souhaitent, si personne n’est intéressé par mon contenu, il n’y aura pas de copie dans le réseau, et donc je risque de perdre mes données en cas de défaillance de mon noeud.

Deuxième point : on doit stocker du contenu privé comme des emails, des photos privées partagées dans notre outil de chat, etc. Ces contenus privés n’ont pas vocation à se retrouver sur le réseau.

Le projet IPFS est conscient de ces 2 limitations et propose IPFS Cluster avec 2 modes : un strong consistency avec Raft, un autre eventual consistency. Le premier, avec Raft, aura les mêmes problèmes que Minio (cf notre benchmark), le second, à cause de l’eventual consistency, ne fonctionnera pas avec les applications existantes (quand tu créer un fichier, il n’est pas visible tout de suite). Avec Garage, on arrive à fournir le bon niveau de cohérence sans avoir à recourir à Raft.

Après, rien ne t’empêche d’interconnecter une instance Garage au reste du réseau IPFS à travers la passerelle ipfs/go-ds-s3.

Et tu peux très bien décider d’exposer une instance Garage à travers Tor, il te suffit de configurer un Onion Service (avant ça s’appelait Hidden Service) dans la configuration de ton daemon Tor. Si des personnes ici sont intéressées, je peux donner les étapes détaillées.

Ton lien « S4 » semble être un assemblage de technologies : Tor, IPFS, ipfs/go-ds-s3, minio, docker, etc. selon le schéma du dépôt. Dans ce schéma, tu peux remplacer Minio par Garage de manière assez transparente, et tu ne perds rien au passage tout en profitant des qualités et défauts de Garage, et voilàaaa :slight_smile:

Par contre je ne peux m’empêcher de penser que les performances d’un tel empilement de technologies sur un pauvre raspberry pi doivent être abyssalement mauvaises, je déconseille fortement de se lancer dans de tel projets pour des services importants ^^

En participant à l’expérience « Astroport 20;12 », je suis depuis quelques mois en mode « OffGrid » avec une connexion à l’Internet global intermittente.

On explore la culture sur sol vivant, et une nouvelle organisation qui permette de vivre sur la planète sans devoir en consommer 5. Dans ce cadre on expérimente ipfs pour assure la propagation des données façon « pigeon voyageur » entre Oasis et Astronautes :wink:

ipfs arrive a fonctionner sur RaspberryPi Zero. Cela nous permet d’explorer une structure totalement pair à pair du réseau.

On utilise Nextcloud pour synchroniser les smartphone et collecter les vidéos
Une chaine Youtube a démarré

https://www.youtube.com/watch?v=qg8VVyTnyeU

Tu crois qu’on pourrait introcuire Garage dans ce contexte?

On vient de publier une nouvelle version (0.7.0) de Garage avec le support de la télémétrie, l’integration de Kubernetes et des bugfixes. Le détail est dans notre billet de blog ici : Garage - An open-source distributed storage service - Bonne lecture !

@qo-op j’ai pas vraiment de réponse idéale à te donner pour Garage. Je pense qu’il y a pas mal de choses dans la sphère Device to Device (D2D) qui est plus prévu pour que notre logiciel. Je serais curieux d’avoir ton retour sur Manyverse (Secure Scuttlebutt). Une fois installé sur ton Android, tu peux te synchroniser directement de téléphone en téléphone. Donc si Alice s’est synchro avec Bob, puis plus tard Bob avec Charle, Charle pourra récupérer les messages de Alice en même temps que ceux de Bob. D’ailleurs son créateur vit sur un voilier. Après, pour revenir sur Garage, un point que j’ai pas encore testé, ce serait de prendre un vieux téléphone, compiler Garage pour le faire tourner dessus, et comme ça tu as une petite plateforme autonome qui consomme rien sur laquelle tu peux stocker des données et les partager, y compris à travers du web. Et pour pousser l’idée jusqu’au bout, associer plusieurs téléphones sur un réseau local (voire maillé, à la B.A.T.M.A.N.) qui forment une seule grappe Garage. Là on est clairement dans le hack car on a pas prévu Garage pour ce cas d’usage ! Mais si tu fais ça, on prend les retours ! PS : je suis allé voir tes vidéos, et je pense que créer un réseau alternatif aux réseaux opérateurs 3GPP (LTE, 5GNR, etc.) serait un beau projet dans la continuité de ton initiative, donc wifi maillé, communication opportunistes, radioamateur, lorawan, il y a plein de possibles à explorer :slight_smile:

Hello @quentin,

J’ai parcouru votre doc, c’est super intéressant et ça me semble déjà pas mal abouti, félicitations !

Par contre, le premier cas d’usage qui m’est venu en tête, c’est de monter un cluster avec des amis à coup de raspberry sur nos connexions internet personnelles, mais en lisant le point suivant dans la doc, j’ai l’impression que ce n’est pas possible pour le moment :

  • Each machine has a public IP address which is reachable by other machines. Running behind a NAT is likely to be possible but hasn’t been tested for the latest version (TODO).

Dans mon cas, je n’ai pas d’IP fixe mais du DNS dynamique, et encore moins d’IP publique par machine. Est-ce qu’il y a quand même un moyen de faire fonctionner Garage dans ces conditions ?

Garage peut fonctionner avec des IPs dynamique pour peu qu’elles ne changent pas toutes en même temps. Aujourd’hui, dans pas mal d’endroits en France, tu as de l’IPv6 chez toi, ce qui in-fine te donne bien 1 IPv6 publique par machine. Ce serait vraiment l’idéal pour ton déploiement, après certains opérateurs sont encore à la traîne malgré les directives de l’ARCEP, et je le déplore. Si tu as seulement de l’IPv4 mais que tu as du NAT hairpinning sur ta box, tu peux aussi mettre tes instances Garage locales sur des ports différents (~4 ports / instance), et ensuite les NATer dans ta box. Encore une fois, tant que les différents IPv4 publiques de ton réseau ne changent pas en même temps, c’est bon. Dans la doc, on a voulu rester simple en décrivant un déploiement idéal.

Si vraiment ce n’est pas possible d’avoir d’IP publique, tu peux mettre en place un VPN entre tes machines, comme Wireguard (ou sa version commerciale Tailscale), ou plus expérimental mais en mode « maillé », Yggdrasil. Il y a bientôt un an de ça, on avait fait un test avec Yggdrasil et un serveur en 4G, ça avait fonctionné correctement dans le cadre du test.

Si jamais tu as des questions, par exemple sur comment Garage fait pour gérer les IP dynamiques (mon fameux "ne pas changer toutes les IP dynamiques en meme temps), je peux t’expliquer ça plus en détails.

1 Like

Merci pour toutes ces informations !

Je n’ai pas d’IPv6 hélas, par contre je peux faire du NAT (sans hairpinning) mais j’imagine que si j’ai qu’une seule instance chez moi, et les autres sur une autre IP publique, ça devrait le faire non ?

Oui, ça devrait le faire ! Si jamais tu as un problème, n’hésite pas à passer sur nos salons Matrix (#garage:deuxfleurs.fr ou #tech:deuxfleurs.fr), on pourra débugger ça ensemble.

1 Like

Quelques informations sur l’avancement de notre projet.

La dernière version en date de Garage est la v0.7.2. Par rapport à la v0.7.0 elle inclut pas mal de correction de bugs et une API REST pour l’administration qui devrait faciliter largement le scripting des déploiements (par exemple avec Ansible). Pour rappel, on considère encore le logiciel en beta, et l’API REST pourrait être amenée à changer d’ici la version stable.

Deuxfleurs était invité dans l’émission Open Tech Will Save Us #16 de la fondation Matrix avec Nathan Freitas du Guardian Project pour parler de nos visions de la résilience. Ils ont un projet très intéressant de réseaux déconnectés basés sur un Raspberry Pi et F-Droid. Pour en savoir plus : https://likebutter.app et https://gitlab.com/guardianproject/wind/wind-offline-fdroid-repo-on-rp - Et on a parlé du collectif CHATONS :slight_smile:

Si vous êtes chercheuse ou chercheur en informatique et que ça vous parle ce qu’on fait, on est intéressé pour faire une demande de projet ANR (ou équivalent) avec Deuxfleurs comme partenaire privé. Avec Garage, on a des problématiques de calcul/système distribué (modèle de cohérence, contraintes de notre environnement), optimisation (comment répartir les donnés de manière optimale sur le cluster tout en garantissant certaines propriétés), et de théorie du contrôle (gestion dynamique des timeouts comme détecteur de faute, etc.). En particulier, on a déjà des trucs qui marchent (exemple) et qu’on aimerait formaliser dans des papiers.

3 Likes