Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SUS - Simple Upload Service

A lightweight, self-hosted file upload service with a beautiful web interface.

Features

  • 📤 Parallel uploads - Upload multiple files simultaneously
  • 🎯 Drag & drop - Intuitive file selection
  • 📊 Progress tracking - Real-time upload progress bars
  • 🔒 Password protection - Optional authentication
  • 📁 File management - Download and delete uploaded files
  • 🐳 Docker ready - Easy deployment with Docker
  • 🎨 Beautiful UI - Modern, responsive interface

Quick Start

Using Docker Compose (Recommended)

  1. Clone the repository:
git clone https://github.com/sammwyy/sus.git
cd sus
  1. Edit docker-compose.yml to set your password (optional):
environment:
  - PASSWORD=your_password_here
  1. Start the service:
docker-compose up -d
  1. Access the service at http://localhost:3000

Using Docker

Build the image:

docker build -t sammwy/sus .

Run the container:

docker run -d \
  -p 3000:3000 \
  -v $(pwd)/data:/data \
  -e PASSWORD=your_password_here \
  sammwy/sus

Without Docker

  1. Install dependencies:
npm install
  1. Set environment variables:
export PORT=3000
export UPLOAD_DIR=./uploads
export PASSWORD=your_password_here
  1. Start the server:
npm start

Configuration

Configure the service using environment variables:

Variable Description Default
PORT Server port 3000
UPLOAD_DIR Directory to store uploaded files /data
PASSWORD Password for authentication (empty = no auth) ``

Volume Mapping

Map a local directory to persist uploaded files:

docker run -v /path/to/local/dir:/data sammwy/sus

API Endpoints

Upload File

POST /api/upload
Headers: Authorization: <password>
Body: multipart/form-data with file field

List Files

GET /api/files
Headers: Authorization: <password>

Download File

GET /api/files/:filename
Headers: Authorization: <password>

Delete File

DELETE /api/files/:filename
Headers: Authorization: <password>

Security Notes

  • Set a strong password for production use
  • Files are stored with unique names to prevent conflicts
  • Maximum file size limit: 1GB (configurable in server.js)
  • Authentication required for all operations when password is set

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Author

sammwy

About

Simple Upload Service

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages