EzyShare
Self-hosted, multi-tenant file sharing with a developer-first API, public & private sharing, and an MCP server for AI assistants.
Flexible Auth
JWT access/refresh tokens plus per-project API keys. bcrypt-hashed passwords and role-based access control built in.
Multi-Tenant Projects
Organize files into projects with members, upload policies, and per-project rate limits. Pluggable storage with local and S3 backends, swappable at runtime.
Public & Private Sharing
Expose public projects without auth, or share privately with members. Fine-grained download and listing controls.
MCP Server
Expose file operations to AI assistants via the Model Context Protocol. Includes a get_auth_bearer tool for obtaining REST API tokens without a config file. Available as a standalone stdio binary or as POST /mcp on the main server for remote clients.
Secure by Default
Security headers, CORS, rate limiting, HttpOnly session cookies, and full audit logging of every privileged action.
JSON API First
A clean REST API for everything: auth, projects, files, sharing, and admin. Easy to script and integrate.
Storage Limits
Enforce global and per-project caps on stored bytes. Limits are enforced on upload and adjustable from the admin Settings page.
Secret Share Links
Generate revocable, unguessable links to share a whole project or a single file with anyone — no account or login required.
Large File Support
Streaming uploads and downloads with HTTP Range resumability. Chunked resumable upload sessions for multi-GB files without buffering everything in memory.
# Register and get a token
curl -X POST /api/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"secret","name":"You"}'
# Stream a large file upload
curl -X POST /api/projects/{id}/files/upload \
-H "Authorization: Bearer <token>" \
-F "file=@large-file.bin;type=application/octet-stream"
# Resume an interrupted download
curl -H "Authorization: Bearer <token>" \
-H "Range: bytes=104857600-" \
/api/projects/{id}/files/path/to/large-file.bin/download \
-o large-file.bin
Open source · Written in Go · Docker-ready · SQLite