FileShelter is a self-hosted, "one-click" file sharing web application that lets you upload files and get back a download URL, built for individuals and small teams who want to share files over the Internet without depending on a third-party service.
What it is
FileShelter is a web application written in C++ and released under the GPL-3.0 licence. You upload one or more files through the browser and receive a URL you can hand to someone else; that link works until its expiry date, at which point the share is no longer downloadable and the files are actually deleted roughly two hours later, so an in-progress download is not interrupted. The project lives in the self-hosted ecosystem, ships as an installable server component, and is explicitly aimed at modest hardware — the topics list highlights Raspberry Pi and Raspbian, and the README notes the public demo instance runs on a Raspberry Pi with low memory requirements.
The concrete problem it solves is sharing a file with someone without setting up an account-based service, a file-sync client, or a permanent public directory. Instead of handing over permanent access to a folder, you create a bounded share: it has a period of validity from one hour to many years, an almost-unique link based on a UUID, and optional password protection for download and/or upload. Expiry is enforced server-side, so the shared material stops being reachable on its own schedule rather than needing manual cleanup.
Key capabilities
- Setting a period of validity for a share, ranging from one hour to many years, after which the link stops working and the files are removed.
- Optional password protection applied to downloading, uploading, or both, on a per-share basis.
- Creating a zip file on the fly when a share contains multiple files, so recipients get a single archive.
- Private edit links used to remove a share's files or to check the download counters for that share.
- Terms Of Service support that can be fully or partially customised to match the operator's own wording.
- Multiple language support in the web interface.
- The
fileshelter-cmd command line tool to list all shares available for download, create a share from local files, and destroy shares.
Who uses it and how
- Operators running a small server or a Raspberry Pi under Raspbian as a personal sharing endpoint, since the project advertises low memory requirements and the demo instance itself runs on a Raspberry Pi.
- People who want temporary delivery with an expiry window — the public demo at
https://fileshelter-demo.poupon.dev is capped at a maximum duration of 3 days and a maximum file size of 1 MB, showing the intended short-lived use.
- Users who need to hand out a password-protected link and later confirm uptake by checking download counters through the private edit link.
- Administrators who script sharing instead of using the browser:
fileshelter-cmd creates a share from local files without copying them into FileShelter's working directory, which means those files must keep existing for as long as the share is live, and they are not deleted when the share expires.
Getting started
Installation is described in INSTALL.md in the repository, and a running instance to try first is available at https://fileshelter-demo.poupon.dev.
How it compares
No list of paid products this project replaces is given, and the README names no comparable tools, so within this registry FileShelter stands alone as its own entry.
When to use it — and when not to
A self-hoster must operate persistent storage for the shares and, if using fileshelter-cmd, must keep the referenced source files present for the share's whole lifetime, because they are neither copied in nor removed on expiry. It is a poor fit for large single files without prior testing, for teams that need accounts, quotas, or ongoing collaboration rather than expiring links, and for anyone unwilling to run and patch a GPL-3.0 C++ service — with 24 open issues open, some rough edges are visible.