Filestash
A self-hosted file management platform that unifies access to S3, SFTP, SMB, FTP, WebDAV, NFS, Git, SharePoint, and 20+ other storage backends through a single extensible web interface.
Filestash is a self-hosted file management platform built around a plugin-driven philosophy: every component — storage backends, authentication, authorization, search, file viewers, workflow triggers, and gateways — is implemented as a swappable plugin. The Go core defines clean interfaces; plugins implement them. Organizations can connect S3 buckets, SFTP servers, SMB shares, SharePoint sites, NFS mounts, Git repositories, FTP servers, and a dozen more storage systems, all accessible from one web interface without touching the underlying infrastructure.
Beyond basic file browsing, Filestash extends into territory no other open-source file manager covers: a workflow engine that chains file events into automated pipelines (upload → OCR → notify Slack → archive), AI-powered semantic search with Ollama integration, and a library of specialized file viewers spanning scientific formats (FITS, DICOM, HDF5), engineering formats (DWG, DXF, Parquet, Arrow, NetCDF), creative formats (PSD, Sketch, CDR, embroidery files), and 3D formats (FBX, GLTF, STL, IFC).
The platform exposes connected storage over outbound protocols too — SFTP gateway, S3 gateway, WebDAV, FTP, MCP, and AS2 — so existing tools like FileZilla, rclone, or AWS CLI can access files without reconfiguration. Enterprise authentication integrates with LDAP, SAML, OIDC, and WordPress, with RBAC authorization and a virtual filesystem layer that delegates access control to external identity systems. Audit logging is immutable and timestamped for GDPR compliance.
Deployed as a single binary or Docker container, Filestash targets organizations managing heterogeneous storage landscapes — universities running NFS and S3 alongside scientific file formats, regulated industries unifying SharePoint and cloud storage under a single access layer, or teams replacing Dropbox with a self-hosted platform that matches (or exceeds) its usability.
What You Get
- Universal Storage Integrations - Connect S3, SFTP, FTP, SMB, WebDAV, NFS (v3 and v4), SharePoint, Dropbox, Google Drive, Azure Blob, Minio, Backblaze, Git, GitHub, GitLab, IPFS, MySQL, PostgreSQL, Artifactory, and more through a single interface with per-backend authentication.
- Protocol Gateways - Expose any connected storage backend as SFTP, S3, FTP, WebDAV, or MCP so existing tools like FileZilla, rclone, AWS CLI, and AI agents access files using native protocols without reconfiguration.
- Specialized File Viewers - View 100+ file types in-browser: photography RAWs (NEF, RAF, ARW, CR2), scientific formats (FITS, XISF, HDF5, NetCDF), data engineering (Parquet, Arrow, Avro, ORC, Feather, RDS), biomedical (DICOM, SAM, BAM, PDB), GIS (GeoJSON, SHP, GPX, WMS), 3D models (FBX, GLTF, STL, STEP, IFC), design (PSD, Sketch, CDR, XD), and embroidery (DST, PES, VP3, JEF).
- Plugin-Driven Architecture - Every component implements a Go interface registered at startup: storage backends, authentication providers, authorization rules, search engines, thumbnailers, workflow triggers and actions, HTTP endpoint extensions, and frontend overlays are all independently replaceable plugins.
- Workflow Engine - Automate file operations by chaining triggers (upload, modification, schedule) to actions (OCR, Slack notification, email, archiving, antivirus scan) into reusable pipeline templates — from simple notifications to full managed file transfer pipelines.
- AI-Powered Search and Smart Folders - Semantic full-text search powered by SQLite FTS5, AI metadata extraction, OCR pipeline, and integration with local Ollama models for on-premises AI processing without sending data to external services.
- Enterprise SSO and RBAC - Authenticate via LDAP, SAML, OIDC, WordPress, or htpasswd; enforce role-based access control with granular permission mapping; delegate authentication to external systems via virtual filesystems.
- Immutable Audit Logging - Timestamped, non-repudiable logs of all file access and modification events, surfaced in the admin console and exportable for GDPR compliance and enterprise audit requirements.
- White-Label Theming - Ship preconfigured themes (GitHub, Apple, Dropbox, IBM) or fully customize the interface with CSS and JavaScript overrides, custom favicon, and complete branding control through the plugin CSS/StaticPatch hooks.
- Embeddable Web Components - Use
<filestash-table>,<filestash-image>, and<filestash-map>web components to embed file browsers, image galleries, and geospatial viewers directly in external websites.
Common Use Cases
- Research data management - A university connects NFS clusters and S3 object storage through Filestash with LDAP SSO for faculty, providing browser-based access to FITS astronomy files, DICOM medical imaging, and HDF5 scientific datasets without per-format desktop software.
- Securing legacy SMB shares - An enterprise adds Duo 2FA and SAML authentication to Windows file shares via Filestash’s LDAP and OIDC plugins, gaining audit logging and RBAC enforcement on storage that natively lacks multi-factor authentication.
- Building managed file transfer pipelines - A media company configures Filestash workflows to ingest FTP uploads, run AI-powered OCR for metadata extraction, notify Slack on completion, and archive to S3 — replacing a commercial MFT system with a self-hosted pipeline.
- Replacing Dropbox for regulated industries - A healthcare firm unifies SharePoint document libraries, Azure Blob storage, and WebDAV archives under a single white-labeled interface with immutable audit logs, RBAC access control, and on-premises AI search for HIPAA-aligned file management.
- Exposing storage to AI agents - A development team configures Filestash’s MCP gateway to make S3 and SFTP storage available to Claude and other MCP-compatible AI agents, enabling AI-driven file processing workflows without custom integration code.
- Public-facing file portals - An organization uses Filestash’s public share links and anonymous access plugins to create branded download portals for large files hosted on S3, with optional antivirus scanning and quota enforcement per share.
Under The Hood
Architecture
Filestash’s architecture centers on a global hook registry defined in server/common/plugin.go. The core declares typed Go interfaces for every extensible concern — storage backends, authentication providers, authorization rules, search engines, thumbnailing, workflow triggers and actions, HTTP endpoint extensions, and frontend patches — and exposes Hooks.Register.* and Hooks.Get.* accessors. Plugins call Hooks.Register.* in their init() functions, wiring themselves in before main() runs. The startup sequence in cmd/main.go calls plugin discovery, initializes each registered component in dependency order, then delegates HTTP serving to whichever starter plugin is registered (HTTP, HTTPS, HTTP2, or Tor). Gorilla Mux handles routing with composable middleware chains that thread session, authentication, authorization, and audit concerns through each request independently.
Tech Stack The backend is Go 1.26 with Gorilla Mux for routing, CGO-linked native libraries (libvips, libjpeg, libraw, libheif, libpng, libgif, and the full libav/ffmpeg stack) for high-performance media processing, and mattn/go-sqlite3 with FTS5 for embedded full-text search. Protocol support comes from purpose-built Go packages: hirochachacha/go-smb2 for Samba, pkg/sftp, go-ldap, go-git/v6, Azure and AWS SDKs. The frontend is vanilla JavaScript (not React) bundled with Vite, using RxJS for reactive state management — an intentional choice to avoid framework overhead in a browser-resident file manager. A multi-stage Docker build produces a debian:stable-slim image under 200MB. Jenkins CI pulls from a separate private test repository for integration test runs.
Code Quality
Go test files are absent from the public repository — integration tests live in a private filestash-test repo executed via Jenkins CI, visible in the Jenkinsfile. ESLint with the standard config is applied to the vanilla JS frontend. Go code does not have golangci-lint or other static analysis configured in the build pipeline. Error handling at startup uses os.Exit(1) on fatal configuration failures, which is appropriate for server initialization but leaves no recovery path. The Go plugin interfaces are consistently typed and well-commented throughout server/common/. Code organization across 70 plugins shows consistent naming conventions (plg_<category>_<name>) and clear separation between the plugin registration boundary and implementation.
What Makes It Unique
Filestash’s combination of breadth and depth is rare: no other open-source file manager supports 100+ specialized file formats in-browser while also acting as a protocol gateway (SFTP, S3, MCP, WebDAV, FTP, AS2) over arbitrary storage backends. The hook-based plugin registry allows runtime extension of HTTP endpoints and lifecycle events without recompilation of core, and the StaticPatch and CSS hooks enable frontend behavioral overrides via server-side plugin injection — a genuinely novel approach to customizing a compiled web application. MCP gateway support positions Filestash as an AI agent-accessible file layer, a forward-looking integration that no comparable open-source platform currently provides. The virtual filesystem primitive, which proxies authentication decisions to external systems like WordPress, enables identity-aware file access without federation infrastructure.
Self-Hosting
Filestash is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). AGPL is a strong copyleft license with a network use clause: any modifications to Filestash that you deploy as a service — even internally — must be made available as source code under the same license. For organizations that use Filestash as-is or develop internal plugins without redistributing them, this is typically a non-issue. Organizations building commercial SaaS products or distributing modified versions should evaluate whether their use triggers the AGPL’s source disclosure requirements, and may want to discuss a commercial license with the author.
Running Filestash yourself means owning the full operational stack. The server compiles to a single Go binary with CGO-linked native libraries (libvips, ffmpeg, libraw, libheif), which means the deployment environment must have those shared libraries installed — the Docker image handles this, but bare-metal deployments require careful library management. Configuration lives in a JSON file at data/state/config/config.json, and the SQLite database for search indexes and audit logs lives under data/. Backups, uptime monitoring, updates, and scaling (Filestash runs as a single process) are your responsibility. The binary is typically deployed behind a reverse proxy (nginx, Caddy, or Traefik) for TLS termination.
The project offers commercial support contracts through the website for organizations that want guaranteed response times and expert help. The hosted/managed tier is not publicly advertised with a fixed pricing structure, but the author does offer professional services and can be engaged for custom plugin development. Compared to commercial managed file transfer platforms, self-hosting Filestash trades SLAs, managed upgrades, and vendor support for full data sovereignty, unlimited customization via the plugin system, and the ability to run entirely on-premises including AI features via Ollama. There is no feature gating between a free and paid version of the open-source release.
Related Apps
MinIO
File Storage
High-performance, S3-compatible object storage built for AI/ML and analytics workloads — run it anywhere from a laptop to a petabyte-scale cluster.
MinIO
AGPL 3.0Jellyfin
File Storage
The Free Software Media System — stream your entire media library from your own server, with no subscriptions, no tracking, and no strings attached.
Jellyfin
GPL 2.0Puter
File Storage · Developer Tools
A self-hostable, web-based internet OS with desktop GUI, cloud storage, AI drivers, and a developer SDK — all running in your browser.