The client file portal you own: send big files and collect theirs, no WeTransfer clock
A file is too big for email, or you need one from a customer. The free tools cap the size and delete it after days. This is your own file page: hand over a download link, or let the customer upload to you.
Share large files and let clients upload theirs — on a box you own, with links that expire when you say and no per-seat fee
Paste it into your AI assistant — ChatGPT, Claude, Gemini, whichever you use. It first asks what tools you already have, then rebuilds this blueprint to fit them.
- A domain or subdomain you control with a valid HTTPS certificate — clients will not upload to a bare IP address
- Enough disk for the biggest job you send, plus a backup of it — the portal is not a backup
- Upload bandwidth that can push a multi-gigabyte file without stalling, if you host at home
- A machine that stays on — a mini PC, NAS or cheap VPS, not your laptop
Version history
Emailing a big file still fails in 2026, and the free tool everyone reaches for now deletes it after three days and forbids business use in its own terms. Here is the version you own: files out, client uploads in, links that die when you say — for the price of a server you may already run.
The architecture
the same flow as text
▼
[ ProjectSend (self-hosted, PHP+MySQL) — the client file portal ]
│ clients & groups, per-file access, expiry dates
│ send (download) + receive (upload request), full logs
▼
[ Your own domain behind HTTPS — files.yourbusiness.example ]
├─ send: private link, password + expiry, download tracked
├─ receive: an upload link the client uses, no account needed
└─ storage: local disk, or an S3-compatible bucket when files grow
One container plus a database, behind a reverse proxy that handles HTTPS. The portal owns access and expiry; the disk — or an object-storage bucket — owns the bytes. Keep those two separable so you can move the files to cheap object storage the day your small server runs out of room, without touching the sharing logic.
Paste it into your AI assistant — ChatGPT, Claude, Gemini, whichever you use. It first asks what tools you already have, then rebuilds this blueprint to fit them.
The problem
Two everyday jobs, one broken channel. You need to send a client 200 MB of photos, a signed contract or a short video — and email bounces it at the 25 MB mark. Or you need the client to send you their files, and "just reply with the attachments" turns into six emails and a missing page. WeTransfer's free plan now caps you at 3 GB across ten transfers a month, deletes the transfer after three days, shows ads, and — read the terms — is "individual, non-commercial use only," which a business is not. The paid way out is €8–23 a month for one person, or €19 per user per month for a team, to push your own files through someone else's server. This blueprint puts the whole thing on a box you control: a page where you drop a file and hand over a link that expires when you choose, and a reverse link where the client uploads to you.
Tool choices — and why
stonith404/pingvin-share is pointing at a dead project. Pingvin Share X is the maintained community fork. It is younger and has a smaller following (~260 stars), so weigh that against ProjectSend's decade of history before you commit client files to it.Setup outline
- Deploy ProjectSend (official Docker image) behind HTTPS on a subdomain — files.yourbusiness.example. Never on plain HTTP; these are client files.
- Create your first client and a group. Access in ProjectSend is per-client, so a customer only ever sees their own files, not everyone else's.
- Set a default expiry — say 14 days — so old links die on their own instead of lingering forever.
- Test the receive path: send yourself an upload-request link and add a file as if you were the client. This is the leg people forget to check until it fails in front of a customer.
- Turn on email so clients get the link automatically, using your own mailbox's SMTP.
- Set SPF, DKIM and DMARC on the sending domain, or the notification lands in spam.
- Decide storage: local disk is fine to start; switch to an S3-compatible bucket before the disk fills, not after.
- Back it up (see the 3-2-1 backup blueprint). A file portal with no backup is a single point of failure for documents a client trusted you with.
Pitfalls — what goes wrong when you build this
Verified repos
ProjectSend — GPL-2.0, ~1.9k stars, active (July 2026)
Pingvin Share X — BSD-2-Clause, ~260 stars, active (v1.21.0, July 2026) — maintained fork of the now-archived Pingvin Share
Nextcloud — AGPL-3.0, actively developed (2026)