Go to file
Graham Steffaniak b893de22bc
Update README.md
2023-09-03 17:19:51 -05:00
.github build(backend): bump go version to 1.20.1 2023-02-15 23:43:20 +01:00
backend updated scope 2023-09-03 17:16:49 -05:00
frontend updated settings to work :) 2023-09-03 12:28:00 -05:00
.dockerignore updated deps and reverted search 2023-08-17 16:46:49 -05:00
.gitignore updated things 2023-08-12 11:30:41 -05:00
CHANGELOG.md updated 2023-09-02 19:16:19 -05:00
Dockerfile updated 2023-09-03 17:03:00 -05:00
README.md Update README.md 2023-09-03 17:19:51 -05:00
test_output.txt updated tests 2023-09-02 13:07:51 -05:00

README.md

Gtstef / filebrowser

NOTE Intended for docker use only

Warning Starting with v0.2.0, ALL configuration is done via filebrowser.yaml configuration file. .filebrowser.json and any flags other than -c and -config during execution WILL NO LONGER WORK. This is by design, in order to use the v0.2.0 You can mount your directory and initialize a new DB with a new default filebrowser.yaml which you can tweak and use in the future. Or you can copy and paste the default startup filebrowser.yaml below.

This fork makes the following significant changes to filebrowser for origin:

  1. Improves search to use index instead of filesystem.
    • Lightning fast
    • Realtime results as you type
    • Works with file type filter
    • better desktop search view
  2. Preview enhancements
    • Preview default view is constrained to files subwindow, which can be toggled to fullscreen.
  3. Improved and simplified GUI
    • Moved all action buttons to file action bar except for switch-view
    • Simplified navbar to 3 main actions: settings,search, and switch-view
    • New search view on desktop
  4. Updated version and dependencies
    • Uses latest npm and node version
    • Removes deprecated npm packages
    • Updates golang dependencies
    • Remove all unnecessary packages, replaces with generic functions.
  5. IMPORTANT Moved all configurations to filebrowser.yaml. no more flags or binary operations to db

About

Filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app.

This repository is a fork, a collection of changes that make this program work better in terms of asthetics and performance. Improved search, simplified ui (without removing features) and more secure and up-to-date build are just a few examples.

There are a few more changes needed to get it to a stable status where it will only recieve security updates. These changes are mentioned above. Once this is fully complete, the only updates to th

Look

This is how desktop search looks in 0.1.3, the styling will be further refined in the next version. image

However mobile search still appears very similar to filebrowser/filebrowsers original implementation: image

search categories are improved:

image

Performance

Search Performance - 100x faster search. However, this will be at expense of RAM. if you have < 1 million files and folders in the given scope, the RAM usage should be less than 200MB total. RAM requirements should scale based on the number of directories.

Also , the approx. time to fully index will vary widely based on performance. A sufficiently performant system should fully index within the first 5 minutes, potentially within the first few seconds.

For example, a low end 11th gen i5 with SSD indexes 86K files within 1 second:

2023/08/01 00:08:29 Using config file: /.filebrowser.json
2023/08/01 00:08:29 Indexing files...
2023/08/01 00:08:29 Listening on [::]:8080
2023/08/01 00:08:30 Successfully indexed files.
2023/08/01 00:08:30 Files found       : 85310
2023/08/01 00:08:30 Directories found : 1711
2023/08/01 00:08:30 Indexing scheduler will run every 5 minutes

Install

Using docker:

  1. docker run:
docker run -it -v /path/to/folder:/srv -p 8080:8080 gtstef/filebrowser
  1. docker-compose:
  • with local storage
version: '3.7'
services:
  filebrowser:
    volumes:
      - '/path/to/folder:/srv'
      #- './database/:/database/'
      - './config.json:/.filebrowser.json'
    ports:
      - '8080:8080'
    image: gtstef/filebrowser
  • with network share
version: '3.7'
services:
  filebrowser:
    volumes:
      - 'nas:/srv'
      #- './database/:/database/'
      #- './config.json:/.filebrowser.json'
    ports:
      - '8080:80'
    image: gtstef/filebrowser
volumes:
  nas:
    driver_opts:
      type: cifs
      o: "username=myusername,password=mypassword,rw"
      device: "//fileshare/"

Configuration

All configuration is now done via a single configuration file: filebrowser.yaml, here is an example configuration file.

background

The original project filebrowser/filebrowser used multiple different ways to configure the server. This was confusing and difficult to work with from a user and from a developer's perspective. So I completely redesigned the program to use one single human-readable config file.