Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

my shared bucket

A tiny, dependency-free Dropbox-style file drop for a trusted local network. Drag files or whole folders onto the page, watch the progress, click to download. No accounts, no agent, no cloud — files live on the server's local disk.

Security note: there is no authentication. Run this only on a LAN you trust. Don't port-forward it to the internet.

What it does

  • Drag-and-drop upload of files and folders (folder structure is preserved)
  • Live per-file upload progress; large files stream straight to disk
  • Browse folders, create folders, rename, delete, one-click download
  • Move files: drag a row onto a folder/breadcrumb, or tap Move to… (a folder picker — works on touch devices where dragging doesn't)
  • Multi-select with checkboxes to bulk-download as a ZIP or bulk-delete
  • Shows disk usage; works on phones and tablets too
  • Pure Python standard library — nothing to pip install

Requirements

  • Ubuntu 24.04 (or anything with Python 3.10+)
  • That's it.

Quick start (try it now)

python3 app.py

Then open the printed network: URL from any device on your LAN. Override defaults with environment variables:

SHARE_DIR=/srv/bucket PORT=8080 python3 app.py
Variable Default Meaning
SHARE_DIR ./storage where uploaded files are stored
HOST 0.0.0.0 bind address (all interfaces)
PORT 8000 port
MAX_UPLOAD 0 (no limit) max upload size in bytes, 0 = unlimited
HTML_SANDBOX 1 1 = viewed HTML is sandboxed (scripts blocked), 0 = HTML runs live. install.sh asks which you want.

Run it always-on (systemd)

From the project directory on the server:

./install.sh

This installs and starts a mysharedbucket systemd service that launches on boot and restarts on failure. Useful commands:

sudo systemctl status mysharedbucket
sudo systemctl restart mysharedbucket
journalctl -u mysharedbucket -f          # live logs

To change the storage location or port, edit the Environment= lines in /etc/systemd/system/mysharedbucket.service, then sudo systemctl daemon-reload && sudo systemctl restart mysharedbucket.

Changing settings after install

To change any setting on an installed service (e.g. flip HTML_SANDBOX without re-running the installer), use a systemd override:

sudo systemctl edit mysharedbucket

In the editor that opens, add:

[Service]
Environment=HTML_SANDBOX=0

then sudo systemctl restart mysharedbucket. This writes a drop-in under /etc/systemd/system/mysharedbucket.service.d/ that layers on top of the installed unit — it survives a later ./install.sh re-run, and always wins over the unit's own Environment= lines. Check the effective values with systemctl show mysharedbucket -p Environment.

Firewall

If ufw is enabled, allow the port on your LAN, e.g.:

sudo ufw allow from 192.168.0.0/16 to any port 8000 proto tcp

Files

File Purpose
app.py the whole server (stdlib only)
static/ the web interface (HTML/CSS/JS)
mysharedbucket.service systemd unit template
install.sh one-shot installer
storage/ uploaded files (created on first run)

How uploads work

The browser sends each file as the raw body of a PUT /api/upload request and the server streams it to disk in 1 MiB chunks. There's no in-memory multipart buffering, so uploading multi-gigabyte files is fine. Dropped folders are walked in the browser and re-created server-side from each file's relative path.

About

A dropbox-like web shared folder for internal networks

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages