explaingit

mickael-kerjean/filestash

14,196GoAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Filestash is a self-hosted web file manager that connects to 20+ storage backends, FTP, S3, SFTP, WebDAV, IPFS, and more, through one browser interface, with plugins, workflow automation, and broad file previewing.

Mindmap

mindmap
  root((filestash))
    What it does
      Web file manager
      Multi-backend access
      File previewing
    Storage backends
      FTP and SFTP
      S3 and WebDAV
      IPFS and SMB
    Features
      Plugin system
      Workflow automation
      Protocol exposure
    File previews
      Photography and RAW
      3D and medical
      Data formats
    Audience
      Self-hosters
      DevOps engineers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Browse and manage files across FTP, S3, SFTP, and WebDAV from one consistent web interface

USE CASE 2

Automate file transfer pipelines and trigger Slack or email notifications when files are added or changed

USE CASE 3

Expose your storage as SFTP, S3, FTP, or WebDAV so other tools can reach the same files

USE CASE 4

Preview specialty formats like camera RAW, 3D models, medical images, and parquet files in the browser

Tech stack

Go

Getting it running

Difficulty · moderate Time to first run · 30min

In plain English

Filestash is a web-based file manager written in Go. It began as a Dropbox-style interface for browsing and managing files, with one main idea: it does not care where your files actually live. You can connect it to many different storage systems, including FTP, SFTP, S3, SMB, WebDAV, and IPFS, along with around twenty more. From a single web page you get one consistent way to work with all of them. The project is built around plugins. According to the README, almost everything that is not a core part of the system is implemented as a plugin, so you add only the pieces you need rather than carrying features you do not use. The plan stated by the author is to support every storage and authentication technology on the market. As an example, the README describes connecting authentication to a WordPress site and using its user roles to decide who is allowed to do what. Beyond the web client, Filestash can expose your data through other protocols such as SFTP, S3, FTP, and WebDAV, so other programs can reach the same files. A workflow engine lets you automate actions when something happens to a file, from sending a Slack or email notification to running longer file-transfer pipelines. A large part of the README is a list of file types it can open through optional apps. These cover photography and camera raw formats, astronomy data, scientific documents, music files, mapping and GIS data, data engineering formats like parquet and arrow, 3D models, medical imaging, design files from tools like Adobe and Autodesk, and even embroidery patterns. There are also selectable visual themes and some AI-assisted features for search, smart folders, and text recognition in images. In short, this is a self-hosted platform for accessing files spread across many storage services through one interface, with most of its behavior driven by plugins you choose to enable.

Copy-paste prompts

Prompt 1
How do I configure Filestash to connect to my AWS S3 bucket and limit access to specific folders based on user roles?
Prompt 2
Set up a Filestash workflow that automatically sends a Slack notification whenever a new file is uploaded to a specific FTP folder.
Prompt 3
I want to expose my Filestash storage as a WebDAV endpoint so I can mount it as a network drive on my Mac. What are the steps?
Prompt 4
Which Filestash plugin do I need to preview parquet and Apache Arrow data engineering files, and how do I enable it?
Open on GitHub → Explain another repo

← mickael-kerjean on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.