🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...

Overview

screenshot


A Dropbox-like file manager that let you manage your data anywhere it is located:
FTP • FTPS • SFTP • WebDAV • Git • S3 • LDAP • Mysql
CardDAV • CalDAV • Backblaze B2 • Minio
Dropbox • Google Drive

demo button

Features

  • Manage your files from a browser
  • Full org mode client (documentation)
  • Flexible Share mechanism
  • Video player
  • Video transcoding (mov, mkv, avi, mpeg, and more)
  • Image viewer
  • Image transcoding (raw images from Nikon, Canon, and more)
  • Photo management
  • Audio player
  • Full Text Search
  • Shared links are full fledge network drive
  • Office documents (docx, xlsx and more)
  • User friendly
  • Mobile friendly
  • Customisable
  • Super fast
  • Upload files and folders
  • Multiple cloud providers and protocols, easily extensible
  • Nyan cat loader
  • Quick access: frequently access folders are pin to the homepage
  • Emacs, VIM or Sublime keybindings ;)

Screenshots

user experience on navigation

user experience on medias

Documentation

The core idea

Filestash aims to solve the Dropbox problem by abstracting the storage aspect. This makes it possible to bring your own backend or create your own by implementing a simple interface. The power of that model makes it possible for non nerds to easily interact with complex systems without prior training (assuming they are familiar with Dropbox). As an example of that superpower, see our LDAP backend and the Mysql one that emulate a file system where first level folder are the databases, tables are represented as subfolders and each row is represented as a file:

infographic

Support the project

If you use Filestash, contributing to my coffee bill would go a long way as I have spent countless hours in the last 3 years working on this project from my local coffee shop.

Credits

Issues
  • added ubuntu instructions + script

    added ubuntu instructions + script

    added instructions + sh script that does most things automatically for a user

    opened by SRugina 15
  • Setup app for heroku deploy

    Setup app for heroku deploy

    • Add postinstall script to package.json to ensure webpack assets are built for heroku deploy
    • Add Procfile for heroku to read the main web process
    • Add process.env.PORT to listen call

    Ref #15

    opened by benreyn 11
  • Add option to run the app under a non-root URL.

    Add option to run the app under a non-root URL.

    This PR addresses #168.

    The general.url_prefix configuration option is added to run filestash at a location that is not the root of the domain. The prefix should be specified with a leading slash and no trailing slash. Leaving this option empty corresponds to previous behavior.

    The option general.url_prefix can also be set though the URL_PREFIX environment variable.

    The backend rewrites index.html to include a <base> tag which informs the frontend about the url prefix. The downside of this approach is that index.html cannot be cached or compressed.

    This feature should be considered experimental. I have tested the basic functionality but I can't guarantee that everything will still work so it probably requires more testing.

    wontfix 
    opened by samuelsadok 7
  • Add VSCode devcontainer to facilitate onboarding of new contributors.

    Add VSCode devcontainer to facilitate onboarding of new contributors.

    With the VSCode extension Remote - Containers, the user will develop within a Docker container already set up with all the required dependencies. This way the user system will be left unmodified and he is immediately ready to start developing.

    For easy access to instructions, tasks.json was added. Just run the tasks init, build and run to serve the app. You can then access filestash via http://127.0.0.1:8334/.

    opened by darkdragon-001 7
  • Add samba backend

    Add samba backend

    Closes #308.

    To be resolved:

    • [x] Testing with samba servers
    • [x] gosmb2 seems to allow only \ separators. Maybe we have to string-replace / to \?
    opened by ThreeFx 6
  • Fix autovacuum renamed autoVacuum

    Fix autovacuum renamed autoVacuum

    Solves #68

    opened by fngx 5
  • fix (s3): fix remove a single object

    fix (s3): fix remove a single object

    Thank you for developing filestash. I really appreciate it!

    While working with s3 backend I found bug:

    In S3 backend, objects, as well as buckets are removed basing on objecs list received from client. As the objects are fetched by Prefix, the request for removing object 'foo' will remove all 'foo*' objects in this bucket.

    For instance, having bucket with objects like so:

        awesomebucket/
        ├── foo
        ├── foobar
        └── thing
    

    Rm("awesomebucket/foo") will have effect:

        awesomebucket/
        └── thing
    

    This change fixes this bug by recognizing if single object has to be removed or the entire bucket. For single object, we don't need to walk through directories and can request to remove directly.

    I'm using S3 backend exposed via RADOS Gateway.

    Cheers

    opened by brxie 4
  • Fix double encoding of file links

    Fix double encoding of file links

    Fix for #203

    opened by itsnotv 4
  • Use more standard Dockerfile

    Use more standard Dockerfile

    what have been done:

    • use local code to build docker machine
    • make build easy with Fork code
    • use step to allow docker to do caching
    • use separete machine to build front
    • test go server and front access
    • use standard approach for go folder and main
    • move dockerfile to root folder
    opened by BobCashStory 4
  • Bump github.com/tidwall/gjson from 1.6.5 to 1.9.3

    Bump github.com/tidwall/gjson from 1.6.5 to 1.9.3

    Bumps github.com/tidwall/gjson from 1.6.5 to 1.9.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies go 
    opened by dependabot[bot] 0
  • Issue & Fix : Enter key in custom css text area causes error

    Issue & Fix : Enter key in custom css text area causes error

    Details

    When pressing enter key in custom.css text area (in Admin Console Settings 'admin/settings') , causes an error:

    Uncaught TypeError: Cannot read properties of undefined (reading 'parentElement')
    

    Steps to reproduce:

    1. Login to admin console in filestash.
    2. Click on "Settings" link on the left.
    3. On the Settings page, select Custom Css text area.
    4. Press enter key
    5. Error appears. Uncaught TypeError: Cannot read properties of undefined (reading 'parentElement')

    Cause

    In Line 23 in client/components/textarea.js, $el.current.ref, ref property is undefined.

    Proposed fix

    Remove ref property reference, $el.current.ref to $el.current.

    Potential Impact

    This fix could affect/break all text areas in filestash. Hoping frontend tests will be able catch any undesirable impact from this fix.

    Note

    From my limited manual testing of the custom css text area, this fix works.

    opened by tabby-jun 0
  • Debian install

    Debian install

    I have added the installation instructions for Filestash on Debian. It should be used for production.

    opened by sehnryr 2
  • Improve rename file form

    Improve rename file form

    When renaming a file, after pressing Enter, the file was successfully renamed but the it open itself (at least on Firefox) So now, when a link capture a keydown event with key Enter, then the onRename function is called on the filename component.

    I also make a wider input because it was a bit strange to see the filename truncated during the edit.

    opened by Bramas 0
  • fix(history): call unlisten multiple times

    fix(history): call unlisten multiple times

    this.unlisten will be called twice, it caused the problem: after you viewed a file, the back button of browser will not work.

    opened by Eronana 1
  • Add language and multi user collaboration support to onlyoffice

    Add language and multi user collaboration support to onlyoffice

    This PR adds translation support to the onlyoffice editor by extracting the user language from the Accept-Lang header.

    It also adds support for multi-user collaborative editing by removing the user id from the key for the onlyoffice document. I understand why you added that in, but I can't think of a case where the key has a hash collision with another totally different file because you already add the HashStream to the key. And in most cases, the user id is also already part of the path, so I'm pretty sure this is okay and enables users to use collaborative editing.

    opened by vigonotion 2
Releases(v0.4)
https://gitlab.com/samba-team/samba is the Official GitLab mirror of https://git.samba.org/samba.git -- Merge requests should be made on GitLab (not on GitHub)

About Samba Samba is the standard Windows interoperability suite of programs for Linux and Unix. Samba is Free Software licensed under the GNU General

Samba Team 606 Nov 25, 2021
Streaming torrent client for Node.js with web ui.

peerflix-server Streaming torrent client for node.js with web ui. Based on torrent-stream, inspired by peerflix. Usage npm install -g peerflix-server

Aliaksei Sapach 1.2k Nov 28, 2021
Client-side encrypted image host web server

Up1: A Client-side Encrypted Image Host Up1 is a simple host that client-side encrypts images, text, and other data, and stores them, with the server

Upload 762 Nov 30, 2021
Proxy for turning web browsers into web servers. Load a 100GB file in your browser and stream it over the public web with HTTP byte range requests.

Live demo instance running at https://fbrg.xyz. Feel free to use it but please try not to overload it (ie lots of video streaming, etc). It doesn't ha

Anders Pitman 74 Oct 25, 2021
Share and collaborate by syncing with any Git repository instantly. Linux, macOS, and Windows.

SparkleShare SparkleShare is a file sharing and collaboration app. It works just like Dropbox, and you can run it on your own server. It's available f

Hylke Bons 4.7k Nov 24, 2021
qBittorrent BitTorrent client

qBittorrent - A BitTorrent client in Qt Description: qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called

qBittorrent project 13.6k Dec 3, 2021
☁️ Cloud Torrent: a self-hosted remote torrent client

Cloud torrent is a a self-hosted remote torrent client, written in Go (golang). You start torrents remotely, which are downloaded as sets of files on

Jaime Pillora 5.1k Nov 24, 2021
Official Transmission BitTorrent client repository

About Transmission is a fast, easy, and free BitTorrent client. It comes in several flavors: A native Mac OS X GUI application GTK+ and Qt GUI applica

Transmission 6.2k Dec 1, 2021
🌊 Simple, robust, BitTorrent tracker (client & server) implementation

bittorrent-tracker Simple, robust, BitTorrent tracker (client & server) implementation Node.js implementation of a BitTorrent tracker, client and serv

WebTorrent 1.3k Nov 23, 2021
🌊 Simple, robust, BitTorrent tracker (client & server) implementation

bittorrent-tracker Simple, robust, BitTorrent tracker (client & server) implementation Node.js implementation of a BitTorrent tracker, client and serv

WebTorrent 1.3k Nov 30, 2021
:cloud: ownCloud web server core (Files, DAV, etc.)

ownCloud Core ownCloud gives you freedom and control over your own data. A personal cloud which runs on your own server. Why is this so awesome? ?? Ac

ownCloud 7.6k Nov 30, 2021
📂 Web File Browser

filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files.

File Browser 13.6k Nov 23, 2021
HTTP web server index for Apache httpd, lighttpd and nginx.

h5ai A modern HTTP web server index for Apache httpd, lighttpd, and nginx. Important Do not install any files from the src folder, they need to be pre

Lars Jung 4.6k Nov 30, 2021
🚀 Streaming file transfer over WebTorrent (torrents on the web)

Streaming file transfer over WebTorrent (torrents on the web) Download/upload files using the WebTorrent protocol (BitTorrent over WebRTC). This is a

WebTorrent 2.9k Nov 30, 2021
Web application that indexes all popular torrent sites, and saves it to the local database.

I've paused development of Magnetissimo to focus on Torrentinim. https://github.com/sergiotapia/torrentinim It's smaller, easier to get running on any

Sergio Tapia 2.5k Nov 30, 2021
Web based p2p file sharing built on WebRTC Data Channels API

Farewell It's been 5 years since commercial browsers started supporting WebRTC . Peer5 is no longer able to keep Sharefest functional and operating, i

Peer5 1.7k Nov 20, 2021
📂 Directory Lister is the easiest way to expose the contents of any web-accessible folder for browsing and sharing.

Directory Lister is the easiest way to expose the contents of any web-accessible folder for browsing and sharing. With a zero configuration, drag-and-

Directory Lister 1.5k Nov 20, 2021
Sharry is a self-hosted file sharing web application.

Sharry Sharry allows to share files with others in a simple way. It is a self-hosted web application. The basic concept is: upload files and get a url

null 290 Nov 22, 2021