Plugins

Filestash was built from the ground up to be malleable: our core design principle is “anything that’s not a fundamental truth of the universe lives in a plugin”. Think of plugins as Lego blocks you pick and assemble into the Filestash that fits your use case, with ready-made plugins available for:

Storage Authentication Authorisation Look and Feel Apps Web Server & Gateways Configuration Search Thumbnails Transcoding Security & Compliance Automation And More

Plugin Inventory

Authentication Plugin [doc]

Set the user identity, aka the "who" in the "who can do what and where"

nothing

Wihout enabling an authentication plugin, Filestash shows a connection form for the storage, and users fill it in themselves. In this mode, Filestash is the browser base equivalent to a dekstop tool similar to Filezilla FTP or Cloudberry where users must know the details of your storage such as hostname, port or access key ID, which can confuse non-experts expecting the "Dropbox experience".

plg_authenticate_admin ↓

Only the Filestash admin user can get it

plg_authenticate_api

Authenticate against any HTTP login API (Supabase, CouchDB, your own).

plg_authenticate_htpasswd ↓

Authenticate users against an Apache Htpasswd file.

plg_authenticate_htpasswd (with role) ↓

Same as plg_authenticate_htpasswd but with an optional role to enable RBAC.

plg_authenticate_ldap ↓

Use your company directory (LDAP, Active Directory, Entra) as the source of users. Their attributes are available for fine-grained access rules.

plg_authenticate_local ↓

Built-in user management: create accounts, enforce MFA and assign roles from the admin console.

plg_authenticate_merge

Several login methods on one screen, for example SSO for staff and a password for contractors.

plg_authenticate_openid ↓

Single sign-on via OpenID Connect: Filestash delegates login to your identity provider.

plg_authenticate_partners

Service and partner accounts: for MFA use cases

plg_authenticate_passthrough ↓

Filestash delegates login to your storage: users either connect automatically via deep links, or type their credentials while Filestash fills in the rest from your configuration.

plg_authenticate_proxy ↓

Already authenticate by a proxy? Filestash reads the user and role from the headers injected by your proxy (typically via a X-Remote-User and X-Remote-Role header)

plg_authenticate_saml

Single sign-on via SAML: Filestash delegates login to your identity provider.

plg_authenticate_sql ↓

Your users are already in a Mysql / Posgress or Oracle database? Point Filestash at it, and your users will use that, no separate user creation process needed.

plg_authenticate_url ↓

Setup access via deeps link or QR codes, with support for url signature and jwt token.

plg_authenticate_wordpress

Use your WordPress site as the identity provider, with WordPress roles mapped to access.

Authorisation Plugin [doc]

Once you know who the user is, choose which actions they can perform and what they can see.

nothing

The storage stays in charge, permissions come entirely from the underlying storage.

plg_authorization ↓

This adds an authorization field in your storage, so you control all the actions possible for a user: ls,cat,mkdir,save,rm,mv,touch. Since you can use go templating language in that field, you can do things like this:
{{ if eq .role "ADMIN" }}mkdir,rm,mv,save,touch, {{ end }}ls,cat.

plg_authorisation_rbac ↓

Provides an administration dashboard to create and manage RBAC rules, allowing administrators to control who can perform specific actions and where.

plg_authorisation_readonly ↓

This is to enforce all your storage to be read only with no option to mutate anything. It is like plg_authorizaton where the only possible actions are "ls" and "cat"

plg_authorization_cerbos ↓

This plugin delegates authorisation to cerbos.

plg_authorization_iam

This plugin delegates authorisation to AWS IAM.

plg_authorization_api

Delegate authorisation to a third party service via an API.

plg_chroot

Part of core, this lock a user into the folder of your choice. There are 4 typical models:
1. the global shared space. Everyone has access to the same thing
2. group based access. example: marketing and sales have their own shared space
3. isolated user. Every user has a private space
4. a mix of 1, 2 and 3 altogether with various rules associated to those

custom

When your rules don't fit an existing plugin, it's time to go the custom route. Create your own by following our development guide or let us do it for you

Storage Plugin [doc]

The storage connectors you want to connect to.

plg_backend_virtualfs ↓

The Virtual Filesystem (VFS) connector lets you compose storages together to form a single unified filesystem regardless of what those storages are and where they are located → doc

plg_backend_ftp ↓

Support for FTP and FTPS server

plg_backend_artifactory ↓

Support for Artifactory

plg_backend_azure ↓

Support for Azure Blob Storage

plg_backend_backblaze ↓

Support for Backblaze B2 Storage

plg_backend_dav ↓

Support for WebDAV, calDAV and cardDAV servers

plg_backend_dropbox ↓

Support for Dropbox

plg_backend_gcloud ↓

Support for Google Cloud Storage

plg_backend_gdrive ↓

Support for Google Drive

plg_backend_git ↓

Support for GIT remote

plg_backend_ipfs ↓

Support for IPFS servers

plg_backend_ldap ↓

Support for LDAP Directories. It shows xx as folder and xx as files which you can fill

plg_backend_local ↓

Local File Storage

plg_backend_mysql ↓

Support for Mysql

plg_backend_nfs ↓

Support for NFS server

plg_backend_nfs4 ↓

Support for NFSv4 servers

plg_backend_nop ↓

In memory test server handy for performance testing / identifying bottlenecks

plg_backend_perkeep ↓

Connect to Perkeep

plg_backend_psql ↓

Browse a PostgreSQL database as folders and files.

plg_backend_resilio

Support for Resilio Sync and Resilio Active Everywhere

plg_backend_s3 ↓

Support for AWS S3 and S3 compatible servers like minio, Dell ECS, backblaze, cloudflare, versity, ...

plg_backend_sharepoint ↓

Support for Microsoft Sharepoint

plg_backend_smb ↓

Support for SMB servers

plg_backend_sftp ↓

Support for SFTP servers

plg_backend_storj ↓

Support for Storj Storage

plg_backend_syncthing ↓

Browse folders on a Syncthing instance

plg_backend_tmp ↓

To create temporary storage

plg_backend_url ↓

Support for opendirectories

plg_backend_webdav ↓

Support for WebDAV servers

Themes

Don't like the default look and feel? Apply a new coat of paint

plg_theme_apple ↓

github screenshot

plg_theme_dropbox ↓

github screenshot

plg_theme_gdrive ↓

github screenshot

plg_theme_github ↓

github screenshot

plg_theme_ibm ↓

github screenshot

plg_theme_onedrive ↓

github screenshot

plg_theme_untitled ↓

github screenshot

plg_branding_enterprise

White-label branding: your logo, favicon and colours across the app. Reach out to usgithub screenshot

Viewer Apps

Extend the file viewer with support for ~140 file formats

plg_override_download

This plugin has 2 main functions:
1. keep user from being able to reach the file viewer at all and keep them in the list of files view
2. disable all the default viewer apps so it always show the basic download button

plg_application_3d ↓

It knows how to open and render 3d related files like: fbx, gltf, obj, stl, step, mesh, ifc, dae

plg_application_adobe ↓

It knows how to open / render adobe files like: psd, ai, xd, dng, postscript, aco, ase, swf

plg_application_autodesk ↓

It will render your autodesk files for both dwg and dxf files

plg_application_biomed ↓

It knows how to open files like: dicom, sam, bam, cif, pdb, xyz, sdf, mol, mol2 and mmtf

plg_application_creative ↓

It knows how to open files like: svg, psd, ai, sketch, cdr, woff, woff2, ttf, otf, eot, exr, tga, pgm, ppm, dds, ktx, dpx, pcx, xpm, pnm, xbm, aai, xwd, cin, pbm, pcd, sgi, wbmp and rgb

plg_application_dev ↓

It knows how to open files like: .a, .so, .o, .dylib, .dll, .har, .cap, .pcap, .pcapng and sqlite

plg_application_embroidery ↓

It knows how to open embroidery files like: .dgt, .dst, .dsb, .dsz, .edr, .exp, .10o, .col, .hus, .inf, .jef, .ksm, .pcm, .pcs, .pes, .sew, .shv, .sst, .tap, .u01, .vip, .vp3. and .xxx

plg_application_engineering ↓

It knows how to open files like: .parquet, .arrow, .feather, .avro, .orc, .hdf5, .h5, .netcdf, .nc, .rds, .rda and .rdata

plg_application_gis ↓

It knows how to open files like: .geojson, .shp, .gpx, .wms and .dbf

plg_application_htmlframe ↓

Open HTML files as rendered pages, in a sandboxed frame.

plg_application_musician ↓

It knows how to open files like: .mid, .midi, .gp4 and .gp5

plg_application_office ↓

There are many way to open office document, this particular version handles through wasm file like: .doc, .docx, .rtf, .odt, .xlsx, .xls, .ods, .ppt, .pptx and .odp

plg_application_pgp ↓

Provides end to end encryption support using PGP. File content is encrypted on the client before upload using user-held keys, and the server never has access to those keys.

plg_application_photography ↓

It knows how to open files like: .heif, .nef, .raf, .tiff, .raw, .fits, .xisf, .arw, .sr2, .srf, .nrw, .cr2, .crw, .x3f, .pef, .rw2, .orf, .mrw, .mdc, .mef, .mos, .dcr, .kdc, .3fr, .erf and .srw

plg_application_science ↓

It knows how to compile files through latex, pandoc, plantuml

plg_application_xslt

Render XML files using XSLT

Server Plugin [doc]

Choose how Filestash start itself up: HTTP, HTTPS, TOR, ...

plg_starter_http ↓

Default starter plugin using a HTTP server with a configurable port with the default being 8334. It is intended to be used behind a reverse proxy with SSL termination being done at the proxy level

plg_starter_web

Expose your instance over HTTPS with an automatic letsencrypt certificate. It is intended for those who want to spin off an instance with all the certificates stuff being handled witout any maintenance work

plg_starter_https

Default starter plugin using a HTTPS server and a self signed certificate

plg_starter_httpsfs

Expose your instance over HTTPS where your certificates must be mounted manually in case you already have those

plg_starter_http2

Default starter plugin using a HTTP2 server and a self signed certificate

plg_starter_tor ↓

Expose your Filestash instance as a .onion service

plg_gateway_mcp ↓

Expose your data via MCP

plg_gateway_sftp ↓

Expose your data via SFTP

plg_gateway_s3 ↓

Expose your data via S3

plg_gateway_nfs

Expose your data over NFS

plg_gateway_as2

Run a AS2 as a mailbox and to run transfers

plg_gateway_pesit ↓

coming soon - contact us

Configuration Plugin [doc]

Choose where Filestash keeps its configuration

default

By default, configuration is stored on config.json file

plg_config_s3

You can push / pull configuration in a S3 bucket

plg_config_env

You can configure everything from a environment variable

plg_config_log

Print the active configuration at startup, for troubleshooting.

custom

A configuration plugin expose 2 things, a way to load configuration and a way to save it. You can create your own or let us do it for you

Thumbnail Plugin

How thumbnail are being generated

nothing

If you don't want to generate any thumbnails at all

plg_image_c ↓

Our fastest thumbnailer build with custom C code made to be fast

plg_image_golang ↓

Another thumbnailer that's much slower but implemented in a memory safe language: golang

plg_image_bimg ↓

Another thumbnailer using the bimg library

plg_video_thumbnail ↓

Generate video thubmanil from video files

plg_image_light ↓

The legacy thumbnailer built of libvips

Transcoding Plugin

Converting file from / to various formats

nothing

You don't need to have any transcoding plugin installed

plg_image_transcode ↓

To transcode image in various format like bmp, dicom, svg, and tiff

plg_video_transcoder ↓

To transcode your video files onto HLS stream

plg_image_ascii ↓

To transcode images to ascii characters

Office Plugin [doc]

Support office documents like docx, xlsx, pptx, etc..

plg_application_docx ↓

A docx file viewer and editor based of docx-editor from eigenpal

plg_application_docxjs ↓

A docx file viewer based of docxjs

plg_application_office ↓

A solution based of libre office wasm, running entirely from the browser

plg_application_xlsx ↓

A solution based of ironcalc running entirely from the browser

plg_editor_onlyoffice ↓

Support for the only office editor

plg_editor_msoffice

Support for a readonly microsoft edited solution

plg_editor_wopi ↓

Implement the WOPI protocol that's compatible with ms word online

Security & Compliance

Tighten the security around your instance

plg_security_killswitch

Add a killswitch if we were to discover a major security flow like what happenned during the infamous Log4J RCE

plg_security_captcha

Enforce a captcha for people using the app

plg_admin_nil

Disable the entire admin console

plg_audit_log

A complete auditing interface to see who did what and when

plg_audit_compliance

A tamper-evident audit trail, with hash-chained records and everything to make your auditor happy

plg_compliance_bagit

Supprot for BagIt packaging for archives for digital preservation

plg_compliance_encryption

Electronic signatures and RFC 3161 timestamps on files

plg_compliance_fips

Change the default list of ciphers to FIPS compliant ones

plg_compliance_nfz42020

Compliance with the French NF Z42-020 digital vault standard

plg_middleware_quota

Storage quotas per user or folder

plg_middleware_session

Fine Grained session expiration options

plg_middleware_iddle_session

Automatically logout idle users

plg_security_scanner

Automatic detection of unwanted activity

plg_security_block

Block connections based on euristics like IP location, IP blacklist

plg_security_clamav ↓

Run your files through the clamav antivirus solution

plg_security_notification

Send System Notifications to admin</a>

plg_security_steganography

Create fingerprints of your files through Steganography

Workflow & Automation [doc]

Trigger actions and automate the flow of information

plg_workflow_base ↓

A bunch of random workflow trigger and actions

plg_workflow_mail ↓

Add email notification block to workflow action

plg_workflow_ingest ↓

Trigger workflows from incoming email (an IMAP folder).

plg_search_sqlitefts ↓

Our full text search plugin provide workflow integration to generate the index in an offline fashion

plg_workflow_n8n

Workflow Integration through n8n

plg_workflow_zapier

Workflow automation using Zapier

Other

We are very open to supporting more automation / workflow platform. Reach out to us here if you need anything.

Other Plugin

Plugins that won't fit on any previous category

plg_application_shares

An admin screen to review and manage shared links

plg_gateway_mcp ↓

Use Filestash as a tool for AI agent with its MCP capabilities

plg_gateway_sftp ↓

SFTP Gateway to expose your data through SFTP - doc

plg_gateway_s3 ↓

SFTP Gateway to expose your data through S3

plg_backend_versioning ↓

Add versioning capabilities to your storage

plg_middleware_bin

Adds Recycle Bin functionality. Instead of permanently deleting files or folders, deletion operations move them to a dedicated trash folder.

plg_handler_site ↓

Publish shared links as a static site

plg_application_signature

Enable the generation of electronic signatures and seals as per eidas

plg_handler_console ↓

Adds a web based terminal to control your instance via the admin console

plg_middleware_transfer

Gives a dashboard to monitor ongoing transfers and the ability to cancel ongoing transfers

plg_middleware_watermark

Applies a watermark to images to protect against unauthorized redistribution.

plg_tracer_zipkin ↓

Export request traces to Zipkin

plg_widget_banner ↓

Show a banner to all users, for example for planned maintenance

plg_widget_chat ↓

The chat widget enables users to discuss files or folders directly from the web interface.

plg_widget_description ↓

The description widget allows users to store and edit a description field for files and folders.

plg_widget_favourite ↓

Bookmark favourite files and folders

plg_widget_lock

Lock a file while someone edits it

plg_widget_metadata

Attach metadata to files as a widget

plg_widget_recent

A "Recent files" folder

other

We have ton of other small plugins available, things like changing sending notifications, changing cookie policies, use other implementation of the zip algorithm based of fastzip, ...

Custom plugin development

Want to create your own plugins? Here are the relevant ressources:

  1. Filestash plugin development
  2. Creating Filestash plugins in Rust
  3. core interface
  4. runtime cookbook
  5. compiled plugins reference

As your integration partner, building plugins to your specs is what we do best, and that’s what keeps Filestash going -> Hire us

Some bespoke plugins we’ve built:

  • MIT - integrates their Samba file server with LDAP, with another layer of 2FA through Duo’s API
  • DHL - lets employees browse and manage workspaces Artifactory
  • Schneider Electric - enables the documentation team to push updates to embedded help pages
  • Monash University - to enable their users to access their archives with some recovering functionalities powered by versity
  • UCI - gives students access to the multi PB campus cluster running IBM GPFS
  • USZ - connects Filestash to a DELL ECS based storage cluster
  • and many more …