Repository navigation
v0.29.1: the first release with binaries
fileshare serves a disk image, a device or a directory over SMB, NFS, WebDAV, SFTP and S3. The same users and the same per-share access apply over every protocol, and it all comes from one configuration file. It is pure Go, a single static binary, with no cgo.
This is the first release with prebuilt binaries, so you can try it without Go.
Download and check
Pick the archive for your system below:
- Linux: amd64, arm64, riscv64, ppc64le, s390x and loong64;
- macOS: amd64 and arm64;
- Windows: amd64 and arm64;
- FreeBSD: amd64 and arm64;
- OpenBSD: amd64.
Then check it, in either or both of these ways:
sha256sum -c --ignore-missing SHA256SUMS # the file is the one published here
gh attestation verify fileshare_v0.29.1_linux_amd64.tar.gz -R go-fileshare/fileshare
# and GitHub Actions built it, from this tagThe archives are reproducible: hack/release.sh rebuilds them from a checkout of the tag, byte for byte. A Mac build and the Ubuntu CI build of this release give identical SHA256SUMS.
Try it in two minutes: a directory over WebDAV
tar -xzf fileshare_v0.29.1_linux_amd64.tar.gz && cd fileshare_v0.29.1_linux_amd64
mkdir shared
printf 'correct horse battery staple\n' > alice.pw && chmod 600 alice.pw
cat > fileshare.hcl <<'HCL'
user "alice" { password_file = "alice.pw" }
share "files" {
directory = "shared"
allow = ["alice"]
writers = ["alice"]
}
serve "webdav" { addr = "127.0.0.1:8080" }
HCL
./fileshare check -c fileshare.hcl # who gets what, over which protocol -- before serving
./fileshare -c fileshare.hcl # webdav on 127.0.0.1:8080 -- filesFrom another terminal:
curl -u 'alice:correct horse battery staple' -T somefile http://127.0.0.1:8080/files/somefile # 201
curl -u 'alice:correct horse battery staple' http://127.0.0.1:8080/files/somefile # the file back
curl -i http://127.0.0.1:8080/files/somefile # 401: not anybody'sThe file lands in shared/. Add serve "smb", serve "sftp", serve "s3" or serve "nfs" blocks for the other protocols; check says what each can carry.
The password comes from a file, never from a flag: a command-line argument is visible to every user in the process list. The documentation is at https://go-fileshare.github.io/docs/0.29/, in English, French, Spanish and German.
Since the last release page (v0.26.1)
- v0.27.0: with ACME, the certificate is now requested when the server starts, and retried with backoff while it keeps serving. A client that sends no SNI gets the first domain's certificate.
- v0.28.0: the admin API is also served over HTTPS, for OIDC tokens (Connect, gRPC-Web and gRPC). This is what the web and native UIs use: portal, console, explorer.
- v0.28.1, security: built with Go 1.27.2 and x/net v0.60.0, which fix GO-2026-6617 (an HTTP/2 HPACK race that could crash a server) and its batch.
- v0.29.0, WebDAV:
- a
PROPFINDof the root lists the shares, so a file manager can mount the whole server; - an upload can go in pieces, each
Content-Rangeappended where the last ended.
- a
- v0.29.1: on a reload, a group emptied in the directory grants nothing, just like a deleted group.
Reporting a problem
Please open an issue at https://github.com/go-fileshare/fileshare/issues and include:
- the output of
fileshare --version; - your system;
- the client you used;
fileshare check -c <your configuration>, with secrets removed.