Skip to content

v0.29.1: the first release with binaries

Choose a tag to compare

@github-actions github-actions released this 12 Oct 11:44
· 14 commits to main since this release
25dd5ce

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 tag

The 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 -- files

From 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's

The 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 PROPFIND of the root lists the shares, so a file manager can mount the whole server;
    • an upload can go in pieces, each Content-Range appended where the last ended.
  • 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.