Client de synchronisation Windows vers backends de stockage prives — l'equivalent OneDrive pour votre NAS.
Aujourd'hui, un utilisateur Windows qui veut etendre son stockage est limite a Google Drive, OneDrive ou iDrive. Ces solutions :
- Sont vendor-locked — vos fichiers sont sur leurs serveurs
- Sont limitees en espace — payantes au-dela du quota gratuit
- Ne supportent pas les backends prives — NAS, CephFS, MooseFS, S3 auto-heberge
Pourtant, de nombreux utilisateurs disposent deja d'une infrastructure de stockage maison (NAS Synology, TrueNAS, serveur MooseFS...) qui reste inexploitee depuis Windows.
GhostDrive est un client Windows libre qui transforme n'importe quel backend de stockage prive en drive cloud, avec la meme experience qu'OneDrive :
- Placeholders Files On-Demand — les fichiers apparaissent dans l'explorateur sans occuper d'espace local
- Synchronisation bidirectionnelle — les modifications locales se propagent vers le backend, et vice-versa
- Cache local configurable — gardez vos fichiers les plus utilises disponibles hors ligne
- Architecture plugin — connectez n'importe quel backend via une interface standardisee
- Synchronisation bidirectionnelle de dossiers locaux vers backends distants
- Placeholders Windows (Cloud Filter API) — Files On-Demand
- Cache local activable par point de sync
- Plugins inclus : WebDAV et MooseFS
- Interface tray Windows — lancement au demarrage, configuration simple
- Multi-client — plusieurs machines synchronisees vers le meme backend
- Chiffrement cote client (zero-knowledge)
- Versioning des fichiers
┌─────────────────────────────────────────────────────┐
│ Windows Explorer │
│ (placeholders via Cloud Filter API) │
└──────────────────────┬──────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────┐
│ GhostDrive (Wails App) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Sync Engine │ │ Cache Mgr │ │ Tray UI │ │
│ └──────┬──────┘ └─────────────┘ └─────────────┘ │
│ │ │
│ ┌──────▼──────────────────────────────────────┐ │
│ │ StorageBackend Interface (plugin) │ │
│ └──────┬──────────────────┬───────────────────┘ │
│ │ │ │
│ ┌──────▼──────┐ ┌────────▼────────┐ │
│ │ WebDAV │ │ MooseFS │ [+ plugins] │
│ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌─────▼────┐ ┌─────▼─────┐
│ NAS │ │ MooseFS │ │ S3/MinIO │
│ WebDAV │ │ Cluster │ │ (V2+) │
└─────────┘ └──────────┘ └───────────┘
| Composant | Technologie |
|---|---|
| Application | Go 1.21 + Wails v2 |
| UI | React + TypeScript |
| Placeholders Windows | Cloud Filter API + WinFsp |
| Architecture plugin | Interface Go (compile) |
| CI/CD | GitHub Actions |
| Distribution | Binaires GitHub Releases |
Telecharger le dernier binaire depuis les Releases GitHub :
| Plateforme | Fichier |
|---|---|
| Windows (x64) | ghostdrive-vX.Y.Z-windows-amd64.exe |
| Linux (ARM64) | ghostdrive-vX.Y.Z-linux-arm64 |
Windows : executer l'installeur, GhostDrive se lance automatiquement au demarrage.
Prerequis Windows : WinFsp doit etre installe pour les placeholders Files On-Demand.
Prerequis :
- Go 1.21+
- Node.js 18+
- Wails v2 (
go install github.com/wailsapp/wails/v2/cmd/wails@latest) - WinFsp (Windows uniquement)
git clone https://github.com/CCoupel/GhostDrive.git
cd GhostDrive
# Build complet (binaire Windows depuis WSL/Linux)
wails build -platform windows/amd64
# ou build Linux
wails build -platform linux/arm64GhostDrive se configure via l'interface tray :
- Cliquer sur l'icone GhostDrive dans la barre des taches
- Backends → Ajouter un backend (WebDAV ou MooseFS)
- Sync → Configurer les points de synchronisation (dossier local ↔ dossier distant)
- Cache → Activer le cache local si souhaite
URL : https://mon-nas.local/webdav
Username : mon_utilisateur
Password : ****
GhostDrive utilise une architecture plugin basee sur une interface Go.
Pour ajouter le support d'un nouveau backend, implementez l'interface StorageBackend :
type StorageBackend interface {
Name() string
Connect(config BackendConfig) error
Disconnect() error
Upload(ctx context.Context, local, remote string, progress ProgressCallback) error
Download(ctx context.Context, remote, local string, progress ProgressCallback) error
Delete(ctx context.Context, remote string) error
List(ctx context.Context, path string) ([]FileInfo, error)
Stat(ctx context.Context, path string) (*FileInfo, error)
Watch(ctx context.Context, path string) (<-chan FileEvent, error)
CreateDir(ctx context.Context, path string) error
}Consultez la documentation plugin pour le guide complet.
Les contributions sont les bienvenues !
- Fork le depot
- Creer une branche :
feat/<description>oubug/<description> - Implementer avec des tests
- Ouvrir une Pull Request
Les issues sont gerees sur GitHub Issues. Les features sont organisees en Epics avec des Milestones (V1, V2, V3).
| Solution | Backends prives | Libre | Files On-Demand | Multi-client |
|---|---|---|---|---|
| OneDrive | Non | Non | Oui | Oui |
| Google Drive | Non | Non | Oui | Oui |
| Rclone mount | Oui | Oui | Non | Non |
| Mountain Duck | Oui | Non | Partiel | Non |
| GhostDrive | Oui | Oui | Oui (V1) | V2 |
MIT — voir LICENSE