Alternatives auto-hébergées à S3 en 2026 (RustFS, Garage, SeaweedFS, Ceph)

Opter pour un S3 auto-hébergé après MinIO

Sommaire

Amazon S3 est devenu l’API de facto pour le stockage d’objets. Après l’archivage du dépôt open source MinIO en avril 2026, sept alternatives auto-hébergées crédibles subsistent.

Ces options ne sont pas interchangeables. Certaines sont des moteurs de stockage d’objets complets qui gèrent leur propre structure de données ; d’autres sont de simples passerelles qui exposent des fichiers que vous possédez déjà. Cette distinction — entre magasin natif et passerelle basée sur un système de fichiers — détermine davantage les questions de sauvegarde, de récupération et de migration que n’importe quelle liste de fonctionnalités.

Stockage S3 auto-hébergé : magasins d’objets et passerelles de fichiers derrière une seule API

Cet article compare RustFS, Garage, SeaweedFS, Ceph RGW, VersityGW, S3Proxy et rclone. Chaque section couvre le modèle de stockage, la couverture des fonctionnalités S3, l’adéquation du projet à vos besoins, et la limitation qui détermine généralement le choix. Un guide décisionnel pour les déploiements sur serveur unique et multi-serveurs conclut l’article.

Pour une vision plus large — stockage d’objets, bases de données, recherche et couches de données natives à l’IA — voir Infrastructure de données pour les systèmes d’IA.

Comparatif des stockages S3 auto-hébergés

La question la plus importante est de savoir si vous avez besoin d’un magasin d’objets distribué ou d’une interface S3 devant un stockage qui existe déjà.

Logiciel Modèle de stockage Distribué Compatibilité S3 Fichiers bruts sur disque Complexité Utilisation optimale
RustFS Magasin d’objets natif Oui Élevée, sous-ensemble testé Non Faible à moyenne Remplacement général de MinIO
Garage Magasin d’objets natif Oui Bonne, API plus étroite Non Faible à moyenne Petits clusters distribués
SeaweedFS Magasin distribué de blobs et fichiers Oui Élevée Non Moyenne Très grands volumes de fichiers et stockage mixte
Ceph RGW Passerelle d’objets Ceph Oui Élevée Non Élevée Infrastructure de stockage de grande échelle
VersityGW Passerelle S3 au-dessus de POSIX Dépend du backend Bonne Oui Faible S3 au-dessus de fichiers normaux
S3Proxy Couche de traduction S3 Dépend du backend Modérée Oui avec filesystem-nio2 Moyenne Passerelle et traduction de protocoles
rclone serve s3 Passerelle S3 Dépend du backend Basique, expérimentale Oui avec backend local Très faible Déploiements simples et légers

RustFS est le remplacement le plus direct pour un déploiement MinIO conventionnel. Garage convient aux petits clusters distribués. SeaweedFS et Ceph résolvent des problèmes de stockage plus larges. VersityGW peut exposer un système de fichiers POSIX existant via S3 tout en conservant les charges utiles des objets sous forme de fichiers ordinaires. Pour une matrice de fonctionnalités détaillée entre Garage, MinIO et AWS S3, voir Garage vs MinIO vs AWS S3.

Deux types différents de stockage S3

Un magasin d’objets natif gère sa propre structure de stockage :

flowchart TD A[Application] -->|API S3| B[Magasin d'objets] B --> C[Métadonnées internes] B --> D[Morceaux ou structure d'objets] C --> E[Disques] D --> E

RustFS, Garage, Ceph RGW et SeaweedFS appartiennent à cette famille. Les fichiers visibles sur les disques sous-jacents sont des détails d’implémentation, et les applications ne devraient pas les manipuler directement.

Une passerelle S3 basée sur un système de fichiers entretient une relation différente avec le stockage :

flowchart TD A[Application] -->|API S3| B[Passerelle S3] B --> C[Système de fichiers POSIX] C --> D[Seau (bucket)] D --> E[Chemin] E --> F[fichier-ordinaire.dat]

Avec des logiciels tels que VersityGW, le système de fichiers peut rester la représentation autoritative. Un objet tel que :

s3://archive/documents/2026/report.pdf

peut correspondre directement à :

/storage/archive/documents/2026/report.pdf

RustFS : Le remplacement le plus proche de MinIO

RustFS est un système de stockage d’objets distribué écrit en Rust et publié sous licence Apache-2.0. Il offre un modèle opérationnel orienté S3 familier pour les utilisateurs de MinIO, ce qui en fait le premier projet à évaluer lors du remplacement de MinIO.

Son implémentation S3 actuelle couvre les opérations attendues par la plupart des applications : seaux (buckets), objets, téléversements multipart, requêtes conditionnelles, métadonnées d’objets, étiquettes, versioning, gestion du cycle de vie, verrouillage d’objets, URL présignés, politiques de seau, CORS, notifications, configuration de réplication et chiffrement côté serveur.

RustFS publie une matrice de compatibilité S3 qui est un sous-ensemble testé, et non une revendication de couverture complète d’Amazon S3. L’instantané vérifié par rapport au commit 1e6f5f1e au 9 août 2026 liste 455 tests standard implémentés, 5 tests de comportement du cycle de vie, 17 tests standard non implémentés et 270 cas exclus qui ne bloquent pas le contrôle de compatibilité. Les listes exécutables situées dans scripts/s3-tests sont la source de vérité lorsque ces compteurs évoluent.

Quand RustFS est approprié

RustFS est un candidat idéal lorsqu’une application s’attend à un vrai magasin d’objets S3.

Les utilisations typiques incluent le stockage d’objets applicatif, les dépôts de sauvegarde, le stockage de médias, les artefacts de pipelines de données et d’IA, l’infrastructure S3 interne, les charges de travail Kubernetes et le remplacement des points de terminaison MinIO existants.

Il fonctionne avec les SDK AWS et les clients S3 courants. Les applications nécessitent normalement un point de terminaison personnalisé, des identifiants, des paramètres de région le cas échéant, et une adresses en style chemin (path-style).

La limitation importante

RustFS possède la représentation du stockage. Les fichiers sous son répertoire de données sont des éléments internes de RustFS.

Cela rend RustFS la mauvaise réponse lorsque la exigence est que chaque objet S3 reste un fichier ordinaire que vous pouvez inspecter, copier, rsync, ou récupérer sans le logiciel de stockage d’objets. Cette exigence sélectionne une passerelle basée sur un système de fichiers.

Garage : S3 distribué sans la complexité de Ceph

Garage est un magasin d’objets distribué compatible S3 pour les installations auto-hébergées de petite et moyenne taille. Deuxfleurs le développe sous licence AGPL v3 et l’exploite en production depuis les premières versions du projet en 2020.

Garage est conçu pour fonctionner sur plusieurs serveurs ordinaires, y compris des serveurs situés dans des emplacements physiques différents. La réplication fait partie de la conception.

flowchart LR A[Applications] --> B[Point de terminaison S3] B --> C[Noeud Garage 1] B --> D[Noeud Garage 2] B --> E[Noeud Garage 3] C <--> D D <--> E E <--> C

Garage est attractif lorsque vous avez trois petits serveurs plutôt qu’un rack de matériel de stockage dédié. Un chemin de configuration fonctionnel, de Docker jusqu’à la disposition du cluster, la réplication et le TLS via un proxy inverse, se trouve dans le Guide de démarrage rapide Garage.

Quand Garage est approprié

Garage a du sens pour les homelabs, les petites plateformes d’hébergement, les serveurs géographiquement distribués, les sauvegardes répliquées et les clusters où Ceph serait excessif.

Son périmètre est plus étroit que celui d’AWS S3. Le tableau de compatibilité de Garage omet les politiques de seau, les ACL et le versioning de seau. Choisissez Garage plutôt que RustFS lorsque la réplication multi-nœuds légère est l’exigence principale. Choisissez RustFS lorsque des comportements S3 plus larges et une compatibilité applicative type MinIO sont plus importants.

SeaweedFS : Bien plus qu’un magasin d’objets

SeaweedFS a commencé par stocker efficacement des nombres énormes de fichiers. C’est aujourd’hui une plateforme de stockage distribuée exposant S3, un système de fichiers FUSE, WebDAV, SFTP et HDFS. SeaweedFS 4.48 a été publié le 28 septembre 2026.

Les serveurs de volume empilent des blobs dans des fichiers de volume en ajout uniquement (append-only). Les maîtres suivent les volumes plutôt que les fichiers individuels. Un filer fournit des sémantiques de système de fichiers hiérarchiques. La conception cible les charges de travail avec des millions ou des milliards d’objets relativement petits.

Support S3

SeaweedFS documente le versioning, le verrouillage d’objets, les règles de cycle de vie, l’étiquetage, le CORS, les sommes de contrôle, les URL présignés, les téléversements multipart, les politiques de seau, l’IAM, le STS et plusieurs modes de chiffrement côté serveur.

Le même cluster peut servir des seaux de table S3 et un catalogue REST Iceberg intégré, de sorte que Spark, Trino, DuckDB et des moteurs similaires puissent utiliser des tables Iceberg sans un Hive Metastore ou Glue séparé. L’exemple S3 en une commande du projet écoute sur le port 8333.

Quand SeaweedFS est approprié

Envisagez SeaweedFS pour les robots d’indexation et les archives, les dépôts d’images et de documents, les milliards d’objets petits, les lacs de données, les charges de travail mixtes S3 et système de fichiers, et les stockages qui croissent en ajoutant des serveurs de volume.

Il y a plus de composants à comprendre que dans une installation RustFS directe. SeaweedFS peut fournir des sémantiques de système de fichiers via son filer et son montage FUSE, mais les objets sont stockés dans son format de volume. Il ne satisfait pas l’exigence que chaque objet S3 reste un fichier ordinaire indépendant sur le système de fichiers hôte.

Ceph RGW : L’option à l’échelle de l’infrastructure

Ceph est plus large que le stockage S3. Un cluster peut fournir des périphériques bloc via RBD, un système de fichiers via CephFS, et du stockage d’objets via RADOS Gateway (RGW). RGW présente une API compatible S3 soutenue par RADOS.

flowchart TD A[Applications] -->|S3| B[Ceph RGW] B --> C[RADOS] C --> D[OSD 1] C --> E[OSD 2] C --> F[OSD 3]

Ceph prend en charge la réplication, le codage par code correcteur, les domaines de défaillance, plusieurs passerelles, les déploiements multi-sites, les politiques d’accès et les outils de gestion de cluster.

Quand Ceph est approprié

Ceph a du sens lorsque le stockage d’objets est une partie d’une plateforme de stockage plus large : volumes persistants Kubernetes, disques de machines virtuelles, systèmes de fichiers partagés, grands dépôts S3 et clusters ayant besoin de domaines de défaillance explicites.

Pour un seul serveur avec plusieurs téraoctets, installer Ceph uniquement pour obtenir un point de terminaison S3 est difficile à justifier. Si vous exploitez déjà Ceph, RGW est le choix S3 évident. Si vous ne le faites pas, RustFS ou Garage atteint un stockage d’objets utile avec moins de mécanismes.

VersityGW : S3 sur des fichiers ordinaires

VersityGW est l’option à évaluer lorsque le système de fichiers lui-même est important. C’est une passerelle S3 sous licence Apache-2.0 qui peut exposer des systèmes de fichiers POSIX, ScoutFS, Azure Blob Storage, d’autres services S3 et des backends personnalisés.

Son backend POSIX mappe les seaux et objets S3 sur des répertoires et des fichiers. Par exemple :

s3://website-assets/images/logo.png

se mappe vers un chemin tel que :

/storage/website-assets/images/logo.png

La charge utile de logo.png reste un fichier normal.

Pourquoi les fichiers bruts sont utiles

Vous pouvez inspecter le stockage avec des outils Unix ordinaires :

find /storage -type f
du -sh /storage/*

Vous pouvez lire un objet sans le serveur S3 :

cat /storage/archive/2026/source.html

Les outils de sauvegarde de système de fichiers conventionnels s’appliquent directement : rsync, restic, borg, tar et zfs send. Si le logiciel de passerelle disparaît, les charges utiles sont toujours des fichiers dans un arbre de répertoires.

Métadonnées S3 sur un backend POSIX

Les métadonnées S3 ne tiennent pas dans un fichier POSIX par elles-mêmes. VersityGW les stocke par défaut dans des attributs étendus. Depuis mars 2026, les métadonnées d’objet sont un seul xattr user.metadata contenant du JSON, car un xattr par clé atteignait les limites de longueur de clé du système de fichiers. La commande versitygw utils convert-xattr-metadata réécrit les anciens attributs par clé. Les lectures repassent toujours à l’ancienne structure si user.metadata est absent.

Les systèmes de fichiers sans xattrs peuvent utiliser --sidecar (ou VGW_META_SIDECAR) pour conserver les métadonnées dans un arbre de répertoires séparé. Le projet marque sidecar et --nometa comme moins testés que les xattrs. --nometa désactive le stockage des métadonnées et vise l’hébergement en lecture seule d’un jeu de données existant ; les politiques de seau et les ACL sont des métadonnées, donc elles sont indisponibles dans ce mode.

Les versions d’objets peuvent vivre dans un répertoire séparé. L’exemple POSIX du projet passe --versioning-dir pour les anciennes versions tandis que la charge utile actuelle reste à son chemin naturel.

Modifier un fichier derrière la passerelle peut laisser les métadonnées S3, y compris les ETags, incohérentes avec les nouveaux octets. Un modèle opérationnel viable est :

Accès applicatif :
    Lecture via S3
    Écriture via S3

Accès administrateur :
    Lire le système de fichiers directement
    Inspecter le système de fichiers directement
    Sauvegarder le système de fichiers directement
    Éviter de modifier les objets derrière la passerelle

VersityGW 1.8.0, déjà la version visée par une version du pilote COSI de septembre 2026, ajoute un service IAM autonome (versitygw iam), AssumeRoleWithWebIdentity STS et des conditions de politique IAM.

S3Proxy : Une couche de traduction générale

S3Proxy implémente l’API S3 et traduit les requêtes vers plusieurs backends : fichiers locaux, Azure Blob Storage, Google Cloud Storage, OpenStack Swift, SFTP et d’autres services S3. Il nécessite Java 17 ou plus récent.

flowchart TD A[Client S3] --> B[S3Proxy] B --> C[filesystem-nio2] C --> D[Système de fichiers local]

Le fournisseur sur disque recommandé est filesystem-nio2. L’ancien fournisseur filesystem est déprécié. Les clés d’objets deviennent des chemins de système de fichiers, et les métadonnées utilisent des attributs étendus d’utilisateur, de sorte que les charges utiles restent des fichiers ordinaires.

Le backend système de fichiers refuse le versioning d’objets et le chiffrement côté serveur. Le versioning reste non supporté (supportsVersioning() est faux, et ces requêtes restent HTTP 501) car une structure de version écrite sur un disque réel deviendrait un format que le projet devrait maintenir. Le chiffrement côté serveur est refusé pour la même catégorie de raisons : déclarer AES256 sur un fichier en clair que quelqu’un peut lire serait une fausse déclaration. Le backend en mémoire transient-nio2 implémente les deux, et les données meurent avec le processus. Le README du projet liste également les politiques de seau, l’étiquetage d’objets et les ACL autres que private et public-read comme non supportés.

S3Proxy est l’outil lorsque vous avez besoin de cette traduction entre backends. Pour une passerelle S3-vers-POSIX directe, VersityGW offre une surface plus petite.

rclone serve s3 : Léger mais expérimental

rclone serve s3 expose un backend rclone via une API compatible S3. La documentation qualifie toujours la commande d’expérimentale.

Pour un système de fichiers local :

rclone serve s3 \
  --addr :9000 \
  --auth-key ACCESS_KEY,SECRET_KEY \
  local:/srv/s3

Sans --addr, le serveur se lie à 127.0.0.1:8080. --auth-key active la Version 4 de la signature. Les téléversements multipart sont écrits dans l’ordre du numéro de partie vers un objet temporaire et renommés en place à la fin, de sorte qu’un téléversement échoué ne remplace pas un objet existant.

Les objets écrits via un backend local deviennent des fichiers sous ce chemin. La même commande peut se placer devant d’autres distants rclone. C’est un choix raisonnable pour les outils internes, un laboratoire ou un saut de migration temporaire. C’est une couche S3 permanente faible pour de nombreuses applications de production non liées.

Qu’en est-il de MinIO ?

Le dépôt GitHub de MinIO a été archivé le 13 février 2026, brièvement désarchivé, puis archivé à nouveau le 25 avril 2026. Il est en lecture seule. L’avis du dépôt oriente les opérateurs vers AIStor, la distribution commerciale de MinIO, et indique que l’édition communautaire est uniquement disponible en source.

Un déploiement MinIO existant peut continuer à fonctionner, en particulier lorsqu’il est isolé et que son comportement est déjà compris. La chronologie complète, le risque opérationnel et un plan de migration par phases sont dans MinIO CE en 2026.

Pour le comportement S3 du système que vous pouvez quitter, MinIO comme alternative à AWS S3 documente comment MinIO se mappe sur S3. La fiche de triche en ligne de commande MinIO est le compagnon d’audit pour un cluster qui est toujours en ligne. Pour une nouvelle installation, une alternative activement maintenue est la valeur par défaut.

Fichiers bruts vs Stockage d’objets natif

Utilisez RustFS, Garage, SeaweedFS ou Ceph lorsque le magasin d’objets doit contrôler la durabilité, les métadonnées, la distribution et la structure. Cela offre des sémantiques S3 plus riches, la réplication ou le codage par code correcteur, le scaling horizontal et le versioning si le projet l’implémente. Le coût est la dépendance à la représentation sur disque du moteur.

Utilisez VersityGW, S3Proxy ou rclone lorsqu’un système de fichiers existant doit rester autoritatif. Cela offre des fichiers récupérables bruts, des sauvegardes conventionnelles, une inspection directe et la compatibilité avec ZFS, XFS, ext4 et NFS. La durabilité distribuée doit alors venir du système de fichiers ou de la baie de stockage, et non du processus S3. Sur un seul serveur ou un NAS, ce compromis est souvent le bon.

Choisir le bon serveur S3 auto-hébergé

Pour un seul serveur qui doit ressembler à MinIO, commencez par RustFS.

Pour trois serveurs modestes ou plus où la réplication est l’exigence principale, et où l’application peut vivre sans politiques de seau et versioning, choisissez Garage.

Pour des nombres énormes d’objets petits, un accès mixte système de fichiers, ou une charge de travail de lac de données qui peut évoluer vers des tables Iceberg, envisagez SeaweedFS.

Lorsque le même cluster doit également fournir des périphériques bloc et un système de fichiers distribué, choisissez Ceph RGW.

Lorsque l’exigence est spécifiquement une API S3 sur des fichiers ordinaires — un NAS, une archive, un dépôt de documents, un robot d’indexation ou une cible de sauvegarde — commencez par VersityGW.

Lorsque le travail consiste à traduire S3 vers Azure, GCS, Swift, SFTP ou un autre service S3, utilisez S3Proxy.

Lorsque le déploiement est petit, temporaire et peut tolérer un serveur expérimental, rclone serve s3 peut suffire.

Architecture recommandée pour un serveur de stockage unique

Si les applications doivent accéder aux données uniquement via S3, RustFS possède la couche d’objets et le système de fichiers est un détail d’implémentation :

flowchart TD A[Applications] -->|S3| B[RustFS] B --> C[Stockage local] C --> D[Système de fichiers ou RAID]

Si les fichiers eux-mêmes doivent survivre à la passerelle, gardez les données dans un arbre POSIX :

flowchart TD A[Applications] -->|S3| B[VersityGW] B --> C[Système de fichiers POSIX] C --> D[ext4, XFS, ZFS, NFS] D --> E[Fichiers bruts]

Dans la deuxième conception, la redondance est un miroir ZFS, un RAID, des instantanés, une réplication de système de fichiers, ou un outil de sauvegarde conventionnel. Le service S3 peut être remplacé sans réécrire le format de données.

Pensées finales

Le S3 auto-hébergé est toujours existant et maintenu après que le dépôt public de MinIO soit passé en lecture seule. Le choix qui compte est de savoir si S3 possède les octets ou s’il ne fait que servir de façade à des fichiers qui existent déjà. Toutes les comparaisons ci-dessus découlent de cette réponse.

Références

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.