PsiTransfer
Released under BSD-2-Clause, PsiTransfer provides simple file sharing solution with robust up-/download-resume and password protection on self-hosted...
Self-hosted temporary file sharing, honestly reviewed. No marketing copy, just what you get when you run it yourself.
TL;DR
- What it is: Open-source (BSD-2-Clause) temporary file sharing tool — a drop-in replacement for WeTransfer, hosted on your own server with no accounts required [2][README].
- Who it’s for: Teams or individuals who regularly share large files with clients, contractors, or colleagues and don’t want to pay per-month for a file-transfer SaaS or hand their files to a third-party server.
- Cost savings: WeTransfer Pro runs $12/month for 100GB storage. PsiTransfer runs on a $5–6/month VPS with no transfer limits, no file size caps, and no storage ceiling other than your disk [2].
- Key strength: Dead-simple sender/receiver model with no accounts on either end. Upload, get a link, share. Receiver downloads. Link expires. Done [README][2].
- Key weakness: No end-to-end encryption. Files transit in plaintext over TLS — server sees them. Explicitly noted in the README as a missing feature: “There is no (end-to-end) payload encryption (yet)” [README]. For genuinely sensitive files, this is a blocker.
What is PsiTransfer
PsiTransfer is a Node.js application that does one thing: lets you upload files to a link, optionally protect that link with a password, set an expiration time, and have recipients download those files without creating an account on either side [README].
The project describes itself as “an alternative to paid services like Dropbox, WeTransfer” — which is accurate but slightly misleading, because it’s much closer to a WeTransfer replacement than a Dropbox replacement. There’s no persistent storage with folder structure, no sync client, no desktop integration. You upload files into a “bucket,” you share the link, and when the bucket expires it’s gone. That’s the entire model [README][2].
The upside of that simplicity is that the security surface is small and the operational complexity is almost zero. The downside is that anyone who wants Dropbox features — sync, persistent folders, sharing by username — will be disappointed [README].
The project sits at 1,855 GitHub stars with 245 forks and 33 contributors [README]. The latest release is v2.4.1, published February 14, 2026 — so the project is actively maintained, 19 releases in. A fork on Codeberg [3] has been working toward a Vue 3 upgrade, which suggests the frontend is getting some attention from the community even if the core stays stable.
Why people choose it
The case for PsiTransfer is almost entirely cost and control — neither of which is complicated.
Against WeTransfer. WeTransfer’s free tier limits you to 2GB per transfer and keeps your links active for a limited window. WeTransfer Pro costs $12/month and bumps that to 100GB transfers with 1TB of cloud storage. If you’re running a small agency, a consulting practice, or a solo dev shop, and you’re regularly sending large client deliverables, that $12/month just buys you someone else’s server [2]. PsiTransfer gives you the same workflow — sender uploads, recipient gets a link — hosted on infrastructure you already control. The medevel.com review puts it plainly: PsiTransfer offers “a seamless and secure method to share files, eliminating the need for paid services such as Dropbox or WeTransfer” with “complete authority over your data” [2].
Against Google Drive / Dropbox file sharing. These are persistent storage products with sharing bolted on. They require a Google or Dropbox account on the sender side and often friction (account prompts, preview limitations) on the recipient side. PsiTransfer is accountless on both ends — no Google login popup, no “sign up to view this file” nag [README][1].
The privacy angle. Every file you share via WeTransfer or Google Drive lives on their servers, subject to their data policies and accessible to their employees under appropriate legal process. If you’re sharing client source code, financial models, or unpublished creative work, that matters. With PsiTransfer on your VPS, the files live only on your disk until the bucket expires [2].
The caveat worth repeating: none of this applies to the content of the files in transit if an attacker has access to your server, because there’s no end-to-end encryption at the application layer [README]. HTTPS protects the transport, but the server sees plaintexts. A hosted WeTransfer might have stricter access controls on their infrastructure than your VPS does. That trade-off is real.
Features
From the README and source materials:
Core transfer workflow:
- Upload single or multiple files per bucket [README]
- Resumable uploads and downloads via tus.io — if the connection drops mid-upload, it picks up where it left off [README][1]
- Large file support via streams — no memory-loading bottleneck [README]
- Download all files in a bucket as a zip or tar.gz archive [README]
- Modal-style in-browser preview for common file types [README]
Bucket controls:
- Set an expiration time on any upload bucket (bucket auto-deletes) [README]
- One-time download links — file is deleted after the first download [README]
- Password protection for the download list (AES encryption) [README]
- Explicit named bucket IDs via
?sid=<myBucketID>query parameter [README]
Administration:
/adminpage shows bucket information and storage usage [README]- Admin access is disabled until you set the
adminPassconfig value — secure by default [README] - Config via environment variables, making Docker deployments clean [README]
Deployment:
- Docker image on Docker Hub (
psitrax/psitransfer) with versioned tags [README] - npm-based manual install as an alternative [README][1]
- Lightweight Vue-based frontend, gzipped under 100k [README]
- Plugin/event bus system for extending behavior [3]
What’s missing:
- No end-to-end encryption — explicitly flagged in the README as not implemented yet [README]
- No user accounts or authentication system for senders (upload password can gate the upload form, but there’s no user management) [README]
- No REST API for programmatic integration
- “Download all as ZIP” does not support resumable downloads [README]
- No notification system (email/webhook when someone downloads your file)
Pricing: SaaS vs self-hosted math
PsiTransfer:
- Software license: $0 (BSD-2-Clause) [README]
- Hosting: $5–6/month on Hetzner or Contabo for a minimal VPS
- Storage: whatever disk you provision on that VPS
WeTransfer:
- Free: 2GB per transfer, limited link duration
- Pro: $12/month — 100GB per transfer, 1TB cloud storage
Dropbox (for comparison, if you’re considering it as a file-sharing tool):
- Plus: $9.99/month for 2TB storage, file sharing with expiration links
- Business: $15/user/month
Concrete math for a consulting shop sending deliverables:
Say you’re delivering video projects, design exports, or large datasets — regularly sending 5–20GB packages to clients. WeTransfer Pro at $12/month covers you. On PsiTransfer, a $6 Hetzner VPS with 80GB SSD handles those same transfers with no per-month fee, no storage cap other than disk, and no per-transfer size limit. Year one: WeTransfer = $144. PsiTransfer = $72 plus two hours of setup time.
That’s not a dramatic savings story like Zapier-vs-self-hosted. But the savings compound with the privacy argument: your client files don’t pass through a third-party’s servers.
If you’re already running a VPS for other self-hosted services, PsiTransfer is essentially free to add — it’s a Docker container you spin up alongside your other workloads.
Deployment reality check
The installation path is straightforward, and the guide from tweenpath.net [1] confirms it’s been consistent since the early days: install Node, download the release, run npm install, run npm start. The Docker path is even simpler [README].
What you actually need:
- A Linux VPS (1GB RAM is sufficient for light use; 2GB if you’re handling many concurrent large uploads)
- Docker, or Node >= 12 for the manual install
- A reverse proxy (Caddy or nginx) for HTTPS and domain binding
- Disk space appropriate to your typical transfer volume
Docker quickstart from the README:
docker run -p 0.0.0.0:3000:3000 \
-e PSITRANSFER_ADMIN_PASS=secret \
-v $PWD/data:/data \
psitrax/psitransfer
One non-obvious step: the data volume needs UID 1000. If you forget this, the container can’t write uploads. The README calls it out but it’s the kind of thing you discover the hard way [README].
Configuration approach: environment variables for everything meaningful — upload directory, admin password, upload password gate. No need to edit source files. Docker Compose with environment variables is the clean production pattern [README][1].
What can go sideways:
- No built-in HTTPS — you need a reverse proxy. Not a dealbreaker, but it’s one more step if you haven’t done it before [1].
- The admin page is disabled by default (requires setting
adminPass). Easy to overlook if you want visibility into what’s stored [README]. - No official notification system. You upload a file, share the link, and have no built-in way to know when it was downloaded. You’d need to check the admin page or parse logs.
- The frontend is Vue 2 as of writing — the community fork [3] has been working on a Vue 3 upgrade but it hasn’t landed in the main repo yet.
- The “no end-to-end encryption” note is buried in the README under “Side notes.” First-time users who assume all modern file transfer tools encrypt payloads will miss this [README].
Realistic time estimate: 20–40 minutes for a technical user who’s comfortable with Docker and already has a VPS with a domain. For someone setting up their first VPS, add several hours for DNS, SSL certificate, and reverse proxy setup.
Pros and Cons
Pros
- Accountless on both ends. Upload a file, share the link — recipient never needs to sign up for anything [README][2]. This is the thing that makes WeTransfer popular, and PsiTransfer replicates it exactly.
- Resumable uploads and downloads via tus.io. Reliably handles large files even on flaky connections. This is a real engineering choice, not a feature box to tick [README][1].
- One-time download links. Security feature that actually has teeth — link dies after first use [README].
- Expiring buckets. Automatic file cleanup without you managing anything [README].
- Password-protected download lists. AES encryption, built-in [README].
- BSD-2-Clause license. One of the most permissive open-source licenses — use it in commercial products, modify it, redistribute it without obligation [README].
- Zero external dependencies at runtime other than Node and disk. No database, no Redis, no queue. Simple to maintain [README].
- Admin visibility. The
/adminpage shows you what’s stored and when it expires [README]. - Actively maintained. 19 releases, v2.4.1 as of February 2026 [README].
Cons
- No end-to-end encryption. The README says “yet” — but it’s been a known gap since at least 2017. If you’re sharing sensitive files, the server sees plaintexts. This is the biggest limitation for serious use cases [README].
- No sender authentication. Anyone with the upload URL can upload files if you haven’t set
PSITRANSFER_UPLOAD_PASS. Exposing your instance without that environment variable set is an open upload endpoint [README]. - No download notifications. You can’t know when a recipient has downloaded your file without checking the admin page manually [README].
- No persistent storage model. Files expire. There’s no “keep this forever” option short of setting a very long expiration. PsiTransfer is for transfers, not storage [README].
- No REST API. You can’t integrate PsiTransfer programmatically into another system’s workflow without reverse-engineering the internal behavior [README].
- Vue 2 frontend. The main repo hasn’t landed the Vue 3 upgrade yet. Not a functional problem today, but Vue 2 reached end of life in December 2023, meaning the frontend dependency stack is unmaintained [3].
- Single-maintainer project risk. 33 contributors but clearly driven by one maintainer. 1,855 stars is solid for a niche tool, but it’s not the scale that guarantees indefinite maintenance [README].
- “Download all as ZIP” doesn’t support resuming. If someone is downloading a large multi-file bundle and loses their connection, they start over [README].
Who should use this / who shouldn’t
Use PsiTransfer if:
- You’re a freelancer, small agency, or consultant sending large deliverables to clients and paying WeTransfer Pro or a Dropbox Business seat just for the file transfer use case.
- You want accountless file sharing — both you and your recipient should be able to do this without creating logins.
- You’re already running a VPS for other self-hosted services and want to consolidate.
- Your files aren’t sensitive enough to require end-to-end encryption at the application layer (the server seeing them in plaintext is acceptable to you, as long as TLS protects the transit).
- You want one-time download links or expiring buckets with no manual cleanup.
Don’t use PsiTransfer if:
- You’re sharing sensitive documents — legal files, financial data, medical records, unpublished IP — that require end-to-end encryption. The missing E2E crypto is a hard no for those use cases. Look at Keybase file transfers or Syncthing with encryption for that [README].
- You need the recipient to have persistent access to files (a client folder that stays accessible for months). PsiTransfer deletes buckets on expiration — it’s not a document portal [README].
- You need download analytics — who downloaded, when, from where. Not available [README].
- You have no technical person available for setup and a VPS terrifies you. The 20-minute setup assumes Docker familiarity. Without it, factor in a real learning curve [1].
- You want programmatic file ingestion via API from other tools [README].
Alternatives worth considering
- FileShelter — similar accountless temporary file sharing, also self-hosted. Slightly simpler feature set than PsiTransfer but an option worth evaluating if you want something even more minimal.
- Nextcloud — if you want Dropbox-style persistent storage and file sharing in one self-hosted package. Substantially more complex to run; FileShelter or PsiTransfer are better if you only need the transfer use case.
- Seafile — another Dropbox alternative with stronger encryption options. Better for persistent team storage than temporary file transfer.
- transfer.sh — command-line-first file transfer tool, also self-hostable. Better for developers who live in terminals; worse for clients who need a browser UI [1].
- Lufi — another self-hosted temporary file transfer tool, this one with end-to-end encryption built in. If E2E crypto is your blocker with PsiTransfer, Lufi is the closest alternative that solves it.
- WeTransfer — the paid SaaS incumbent. Easiest recipient experience, no setup, $12/month, files on their servers.
For a non-technical founder who just needs client file delivery without paying WeTransfer monthly, the realistic shortlist is PsiTransfer vs Nextcloud. Pick PsiTransfer if temporary transfer is your only need and simplicity matters. Pick Nextcloud if you want a full file management layer.
Bottom line
PsiTransfer does exactly one thing, and it does it without fuss: send files to someone who doesn’t have an account, have those files expire when you’re done with them. The setup is fast, the operational overhead is near-zero, and the BSD-2-Clause license means you own what you run without legal strings. For a freelancer or small team currently paying $12/month to WeTransfer for client deliveries, the case is simple: a $6 VPS and an afternoon replaces that bill permanently.
The ceiling is clear too. No end-to-end encryption, no notifications, no API, no persistent storage — PsiTransfer is a sharp tool with a specific purpose, not a platform. Don’t try to use it as a document portal or a team storage layer. Use it the way it was designed: temporary, accountless, expiring file transfer.
If the setup afternoon is the blocker, upready.dev deploys self-hosted tools like this for clients as a one-time engagement. You get the infrastructure without the learning curve.
Sources
- tweenpath.net — “Install PSiTransfer on Debian 8: A Simple Open Source Self-hosted File Sharing Solution”. https://tweenpath.net/install-psitransfer-on-debian-8-a-simple-open-source-self-hosted-file-sharing-solution/
- medevel.com — “Discover PsiTransfer: The Self-Hosted File Sharing Solution You Need”. https://medevel.com/psitransfer/
- codeberg.org — “spectral369/psitransfer: Fork from https://github.com/psi-4ward/psitransfer”. https://codeberg.org/spectral369/psitransfer
- news.tuxmachines.org — “Applications: ‘Best’ Software, Flathub Picks, and Misc. Highlights” (mentions PsiTransfer via Medevel). http://news.tuxmachines.org/n/2024/02/10/Applications_Best_Software_Flathub_Picks_and_Misc_Highlights.shtml
Primary sources:
- GitHub repository and README: https://github.com/psi-4ward/psitransfer (1,855 stars, BSD-2-Clause license, 33 contributors)
- Docker Hub image: https://hub.docker.com/r/psitrax/psitransfer
Replaces
Related File Management & Sharing Tools
View all 133 →Syncthing
81KOpen-source continuous file synchronization — peer-to-peer, encrypted, no central server, no cloud account required.
LocalSend
77KAn open-source, cross-platform alternative to AirDrop — share files between nearby devices over your local network without the cloud.
MinIO
61KHigh-performance, S3-compatible object storage for AI, analytics, and cloud-native workloads. Deploy on-premises or in any cloud with a single binary.
Rclone
56KCommand-line tool that syncs, copies, and manages files across 70+ cloud storage providers. The rsync for cloud storage.
AList
49KFile list program that aggregates multiple storage backends into a single web interface with WebDAV support. Mount cloud drives, local storage, and S3 in one place.
copyparty
44KCopyparty is a portable, single-file Python file server with resumable uploads, deduplication, WebDAV, SFTP, FTP, media indexing, and audio transcoding — no dependencies required.