Filestash is an open-source, storage-agnostic file management platform designed to unify access to diverse data sources through a single web interface. It eliminates the need for multiple tools by supporting FTP, SFTP, S3, SMB, WebDAV, IPFS, NFS, SharePoint, Dropbox, and over 20 other storage backends — all without requiring FUSE. Originally conceived as a Dropbox-like interface for FTP, it has evolved into a full-fledged data access gateway with extensible plugins, APIs, and virtual filesystem capabilities. Filestash is built for developers, DevOps teams, and data professionals who need to manage heterogeneous storage systems without installing client software or configuring complex mount points. Its plugin-first architecture ensures that every feature, from authentication to file rendering, is modular and replaceable, making it adaptable to niche use cases like biomedical imaging, GIS data, or embroidery file viewing.
What You Get
- Multi-protocol storage support - Connect to FTP, SFTP, S3, SMB, WebDAV, IPFS, NFS, SharePoint, Dropbox, Azure Blob, and 20+ other storage systems through plugin-based backends without FUSE.
- Virtual filesystem with API and gateway support - Expose your data via SFTP, S3, and MCP gateways to enable LLMs or other systems to query files as if they were native endpoints.
- Plugin-based architecture - Extend functionality with plugins for authentication (e.g., WordPress as IdP), storage backends, frontend UI patches, and custom endpoints — all defined via clean Go interfaces like IBackend.
- Universal file viewer plugins - Render over 100 specialized formats directly in the browser including FITS (astronomy), GeoJSON/SHP (GIS), Parquet/Arrow (data engineering), DICOM (biomedical), DWG/DXF (AutoCAD), PSD/Sketch (design), and embroidery files (DST, PES).
- Themes and UI customization - Apply pre-built themes for GitHub, Apple, Dropbox, IBM, or create custom UIs using dynamic patch plugins to modify the frontend without forking.
- Workflow engine and automation - Automate file operations, integrations, and data pipelines using built-in workflow triggers and plugin-based actions.
- Advanced file handling - Support for versioning, audit logs, disk quotas, antivirus scanning, on-demand video transcoding, and mounting shared links as network drives.
Common Use Cases
- Building a multi-tenant SaaS file platform - Enterprises use Filestash to offer branded, secure file access portals for clients using disparate storage systems (e.g., S3 buckets for some, SMB shares for others) with unified authentication via LDAP or WordPress.
- Data science teams managing heterogeneous datasets - Researchers access Parquet, HDF5, NetCDF, and DICOM files from cloud storage or local NFS shares through a web interface with built-in viewers — eliminating the need to download and install specialized tools.
- Problem: Need to expose internal S3 data via SFTP for legacy systems → Solution - Organizations use Filestash’s SFTP gateway to present their AWS S3 buckets as traditional SFTP endpoints, enabling legacy ETL scripts and tools to access cloud data without code changes.
- DevOps teams managing hybrid infrastructure - Teams use Filestash to centralize access to files across AWS S3, on-prem SMB shares, and Git repositories — all via a single dashboard with role-based permissions and audit trails.
Under The Hood
Filestash is a web-based file manager that combines a Go-powered backend with a JavaScript/TypeScript frontend, offering a modular and extensible approach to file system access and management. It supports multiple storage protocols and provides a rich, component-driven UI with strong localization capabilities.
Architecture
This project adopts a monolithic yet layered architecture, separating backend services from frontend components while maintaining clear module boundaries.
- The system uses a layered architecture with distinct concerns for backend services, frontend UI components, and configuration management
- UI components are organized into reusable modules with well-defined responsibilities such as dropdowns, modals, and file viewers
- The frontend leverages a component-based design with HOCs and decorators to extend functionality in admin and file management views
- The backend integrates with various storage systems through a plugin-like connection model supporting protocols like WebDAV and SFTP
Tech Stack
Built with a dual-language architecture, Filestash utilizes Go for robust server-side logic and JavaScript for modern frontend experiences.
- Primary language and frameworks: Constructed primarily in Go for backend services, complemented by a JavaScript frontend with component-based structure
- Key dependencies and libraries: Employs RxJS for reactive programming, integrates UI helper libraries, and uses a wide range of frontend utilities
- Build/development tools: Utilizes Vite for fast builds, TypeScript for type safety, and a suite of development and testing tools
- Testing frameworks: Incorporates Jest-based testing with coverage reporting, indicating a structured approach to quality assurance
Code Quality
Code quality in Filestash presents a mixed landscape with strengths in frontend structure but inconsistencies in backend and testing practices.
- Testing approach and coverage: Limited test coverage despite CI/CD pipeline configuration, indicating gaps in quality assurance
- Error handling patterns: Some structured error handling practices are evident but not consistently applied across modules
- Code consistency: UI components show strong consistency, while backend integration and style vary in adherence to standards
What Makes It Unique
Filestash distinguishes itself through its modular frontend architecture and extensible backend, enabling flexible deployment and rich media handling.
- Modular component architecture allows for easy customization and reuse across different UI contexts (e.g., admin, file manager, viewer)
- Extensive embeddable components like filestash-image and filestash-table enable rich media handling without full page reloads
- Strong separation between frontend boot logic and core UI components supports flexible deployment scenarios
- Rich localization support with dynamic language loading provides a truly globalized user experience