This is an automated archive made by the Lemmit Bot.
The original was posted on /r/selfhosted by /u/thehelpfulidiot on 2025-02-17 21:22:31+00:00.
Hey everyone,
A while back, I created Ghostboard, a self-hosted way to share real-time synchronized text between machines. Some users suggested adding file sharing, but I personally use PairDrop for that and didn't want to overcomplicate Ghostboardโs code.
The issue? PairDrop lacks a command-line option, making it tricky to use in automated workflows. I wanted something that:
โ Can run on demand
โ Lets me upload files to a specific folder
โ Shuts down after use (so itโs not a permanent service)
Thus, GhostFile was born! ๐
Spin it up from the command line and it will start a webserver which will allow an individual to upload files directly to the host system in a user specified directory.
๐ฅ What is GhostFile?
GhostFile is an ephemeral file upload server. Unlike a traditional file server, GhostFile:
โ Starts only when needed
โ Lets you drag & drop multiple files into a simple web interface
โ Uploads directly to a local folder or a specified directory
โ Automatically shuts down after a successful upload
Itโs not a persistent service! This is not for always-on file hostingโitโs a simple, fast solution for when you need to quickly move files between machines.
๐ ๏ธ How to Use GhostFile
๐ Bare Metal (Python)
- Clone & Install:git clone cd ghostfile pip install -r requirements.txt
- Run the Server:
- By default:
- Runs on
0.0.0.0:5000
(accessible on LAN) - Saves files to
./downloads/
- Runs on
- By default:
- python3 upload_server.py
- Upload Files:
- Open a browser to
http://:5000
- Drag and drop files or select them
- Click Upload
- The server automatically shuts down
- Open a browser to
๐ณ Running with Docker
GhostFile is fully containerized, so you can spin it up quickly:
docker run --rm -t -v ./downloads:/app/downloads -p 5000:5000 thehelpfulidiot/ghostfile
๐ก What this does:
--rm
โ Removes the container after it stops-t
โ Allocates a terminal for logging-v ./downloads:/app/downloads
โ Maps the host folder to the containerโs upload directory-p 5000:5000
โ Exposes port 5000
Now, just upload your files, and the server closes itself after the transfer is complete. ๐
๐ก Why Use GhostFile?
โ No extra services required โ No SMB/NFS, just a lightweight upload UI
โ Works anywhere โ Run locally or in Docker
โ LAN-friendly โ Works across multiple machines on your network
โ Doesnโt stay running โ Perfect for quick file transfers
โ Choose your save location โ Default is ./downloads/
, but can be overridden
โ ๏ธ Not a Permanent File Server
GhostFile is NOT a file-hosting solution. Itโs designed for:
- Quick file transfers between devices
- One-time uploads where PairDrop isn't practical
- On-the-go use without keeping a service running
Once you upload your files, the server shuts downโno need to manually stop it.
๐ธ Screenshot
Here's a preview of GhostFile's simple web interface:
๐ Get GhostFile
๐พ GitHub Repo:
Would love to hear what you think! ๐ Have suggestions or feature requests? Drop them in the comments. ๐