file-manager icon indicating copy to clipboard operation
file-manager copied to clipboard

A basic node.js file manager

file-manager

A basic node.js file manager.

Features

  • [x] Simple authentication
  • [x] Directory browsing
    • [x] Filesize
    • [ ] Permissions
    • [ ] Owner
  • [x] Folder creation
  • [x] File uploads
    • [ ] Bulk file uploads
    • [ ] Large file uploads (sharded)
  • [x] File/folder renaming
  • [x] Previews for small image files
  • [x] Bulk file/folder selection
    • [x] Delete
      • [x] Recursive directory delete
    • [ ] Move
    • [ ] Copy
    • [x] Download archive
    • [ ] Change permissions
  • [x] Remote commands

Usage

For users who prefer Docker:

docker run --rm -it -v $PWD:/data -p 8080:8080 serverwentdown/file-manager

Or if you have Node.js installed:

npm install -g https://github.com/serverwentdown/file-manager.git
file-manager

Screenshots

These screenshots are not up-to-date.

Options

The following environmental variables can be used to configure file-manager.

SESSION_KEY=

Express session key, generate something random.

SHELL=

Enable the shell feature, which allows users to start a login shell (when set to login) or the binary specified by this option (example: /bin/bash). Be careful when enabling this feature as anyone with access to this portal can execute any command on your machine.

CMD=

Set to something other than "false" to enable running single commands in the default shell, usually /bin/sh. Be careful when enabling this feature as anyone with access to this portal can execute any command on your machine.

PORT=

Listen on $PORT. Default: 8080

KEY=

Setting this variable enables authentication using TOTP (RFC6238). $KEY is a base32 encoded shared secret. This key is only a weak means of protection as it is succeptable to brute-force. You can generate one from here or manually.