Dumpster icon indicating copy to clipboard operation
Dumpster copied to clipboard

A lightweight, self-hosted and API-based file upload server supporting YubiKey OTP authentication.

Dumpster

Codacy Badge Dependency Status StackShare

A lightweight, self-hosted and API-based file upload server supporting YubiKey OTP authentication.
Written in NodeJS and CoffeeScript, persistence layer implemented with LevelDB and page rendering done with Jade.

Table of contents

  • Installation
    • Docker image
  • Configuration
  • Usage
    • CLI
    • WebUI
  • Notes & Credits

Installation

  • Clone the repo.
  • Navigate to the cloned directory and run:
    • npm install
    • npm run bower
  • Edit the configuration file (see the Configuration section).
  • Enjoy Dumpster with npm start!

Docker image

If you prefer running Dumpster in a container, a Dockerfile is available to build an image. An automated build can also be found in the Docker Hub: you can pull it with docker pull nmaggioni/dumpster.

A simple and not production-ready docker-compose file is available as well, along with a rancher-compose for deploying on Rancher.

Configuration

Edit the config.json file in the config directory to configure Dumpster. Be sure to check the related Wiki page for a thoroughly explanation of all the options!

Usage

CLI

Dumpster is easy to use, and mainly meant to be called from CLI or API. Refer to the related Wiki page for API parameters and their explanation.

WebUI

If enabled in the configuration with the enableWebUI option, a simple graphical web interface will be available on the root path. It will follow the skipAuth setting, requesting an OTP token only if needed. A drag-and-drop upload widget is available, and uploads are performed via AJAX requests.

WebUI demo

A live demo is also available on GitHub pages.

Note on persistence

Since version v3.0.0, Dumpster will register and manage deletion dates in a local LevelDB instance (to be found in the database folder created upon starting the server). That way, if you stop the server and restart it at a later time, it will purge files with older deletion date than the current one and re-schedule future deletions.

Credits

The included YubiKey library is a modified version of the one in Adam Baldwin (evilpacket)'s repo.