01
What it is
Once a week any team needs to move a file quickly: a mockup to the client, a dump to a colleague, a 200 MB video that will not go through a messenger. Public file hosts either demand registration, or show ads, or silently delete the file after a day. So we built our own for exactly that job.
The key detail is delivery. Blobs are never served by the application and never sit at a predictable path: nginx serves them through an internal redirect, so the on-disk address cannot be guessed and the application spends no resources shovelling bytes.
02
capabilities
What it does
01
Upload without registration
Drop and get a link. Up to 200 MB, alive for a week, then removed automatically.
02
Account for permanent storage
With an account, files stay indefinitely within quota, with name search and a personal list.
03
Unpredictable links
An optional random suffix in the filename and a short link at the root. One filename never reveals another.
04
Delivery via internal redirect
nginx serves the blob from an internal location — the disk path never leaks outward.
05
SFTP access
A dedicated jailed account; anything uploaded over SFTP is registered into the database with one command.
06
Scheduled cleanup
A systemd timer removes expired files. Disk does not fill up because nobody got around to it.
03
architecture
How it works
01
File upload
02
Database record and quota
03
Link issued
04
Served through nginx
05
TTL cleanup
Under the hood
- A FastAPI application under its own system user, permitted to write only into the file directory.
- SQLite as the registry of files, quotas and users.
- It listens on localhost only; the outside world reaches it through nginx.
- An operations CLI: init, create admin, reset password, cleanup, import an SFTP directory.
- The legal minimum is in place: uploader responsibility, IP recording, and a report-this-file button.
- One process, one database file, zero external dependencies — a service that does not break.
04
scale
Numbers
200 MB
anonymous upload limit
7 days
anonymous file TTL
∞
retention with an account
0
external dependencies
