Introduction
DittoFS is a modular virtual filesystem written entirely in Go. It decouples file access protocols from storage backends, so you can serve the same files over NFSv3, NFSv4, NFSv4.1, and SMB2/3 from pluggable metadata and block stores. It runs entirely in userspace, with no FUSE and no kernel modules, and ships as a single binary.
Key concepts
Section titled “Key concepts”- Protocol adapters — NFS and SMB can run at the same time on one server.
- Control plane — central management of users, groups, shares, and configuration through a REST API.
- Shares — the export points clients mount, each referencing specific stores.
- Named store registry — reusable store instances shared across exports.
- Pluggable storage — mix metadata stores (memory, BadgerDB, PostgreSQL) and block stores (filesystem, S3) per share.
Where to go next
Section titled “Where to go next”- Getting started — install the server and mount your first share.
- Architecture — how the pieces fit together.
- NFS and SMB — protocol details and client usage.
- Configuration — server config and store management.
- CLI reference — every
dfsanddfsctlcommand.