返回排行榜

robinkarlberg/transfer.zip-web

JavaScripttransfer.zip

A self-hostable complete file-sharing solution that focuses on reliability, security and ease of use.

end-to-end-encryptionfilesharingfiletransfer
Star 增长趋势
Star
1.5k
Forks
95
周增长
Issues
6
5001k
2023年6月2024年6月2025年7月2026年7月
制品库npmnpm install transfer.zip-web
README

Transfer.zip

image

This is the GitHub repository for Transfer.zip - a beautiful and open-source file transfer alternative to popular services like WeTransfer, Smash and more.

This repository contains the source code for the website and database. The other repo, transfer.zip-node controls all file operations.

A LOT of work has gone into making this tool, we are so grateful for all the support we have gotten along the way.

Support us by signing up for a free trial: Transfer.zip Pricing


Features

A quick overview of the main features, more info further down.

  • Reliable uploads - File uploads use the reliable tus protocol.
  • Transfer requests - Ability to request others to upload files to you for download later.
  • Custom branding - Upload your own icon and background for the transfer pages (requires an S3 bucket atm)
  • Email support - Send emails to recipients, also updates to fit with the branding.
  • S3/Disk stored transfers - Supports storing files with S3-compatiable APIs as well as local disk storage.
  • Quick Transfers - End-to-end encrypted peer-to-peer transfers, when you don't want to store files, just send them.
  • Self-hostable - Easy to self-host on your own hardware.

[!NOTE] The "main" branch is inteded for self-hosting. The "production" branch is the code that runs in production. They can differ when we have not ported all functionality yet to the self-hosted version.

Quick Transfers - End-to-end encrypted WebRTC file transfers in the browser

Quick Transfers use WebRTC for peer-to-peer data transfer, meaning the files are streamed directly between peers and not stored anywhere in the process, not even on Transfer.zip servers. To let peers initially discover each other, a signaling server is implemented in NodeJS using WebSockets, which importantly no sensitive data is sent through. In addition, the file data is end-to-end encrypted using AES-GCM with a client-side 256 bit generated key, meaning if someone could impersonate a peer or capture the traffic, they would not be able to decrypt the file without knowing the key. Because the file is streamed directly between peers, there are no file size or bandwidth limitations. The easiest way to Quick Transfer a file is to scan the QR code containing the file link and encryption key. It is also possible to copy the link and share it to the recipient over what medium you prefer the most.

Because of how peer-to-peer works, some network firewalls may not allow direct connections between devices. In that case, the peer-to-peer connection can fallback to using the signalling server as a relay, effectively bypassing network firewall limitations. Due to WebRTC connections being much slower than using the relay, it will forced to be used if files are larger than 10MB, even if WebRTC connections are technically possible. This change was made due to people complaining of slow transfer speeds.

Quick Transfers only work while both users are online at the same time, due to the peer-to-peer nature of the system.

Stored Transfers - File uploads with resumable, scalable storage

Instead of real-time peer-to-peer transfer like with Quick Transfers, Stored Transfers store the file temporarily on the server (or S3-compatible backend) using the tus protocol, which supports resumable, chunked uploads. This means interrupted uploads or downloads can retry on network interruptions. Files are permanently deleted after the transfers expiry date.

Stored Transfers are just what normal file transfer services like WeTransfer do, but you can host it yourself if you want.

Self-hosting

See the self-hosting guide.

Built with

  • Next.js
  • WebRTC
  • WebSockets
  • Node.js
  • Fastify
  • MongoDB
  • zip.js

Some known problems

0-byte files gets stuck on transmit using Quick Transfers.

On Firefox mobile, sending files using Quick Transfer does not work at the moment. This could have something to do with the path being changed after the file has been chosen in the file picker, but not been read yet. This is under investigation and idk how to fix.

Sending files from some Safari browsers is buggy at the moment, it has something to do with Safari terminating the WebSocket connection when unfocusing the window. Apple...

相关仓库
ente/ente

💚 End-to-end encrypted cloud for everything.

DartGNU Affero General Public License v3.0androidios
ente.com
27.9k1.7k
pavlobu/deskreen

Deskreen turns any device with a web browser into a secondary screen for your computer. ⭐️ Star to support our work!

TypeScriptnpmGNU Affero General Public License v3.0second-screenwifi
deskreen.com
21.2k1.2k
ente-io/ente

End-to-end encrypted, FOSS cloud for Photos, 2FA secrets and more!

DartGNU Affero General Public License v3.0androidios
ente.io
18.2k997
keybase/client

Keybase Go Library, Client, Service, OS X, iOS, Android, Electron

GoGo ModulesBSD 3-Clause "New" or "Revised" Licensekeybasechat
9.2k1.3k
cryptpad/cryptpad

Collaborative office suite, end-to-end encrypted and open-source.

JavaScriptnpmGNU Affero General Public License v3.0collaborative-editingcryptpad
cryptpad.org
7.8k836
dotenvx/dotenvx

a secure dotenv–from the creator of `dotenv`

JavaScriptnpmBSD 3-Clause "New" or "Revised" Licensedotenvenv
dotenvx.com
5.6k146
build-trust/ockam

Orchestrate end-to-end encryption, cryptographic identities, mutual authentication, and authorization policies between distributed applications – at massive scale.

Rustcrates.ioApache License 2.0messagingauthentication
docs.ockam.io
4.6k557
shuaiplus/nodewarden

Bitwarden-compatible server running on Cloudflare Workers

TypeScriptnpmOtherbitwardencloudflare-workers
nodewarden.app
3.1k3.4k
padloc/padloc

A modern, open source password manager for individuals and teams.

JavaScriptnpmGNU Affero General Public License v3.0javascriptlit-element
padloc.app
2.9k264
garden-co/classic-jazz

A new kind of database that's distributed across your frontend, containers, serverless functions and its own storage cloud.

TypeScriptnpmMIT Licenselocal-firstoffline-first
classic.jazz.tools
2.5k112
Peergos/Peergos

A p2p, secure file storage, social network and application protocol

JavaMavenGNU Affero General Public License v3.0javapeer-to-peer
peergos.org
2.4k190
smallbets/userbase

Create secure and private web apps using only static JavaScript, HTML, and CSS.

JavaScriptnpmMIT Licensedatabaseend-to-end-encryption
userbase.com
2.3k127