Plugins

Our goal is to build the best web file manager ever made. Because “best” is subjective, we made Filestash fully modular; anything that is an opinion and not an absolute truth lives in a plugin. This lets you pick only the parts you need across all key functions:

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

Plugin Inventory

Authentication Plugin

Defines the "who" in the "who can do what and where" model of authentication / authorisation

nothing

Without enabling an authentication plugin, users are exposed to the underlying authentication of the storage. This make Filestash the browser based equivalent of desktop tools like Filezilla FTP or Cloudberry where users must know the details of your storage such as hostname, port, access key ID and other storage specific details which might confuse non experts who expect the "Dropbox experience".

plg_authenticate_admin

Authorise only the Filestash admin user. Typical usage is for single user instance where the admin password protects everything.

plg_authenticate_htpasswd

This plugin is compatible with Apache Htpasswd where you supply a file containing a series of username / password (with an optional role for RBAC in the enterprise version of the plugin) and that file become the source against which users are authenticated against.

plg_authenticate_ldap

Enable users to authenticate via your existing LDAP directory (including Active Directory / Microsoft Entra). It returns all the attributes a the user which you can used to provide fine grained access control.

plg_authenticate_local

Alongside plg_authenticate_htpasswd, that's your best option for local authentication where Filestash will act as the identity provider. When enabled, the plugin gives you a GUI to manage users with options for MFA authentication and roles based access control.

plg_authenticate_openid

SSO Authentication via OIDC. When using this plugin, Filestash delegates the authentication to your existing IDP. Depending on the scope, the plugin returns back the list of attributes associated to a user which you can use to provide fine grained access to your users.

plg_authenticate_passthrough

Delegate the authentication to your storage server. There is 2 typical examples:
1. Enable automatic login so users are not asked for any kind of credentials
2. Simplify the authentication for your users so they areonly ask either for a "username" and / or a "password" and everything else is automatically set for them: hostname, port, whatever other parameter + option to create jail / chroots

plg_authenticate_proxy

If you use Filestash behind a proxy and your proxy is sending the information about the user through HTTP headers (typically via a X-Remote-User and X-Remote-Role header), then you can use that information to authenticate users. Typical example of this plugin is if you use some cloud proxy that block public traffic and handles user authentication and some setup we have work on involving Kerberos

plg_authenticate_saml

SSO Authentication via SAML. Filestash will delegates the authentication to your IDP. At the end of the authentication, you will have a range of attributes available to discriminate who can do what and where

plg_authenticate_sql

This is to delegate authentication to a SQL database which can be either Mysql / Postgres or Oracle. Typical example is to leverage your existing wordpress instance as the source of users so you can provide access to people who are already users of your system.

plg_authenticate_url

Authentication is about answering the "who" part of the whole equation. With this plugin, the who is made of the attribute you are sending through URL parameters with options to sign URLs for more security. Typical use case is to provide access via QR code, parametrised deeps links, shared links where the URL parameter is a JWT token and authorisation which can be verified dynamically and authorisation rules to be made via JWT claims

Authorisation Plugin

This kind of plugin is to specify "what" a user is able to do and "where"

nothing

Without a dedicated authorisation plugin, Filestash delegates the authorisation to your storage without any additional rules on top

plg_authorization

This plugin adds an authorization field to your storage so you can control all the base actions possible for a user: ls,cat,mkdir,save,rm,mv,touch. This enables RBAC via this syntax: {{ if eq .role "ADMIN" }}mkdir,rm,mv,save,touch, {{ end }}ls,cat. This is the recommended solution for simple use case where you can express the authorisation rules using the go templating language

plg_chroot

This plugin adds an "path" field to your storage which act as a chroot / jail. In our "who can do what and where", this fixes the "where" portion to enforce various views of the filesystem for different users. This has 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

plg_external_authorization

This plugin delegate authorisation to a third party service via an API. This enables integration with third party authorisation solutions such as IAM or cerbos

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"

custom

Sometime authorisation is more complicated and you need room to create a lot of rules without having to shoehorn an existing plugin. In that scenario, custom plugin can fill the gap. One example we deployed at DHL was to provide access based on a matrix of parameters, half coming from the IDP, half coming from calling some web services. Another example is for a strata company in California who was representing properties as buckets in their system and had 5 type of users, each capable of getting different kind of access to different properties with different view for each.

Themes

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

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

custom

Of course we can create theme that replicate the look and feel of your company but we can go above and beyond changing colors and a little bit of CSS, custom functionalities like custom banners, interactive buttons and a range of other functions that would be either very costly or straight up not possible with the other options in the market. Reach out to us here, we'd love to transform your vision into a reality

Viewer Apps

Those are the plugin taking control when the user tries to open a particular file type

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_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_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

Starter Plugin [doc]

They dictate how Filestash expose itself, either via HTTP, HTTPS with self signed certificate, let's encrypt or even 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

Storage Plugin

The storage connectors you want to connect to

plg_virtual

This enable mounting another storage and provide a virtual file system kind of experience where the structure of the underlying storage is different than what the users actually see from the app

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_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_nop

In memory test server handy for performance testing / identifying bottlenecks

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_tmp

To create temporary storage

plg_backend_url

Support for opendirectories

plg_backend_webdav

Support for WebDAV servers

Configuration Plugin

How configuration is being pulled and pushed

default

By default, configuration is stored on config.json file

pg_config_s3

You can push / pull configuration in a S3 bucket

plg_config_env

You can configure everything from a environment variable

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_c

Our fastest thumbnailer build with custom C code made to be fast and supporting a wide range of image format: webp, tiff, raw, psd, png, jpeg, heif, gif

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

Office Plugin

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

plg_editor_onlyoffice

Support for the only office editor

plg_editor_msoffice

Support for a readonly microsoft edited solution

plg_application_office

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

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_compliance_fips

Change the default list of ciphers to FIPS compliant ones

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_steganography

Create fingerprints of your files through Steganography

Other Plugin

Plugins that won't fit on any previous category

plg_handler_mcp

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

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

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

Need something not in this list? Get in touch, we do provide bespoke plugin development and custom builds.

Examples we’ve delivered:

  • MIT - integrate their Samba file sharing server with LDAP and Duo two factor authentication.
  • 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 …