Site officiel MIT Rust · v0.1.0 ~14 MB · single binary

vaultfs

Le S3 + Cloudinary dont vous gardez les clés. Un seul binaire Rust pour stocker, servir et transformer vos médias.

Installation
# Via Docker
$ docker run -p 8000:8000 ghcr.io/aniasse/vaultfs:latest
# Via cargo
$ cargo install vaultfs && vaultfs
ready · S3 API on :8000 · admin dashboard on /dashboard
Features

Tout ce dont vos médias ont besoin.
Dans un seul process.

Stockage universel

Images, PDF, vidéos, archives — tout type de fichier, sans restriction.

Image pipeline temps réel

Resize, crop, conversion AVIF/WebP/JPEG via query params — négociation selon le header Accept du navigateur.

Support vidéo

Extraction de metadata MP4/MOV en pur Rust, miniatures server-side via ffmpeg, queue de transcoding SQLite.

Déduplication content-addressable

Les fichiers identiques sont stockés une seule fois. Économie d'espace native.

Versioning + WORM

Historique par objet, delete-markers, object lock avec retention + legal hold. Conformité healthcare, finance, légal.

Chiffrement au repos

AES-256-GCM avec clés dérivées par blob. Dédup + chiffrement compatibles. Vous gardez le master key.

API S3 + SigV4 réelle

Pas de mock. Tous les SDK S3 (aws-sdk, boto3, mc, rclone) fonctionnent sans modification.

Cache multi-niveau

LRU en mémoire + cache disque, tous deux bornés. Transformations d'image servies en sub-seconde.

Admin dashboard + metrics

Dashboard intégré sur /dashboard, export Prometheus /metrics, spec OpenAPI auto-générée.

SDK officiels

Clients TypeScript, Python et Go maintenus par le projet. Zero boilerplate.

Backend blob pluggable

Disque local par défaut, ou délégation S3-compatible (R2, B2, Wasabi, MinIO). Metadata toujours SQLite.

Single binary · 14 MB

Zéro dépendance externe, zéro runtime, zéro service side-car. Un process, un fichier de config.

vs. les alternatives

Pourquoi pas juste S3 + Cloudinary ?

Nous

vaultfs

  • Stockage + image pipeline + vidéo dans un process
  • Vous possédez les données, clés, logs
  • Single binary, 4 lignes de config
  • WORM + audit log + dedup nativement
  • Coût fixe (serveur) vs. par-Go facturé
alternative

S3 + Cloudinary

  • Scale infinie managée
  • Coût par Go, par transfo, par seconde de transcoding
  • Vendor lock-in sur deux services
  • Vos données chez AWS, vos transfos chez Cloudinary
alternative

MinIO / SeaweedFS

  • Excellente couche de stockage pure
  • Pas de traitement d'image
  • Nécessite Cloudinary ou ImgProxy en complément
  • Deux services, deux factures, deux points de panne
alternative

Ceph

  • Distribué, scale multi-node
  • Expertise ops sérieuse requise
  • Complexe pour les besoins <1 machine
  • Aucune couche média
Bon fit pour
  • SaaS B2B/B2C jusqu'à quelques millions d'utilisateurs

    Un seul binaire + un backend S3 absorbent la charge sans sharding custom.

  • Plateformes média indépendantes

    Podcasts, vidéo, galeries photo. Ingestion, transfo, transcoding en un process.

  • Instances fédérées

    Mastodon, Matrix, Peertube, Pixelfed : stockage local + compat S3 pour les clients.

  • Archives documentaires entreprise

    WORM + audit + retention immuable. Healthcare, finance, archivage légal.

Mauvais fit pour
  • Échelle réseau social grand public

    SQLite plafonne vers ~100 To / milliards d'objets. Pour Meta/TikTok, il faut une couche metadata distribuée.

  • Multi-région active-active

    La réplication est one-way asynchrone. Pas de consensus Raft.

  • Modération automatisée (NSFW, DMCA)

    À construire à côté, pas dedans.

  • Remplacement complet de l'écosystème AWS

    Pas d'IAM fine-grained, pas de multi-comptes SCP. L'auth est volontairement simple.

API

Upload, transforme, sers.

Une seule API REST + une S3 compatible SigV4. Tous vos SDK S3 existants fonctionnent tels quels.

# Upload n'importe quel fichier
curl -X PUT http://localhost:8000/v1/objects/photos/beach.jpg \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: image/jpeg" \
  --data-binary @beach.jpg

# Multipart — plusieurs fichiers d'un coup
curl -X POST http://localhost:8000/v1/upload/photos/vacation \
  -H "Authorization: Bearer $API_KEY" \
  -F "file1=@beach.jpg" \
  -F "file2=@sunset.png"

14 MB

taille du binaire

SQLite

metadata, zéro dépendance

3 SDK

TypeScript · Python · Go

MIT

licence permissive

Releases

Versions publiées

0.1

v0.1.0

Première release publique

S3-compatible APIImage pipelineVideo metadataWORMDedupAES-256-GCM

Binaires Linux amd64 et macOS arm64. Image Docker ghcr.io/aniasse/vaultfs:latest.

Notes de release
0.2

v0.2.0

En préparation · réplication multi-région, webhooks, UI dashboard améliorée

Bientôt

Built in public.
Run by yourself.

Clonez, étoilez, contribuez. Ou laissez l'équipe Vortex l'intégrer à votre stack.

vaultfs est maintenu par Vortex · Dakar, Sénégal · Licence MIT