A self-hostable, fully featured file host
PenguinUpload is a self-hostable web application that lets users upload and share files.
PenguinUpload was inspired by sr.ht.
However, while sr.ht
uses a Flask backend and static HTML as a frontend,
PenguinUpload uses an ASP.NET Core + NancyFx backend and a Vue.js SPA with
Vuetify as a frontend.
- Easy configuration (just a JSON file!)
- Disable public registration
- Require an invite code to create an account
- Set physical location of files (use
/tmp
for ephemeral storage)
- Disable public registration
- Simple directory structure and file metadata
- A simple directory structure to organize files is available (>= 0.8.x)
- Directory structure is generated dynamically on query
- File metadata includes size and upload date
- Password protection of files
- Server enforced password protection
- Passwords are hashed and stored securely
- Complete API with stateless authentication for accessing the entire application
- All functionality is exposed through the API
- In fact, the entire web application (a Vue.js SPA) works entirely through calls to PenguinUpload's REST API
- Each user has an API key
- Intuitive Material Design interface
- Pages for login, upload, download, profile, file management, and more
- Concurrent, streamed file transfer
- Multiple uploads/downloads at a time
- Uploaded file management
- Download previously uploaded files
- Protect uploaded files with custom passwords
- Share download links, even to password protected files, which will prompt for the password. Links can also be generated containing encoded passwords.
- Rich download/embed support
- Stream raw files with a simple API call
- Supports partial download, allowing for streaming of content directly from cloud storage
- Advanced user management
- User privileges, advanced admin API
- File storage quotas and enforcement
- Optional resource usage control
- Limit concurrent uploads per user
PenguinUpload uses an embedded NoSQL database (LiteDB) to store metadata about files and users. The files themselves are stored in a configurable location on the filesystem.
- Install dependencies (.NET Core SDK 1.1, NPM/Node.js v7)
- Run the included script
./script/build.sh
. It will output the application to./src/PenguinUpload/bin/Release/netcoreapp1.0/publish/
, and you can copy it to wherever you like - Set up configuration - Create a file called
penguinupload.config.json
. See the example configuration file (penguinupload.config.example.json
for an example.) This is required, as registration is disabled by default for security reasons. - (optional) Set ASP.NET Core config in a
hosting.json
file.
See the Administration documentation
Copyright © 2017 0xFireball (Nihal Talur). All Rights Reserved.
Licensed under the Apache License 2.0