dumbdrop
A stupid simple file upload app. No read, only write.
100K+
A stupid simple file upload application that provides a clean, modern interface for dragging and dropping files. Built with Node.js and vanilla JavaScript.
No auth (unless you want it now!), no storage, no nothing. Just a simple file uploader to drop dumb files into a dumb folder.
# Pull and run with one command
docker run -p 3000:3000 -v ./uploads:/app/uploads dumbwareio/dumbdrop:latest
Create a docker-compose.yml file:
services:
dumbdrop:
image: dumbwareio/dumbdrop:latest
ports:
- 3000:3000
volumes:
# Where your uploaded files will land
- ./uploads:/app/uploads
environment:
# Explicitly set upload directory inside the container
UPLOAD_DIR: /app/uploads
# The title shown in the web interface
DUMBDROP_TITLE: DumbDrop
# Maximum file size in MB
MAX_FILE_SIZE: 1024
# Optional PIN protection (leave empty to disable)
DUMBDROP_PIN: 123456
# Upload without clicking button
AUTO_UPLOAD: false
# The base URL for the application
# You must update this to the url you use to access your site
BASE_URL: http://localhost:3000
Then run:
docker compose up -d
Note: The
UPLOAD_DIRenvironment variable is now explicitly set to/app/uploadsin the container. The Dockerfile only creates theuploadsdirectory, notlocal_uploads. The host directory./uploadsis mounted to/app/uploadsfor persistent storage.
For local development setup, troubleshooting, and advanced usage, see the dedicated guide:
š Local Development Guideā
| Variable | Description | Default | Required |
|---|---|---|---|
| PORT | Server port | 3000 | No |
| BASE_URL | Base URL for the application | http://localhost:PORTā | No |
| MAX_FILE_SIZE | Maximum file size in MB | 1024 | No |
| DUMBDROP_PIN | PIN protection (4-10 digits) | None | No |
| DUMBDROP_TITLE | Site title displayed in header | DumbDrop | No |
| APPRISE_URL | Apprise URL for notifications | None | No |
| APPRISE_MESSAGE | Notification message template | New file uploaded {filename} ({size}), Storage used {storage} | No |
| APPRISE_SIZE_UNIT | Size unit for notifications (B, KB, MB, GB, TB, or Auto) | Auto | No |
| AUTO_UPLOAD | Enable automatic upload on file selection | false | No |
| ALLOWED_EXTENSIONS | Comma-separated list of allowed file extensions | None | No |
| ALLOWED_IFRAME_ORIGINS | Comma-separated list of origins allowed to embed the app in an iframe | None | No |
| UPLOAD_DIR | Directory for uploads (Docker/production; should be /app/uploads in container) | None (see LOCAL_UPLOAD_DIR fallback) | No |
| LOCAL_UPLOAD_DIR | Directory for uploads (local dev, fallback: './local_uploads') | ./local_uploads | No |
./local_uploads.uploads directory inside the container. The host's ./local_uploads is mounted to /app/uploads and should be managed on the host system.https://example.com/watchfolder/), you must set BASE_URL to the full path including the trailing slash (e.g., https://example.com/watchfolder/). All API and asset requests will be prefixed with this value. If you deploy at the root, use https://example.com/.See .env.example for a template and more details.
To allow this app to be embedded in an iframe on specific origins (such as Organizr), set the ALLOWED_IFRAME_ORIGINS environment variable. For example:
ALLOWED_IFRAME_ORIGINS=https://organizr.example.com,https://myportal.com
To restrict which file types can be uploaded, set the ALLOWED_EXTENSIONS environment variable. For example:
ALLOWED_EXTENSIONS=.jpg,.jpeg,.png,.pdf,.doc,.docx,.txt
If not set, all file extensions will be allowed.
The notification message supports the following placeholders:
{filename}: Name of the uploaded file{size}: Size of the file (formatted according to APPRISE_SIZE_UNIT){storage}: Total size of all files in upload directoryExample message template:
APPRISE_MESSAGE: New file uploaded {filename} ({size}), Storage used {storage}
Size formatting examples:
Both {size} and {storage} use the same formatting rules based on APPRISE_SIZE_UNIT.
git checkout -b feature/amazing-feature)git push origin feature/amazing-feature)See Local Development (Recommended Quick Start)ā for local setup and guidelines.
Made with ā¤ļø by DumbWare.ioā
Got an idea? Open an issueā or submit a PRā
Content type
Image
Digest
sha256:8a377413dā¦
Size
82.1 MB
Last updated
8 months ago
docker pull dumbwareio/dumbdrop:sha-ff8f813f493e89c7da056e7a3101ce2ef48e3960Pulls:
6,088
Last week