keepcoolch/dropzonefilesharing

By keepcoolch

β€’Updated about 1 month ago

Simple and secure file sharing via drag & drop to generate temporary download links

Image
Networking
Web servers
1

4.0K

keepcoolch/dropzonefilesharing repository overview

β πŸ“€ Dropzone File Sharing

Simple and secure file sharing via drag & drop – with temporary links or via email, password protection, and expiration settings.
Version 3.2 – developed by Kevin Tobler 🌐 www.kevintobler.ch⁠ – 🌐 github.com/KeepCoolCH/DropzoneFileSharing⁠ – 🌐 hub.docker.com/r/keepcoolch/dropzonefilesharing⁠


⁠🌍 Official Website

Use Dropzone File Sharing: πŸ”— https://dropzonefilesharing.com⁠


β πŸ”„ Changelog

β πŸ†• Version 3.x
  • 3.2
    • πŸ“€ More reliable resumable chunk uploads
      • Added server-side offset validation and per-file locking to prevent duplicate chunks during retries
      • Incomplete uploads are rejected before finalization instead of being moved or archived
      • Improved cleanup of .part, .meta, .lock and temporary .current files after successful, cancelled or expired uploads
    • πŸ“¦ Safer ZIP creation and finalization
      • Upload completion is only reported after the ZIP process has finished successfully
      • Added final checks to ensure the ZIP archive exists, is readable and is not empty before creating the download link
      • ZIP and filesystem errors now return proper HTTP error responses and clean up temporary data
      • Added free-space checks for both uploaded files and the final ZIP archive
    • πŸ”’ Upload security improvements
      • Added strict validation for upload IDs, relative paths, file sizes, file counts and upload modes
      • Prevented directory traversal and invalid control characters in uploaded paths
      • Added safer host and URL handling when generating download and verification links
      • Escaped uploaded filenames in the browser to prevent HTML injection
    • πŸ’Ύ Safer metadata storage
      • Added locked, atomic JSON updates to prevent concurrent upload requests from overwriting metadata
      • Fixed an undefined cleanup-key issue when storing uploader and recipient addresses
      • Improved metadata validation and error handling for save and cleanup requests
    • πŸ–₯️ Improved browser upload handling
      • HTTP and server errors are no longer hidden or displayed as successful uploads
      • Upload controls are restored after an error so the upload can be retried without reloading the page
      • Large drag-and-drop folders are now read completely, including directories containing more than 100 entries
      • Folder paths and file metadata are preserved more reliably during drag-and-drop uploads
  • 3.1
    • πŸ–ΌοΈ Favicon added
    • πŸ›‘οΈ Privacy Policy and Disclaimer added
      • Integrated a complete, multilingual Privacy Policy and Disclaimer (DE / EN / FR / IT)
      • Clarifies operator responsibility for self-hosted installations
      • Written in a neutral, instance-agnostic way
    • πŸ“ Legal text harmonization
      • Aligned wording and structure across all languages
      • Unified terminology and headings for consistency
  • 3.0
    • πŸ‘€ New User Upload Mode (user_upload)
      • Introduces an optional multi-user upload workflow. Users can upload files but have no access to admin functions
      • When user_upload mode is enabled, the Admin Panel now displays which user uploaded each file in the upload list
      • Perfect for teams, client areas or project-based uploads
      • Password protection, expiration times, link creation and download continue to work as usual
    • 🧩 Admin Panel Extensions (User Management)
      • Added a complete User Management module (create and delete users, reset user passwords)
      • User accounts are stored in a dedicated JSON file inside the inc/ directory
      • The admin account’s username and password can also be changed
    • 🧩 helpers.php improvements and extensions
      • The default configuration is now automatically completed and merged with any missing keys when config.php is loaded
      • Ensures older installations or partially modified config files always remain compatible with new features
      • Prevents missing-key errors and keeps updates seamless
β πŸ†• Version 2.x
  • 2.9
    • πŸ‘οΈ Added a new β€œShow Download Page” toggle (show_dp) in the configuration
    • πŸ”— Lets you choose whether users see a download page (file info and download-button) or a direct file download after clicking the link
    • πŸ› οΈ Fully integrated into the Admin Panel configuration and stored in the main config.php file
  • 2.8
    • πŸ“§ Added support for a separate SMTP FROM address (SMTP_FROM_ADDRESS) so the visible sender can differ from the SMTP login (same domain required)
    • πŸ› οΈ Reworked SMTP sending to be RFC-compliant (adds Date, Message-ID, MIME-Version, multipart text/plain + text/html, UTF-8 encoded subject) for better compatibility with spam filters
    • πŸ–₯️ Admin Panel extended with a new field to configure the SMTP FROM address, which is stored in the .env file
    • πŸ—‚οΈ Improved Docker support for persistent configuration: the entire inc directory (including .env, .admin.json, config.php, translation files) can now be mounted from the host
    • πŸ’Ύ Upload directory can now also be mounted externally via DROPZONE_UPLOAD_DIR, making all uploaded files persistent and safe across container updates or reinstallation
    • πŸ“¦ When mounting an empty inc directory, Dropzone automatically initializes it with the default files from the image, ensuring a clean setup when the container is recreated
    • πŸ”„ This means both all settings (SMTP, admin login, configuration options) and all uploaded files are preserved even if the container is removed and recreated
  • 2.7
    • πŸ“§ Added optional Admin email notifications for new uploads
    • πŸ“ Admin email address configuration directly in the Admin Panel
    • βš™οΈ Added new toggle Admin Notify in configuration settings
  • 2.6
    • πŸ“Š Download tracking added (download counter + last download timestamp)
    • πŸ‘οΈ Display of β€œDownloads” and β€œLast Download” directly in the Admin Panel
  • 2.5
    • βš™οΈ Improved Admin Panel with configuration and email settings
    • 🧭 Clearer navigation and visual refinements in the Admin Panel
    • πŸ“± Fully responsive redesign of the Admin Panel for mobile devices
    • πŸ” Integrated search function for uploads
  • 2.4
    • βš™οΈ Added Admin Panel with password-protected setup
    • πŸ“Ž Manage Uploads (change expiration time, change password)
    • πŸ“₯ Download Uploads directly from the Admin Panel
    • 🧹 Delete Uploads directly from the Admin Panel
  • 2.3
    • πŸ”’ Security improvements
    • πŸ—‘οΈ When the user manually cancels the upload, reloads the page, or closes the browser, temporary files are cleaned up and the entry is removed from the JSON file
  • 2.2
    • πŸ”’ Security improvements
    • πŸ’Ύ Check for sufficient disk space before upload (error message if too little free space)
  • 2.1
    • πŸ“§ The time period for which the file is valid is included in the email to the recipient
  • 2.0
    • πŸ“˜ Completely reworked chunk upload
    • ⚠️ No more errors when uploading very large files
    • 🐞 Other bug fixes
⁠✨ Version 1.x
  • 1.9
    • πŸ“˜ New logo, colors and file list
    • πŸ“± Responsive design for phones
  • 1.8
    • πŸ“§ Option to send files via email or just copy the download link
  • 1.7
    • πŸ“§ Share a unique download link directly to the recipient’s email inbox (multiple recipients supported)

β πŸš€ Features

  • πŸ“‚ Drag & drop upload for files or entire folders
  • πŸ” Optional password protection for each upload
  • ⏳ Set link expiration (1h, 3h, 6h, 12h, 1–30 days or keep forever)
  • πŸ” One-time or reusable download links
  • πŸ“Ž Automatically creates a ZIP archive for folder uploads
  • πŸ—£οΈ Multilingual (German, English, French & Italian)
  • ✨ No database required – pure PHP
  • 🚫 No filesize limit using chunks
  • βœ… Upload with Progress Bar
  • βš™οΈ Integrated Admin Panel with configuration and email settings
  • πŸ” Search uploads with filename, filesize, date or email

β πŸ“Έ Screenshot

Screenshot Screenshot


⁠🐳 Docker Installation (Version 3.2)

Dropzone File Sharing V.3.2 is available as a Docker image:

docker pull keepcoolch/dropzonefilesharing:latest

Start the container:

docker run -d \
  --name dropzonefilesharing \
  --restart=unless-stopped \
  -p 8080:80 \
  --dns 1.1.1.1 \
  --dns 8.8.8.8 \
  keepcoolch/dropzonefilesharing:latest

Then open: πŸ‘‰ http://localhost:8080⁠

Uploads, settings, JSON files etc. are stored inside the container.


β πŸ“ Optional: Use a custom upload and the inc directory outside the container

You can store all uploads outside the container (persistent on your host system). This is useful for:

  • keeping uploads and configuration when recreating/updating the container
  • mounting external storage

1 Environment variable - Tell Dropzone where uploads should be stored inside the container:

-e DROPZONE_UPLOAD_DIR=/data/uploads

2 Volume mount - Map the directories to a folder on your host (Mac, Linux, NAS):

-v ~/dropzone/uploads:/data/uploads
-v ~/dropzone/inc:/var/www/html/inc

Full docker run example:

docker run -d \
  --name dropzonefilesharing \
  --restart unless-stopped \
  -p 8080:80 \
  --dns 1.1.1.1 \
  --dns 8.8.8.8 \
  -e DROPZONE_UPLOAD_DIR=/data/uploads \
  -v ~/dropzone/uploads:/data/uploads \
  -v ~/dropzone/inc:/var/www/html/inc \
  keepcoolch/dropzonefilesharing:latest

Full docker-compose.yml example:

services:
  dropzonefilesharing:
    image: keepcoolch/dropzonefilesharing:latest
    container_name: dropzonefilesharing
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      DROPZONE_UPLOAD_DIR: "/data/uploads"
    volumes:
      - ~/dropzone/uploads:/data/uploads
      - ~/dropzone/inc:/var/www/html/inc
    dns:
      - 1.1.1.1
      - 8.8.8.8

Run docker compose:

docker compose up -d

β πŸ”§ Manual Installation (non-Docker)

  1. Upload all files to your web server
  2. Open the application in your browser
  3. Access /admin.php to create your admin credentials
  4. Choose your desired configuration values in the Admin Panel
  5. When send_email or admin_notify is set to active, make shure to define the SMTP server, SMTP port, SMTP username, SMTP password and SMTP From Adress in the Admin Panel

⚠️ Requires PHP 7.4 or higher. No database needed.


⁠🧭 Admin Panel

The Admin Panel provides a secure management interface for your Dropzone File Sharing installation.

β πŸ” Login & Setup Admin Panel
  • First-time access via /admin.php triggers Admin Setup (username + password creation)
  • Credentials are stored securely (hashed) in .admin.json and secured with .htaccess
  • After setup, login via the Admin Login form in /admin.php
  • Setup your desired configuration values and when send_email or admin_notify is set to active, make shure to define the SMTP server, SMTP port, SMTP username, SMTP password and SMTP From Adress

⁠🌍 Language Support

Default language is German ?lang=de. Use ?lang=en to switch to English, ?lang=fr to switch to French, ?lang=it to switch to Italian or click on the flag:

https://example.com/index.php?lang=de
https://example.com/index.php?lang=en
https://example.com/index.php?lang=fr
https://example.com/index.php?lang=it

β βš™οΈ Configuration

You can configure the following options in the Admin Panel:

  • Choose default language (e.g. 'de', 'en', 'fr' or 'it')
  • Set the timezone according to your preference
  • Control link expiration options
  • Enable/Disable only_upload mode without generating a link
  • Enable/Disable user_upload mode so that only authenticated users are allowed to upload files, preventing anonymous uploads.
  • Enable/Disable send_email mode (⚠️ make sure to define the SMTP server, SMTP port, SMTP username, SMTP password and SMTP From Adress).
  • Enable/Disable admin_notify mode for upload notifications (⚠️ make sure to define the SMTP server, SMTP port, SMTP username, SMTP password and SMTP From Adress).
  • Enable/Disable show_dp mode to control whether users see the download page. If deactivated, users are redirected to an instant direct download without viewing the download page.
  • Enable/Disable pwzip mode for password protection of the zip file itself. If deactivated, only the download is password-protected, not the ZIP file (⚠️ ZIP password cannot be modified).

β πŸ”’ Security

  • Each upload can be protected with a custom password
  • Option to allow only a single download or multiple downloads
  • Files are automatically deleted after the expiration time
  • Passwords are never stored in plain text

β πŸ“ Folder Uploads & ZIP

When uploading a folder, the tool detects it and automatically creates a ZIP file from its contents to simplify sharing.


β πŸ§‘β€πŸ’» Developer

Kevin Tobler
🌐 www.kevintobler.ch⁠


β πŸ“œ License

This project is licensed under the MIT License – feel free to use, modify, and distribute.

Tag summary

Content type

Image

Digest

sha256:1f709697b…

Size

206 MB

Last updated

about 1 month ago

docker pull keepcoolch/dropzonefilesharing