Skip to content

PrivyDrop

File Storage & Sync

A privacy‑focused, WebRTC‑based peer‑to‑peer file and text sharing tool with end‑to‑end encryption

TypeScript Latest v1.2.0 · 2mo ago Security brief →

Features

  • End‑to‑End Encryption via direct WebRTC connections
  • Unlimited file size transfers using Chrome's direct‑to‑disk streaming
  • Multi‑receiver support with real‑time progress and speed display

Recent releases

View all 5 releases →
v1.2.0 Breaking risk
⚠ Upgrade required
  • Migration guide: replace PM2 start commands with `bash deploy.sh` Docker deployment scripts (e.g., `--mode lan-http` or `--mode full --domain example.com`).
  • Consult the updated Docker Deployment Guide (`docs/DEPLOYMENT_docker.md`) for all supported modes.
  • No changes to existing environment variables are required for Docker deployments, but review new CORS options in `docker/scripts/generate-config.sh`.
Breaking changes
  • Removed all bare‑metal/PM2 deployment methods: `build-and-deploy.sh`, `ecosystem.config.js`, `deploy.config.example`, legacy Docker assets in `backend/docker/` directory, and related documentation (`docs/DEPLOYMENT.md` and `docs/DEPLOYMENT.zh-CN.md`).
  • PrivyDrop now requires Docker‑based deployment; no other deployment mechanisms are supported.
Notable features
  • 8‑second slow connection hint via new `useConnectionFeedback` hook (multi‑language support).
  • 15‑second room‑join timeout with early success detection to avoid false timeouts.
  • New hooks (`useOneShotSlowHint`) and utility (`rtcPhase`) for RTC state management.
Full changelog

PrivyDrop v1.2.0 Release Notes

Release Date: March 28, 2026
Commits: 42 commits since v1.1.1
Files Changed: 131 files | +11,728 / -8,198 lines


⚠️ Breaking Changes

Docker-Only Deployment

PrivyDrop now only supports Docker-based deployment. All bare-metal/PM2 deployment methods have been removed.

What Was Removed:

  • build-and-deploy.sh (PM2-based deployment script)
  • ecosystem.config.js (PM2 configuration)
  • deploy.config.example
  • backend/docker/ directory (legacy Docker assets)
  • docs/DEPLOYMENT.md and docs/DEPLOYMENT.zh-CN.md (bare-metal guides)

Migration Guide:

If you were using PM2 or bare-metal deployment:

# Old method (no longer supported)
pm2 start ecosystem.config.js

# New method (use Docker)
bash deploy.sh --mode lan-http                    # Local LAN
bash deploy.sh --mode full --domain example.com   # Production

See Docker Deployment Guide for all deployment modes.


🚀 New Features

Enhanced Connection Feedback

8-Second Slow Connection Hint

  • New useConnectionFeedback hook monitors WebRTC connection state
  • Shows user-friendly hint if P2P connection takes longer than 8 seconds
  • Supports all 7 languages (EN, ZH, JA, KO, ES, DE, FR)

Join Room Timeout Fix

  • Implemented 15-second timeout for room joining
  • Added early success detection (ready/recipient-ready/offer signals)
  • Prevents false "Join room timeout" errors during slow networks

New Hooks & Utilities:

  • useOneShotSlowHint - Reusable one-shot notification hook
  • rtcPhase - Shared RTC phase mapper for consistent status messages

UI Improvements

Copy Button Feedback

  • RoomID and URL copy buttons now show check icon (✓) for 2 seconds after copying
  • Consistent with existing QR code copy behavior

QR Code Restoration

  • Restored QR code display in ShareCard (was accidentally removed in i18n refactor)
  • Copy QR code and download QR code now work correctly

🔧 Improvements

i18n Modernization (Major Refactor)

14 commits dedicated to i18n infrastructure:

| Change | Impact |
|--------|--------|
| Migrated to native next-intl hooks | Cleaner code, better tree-shaking |
| Removed TranslationProvider facade | Reduced bundle size |
| Replaced prop drilling with context | Simpler component APIs |
| Normalized translation keys | Consistent naming across 7 languages |
| Added next-intl routing infrastructure | Better i18n routing support |

Affected Components: 38 files modified across all UI components

Paste Button Label

  • Changed paste button in SendTabPanel from "粘贴房间ID" to "粘贴" (Paste)
  • More accurate: button pastes any clipboard content, not just room IDs
  • "粘贴房间ID" remains in RetrieveTabPanel where contextually appropriate

🐛 Bug Fixes

| Issue | Fix |
|-------|-----|
| React Hydration Mismatch | ThemeToggle now renders placeholder until mounted |
| QR Code Not Displaying | Restored QRCodeSVG component rendering |
| WebRTC Timeout False Positive | Added early success signal detection |
| SSR Window/DOM Access | Added guards for server-side rendering |
| Deployment CORS | Fixed same-origin API and www CORS origin |


📚 Documentation

New Documentation

AI Playbook (English)

  • Added complete English version of AI playbook
  • Code map, collaboration rules, flow documentation
  • Split into modular documents for better navigation

Blog Posts

  • New "AI Collaboration Playbook" blog post (7 languages)
  • Added cover images and improved formatting
  • Fixed missing content in some language versions

Updated Documentation

  • Docker deployment guide updated with full-mode runtime behavior
  • Added low-memory deployment guidance
  • Removed all PM2/bare-metal references
  • Updated README files to reflect Docker-only support

📦 Dependencies

  • Updated backend/package-lock.json
  • Added next-intl routing infrastructure
  • Updated frontend dependencies

🔗 Full Changelog

Compare v1.1.1...v1.2.0


Upgrade Instructions

  1. Update your deployment:

    # If using git pull
    git pull origin main
    git checkout v1.2.0
    
    # Restart with Docker
    bash deploy.sh --mode <your-mode>
    
  2. If using PM2 (deprecated):

  3. Environment variables:

    • No changes required for existing Docker deployments
    • Check docker/scripts/generate-config.sh for new CORS options

Contributors

Thanks to all contributors who made this release possible!

v1.1.1 New feature
Notable features
  • Cached Room ID flow: auto-join on load without manual typing
  • Robust reconnect: auto rejoin after socket reconnect and mobile foreground resume
  • Next.js standalone output with pnpm hoisting for leaner deploys, plus a build-and-deploy script
Full changelog

Overview

  • This release focuses on seamless reconnects and faster room entry with cached room IDs, introduces a Next.js standalone build and a one-command deploy script, and brings multi-language blog and SEO improvements. It also
    adds a theme toggle and navigation persistence that does not interrupt file transfers.

Highlights

  • Cached Room ID flow: auto-join on load; no manual typing.
  • Robust reconnect: auto rejoin after socket reconnect and on mobile foreground resume.
  • Next.js standalone output + pnpm hoisting for leaner deploys.
  • i18n blog restructure and SEO boosts (JSON-LD, sitemap tag pages).
  • Theme toggle and in-app navigation persistence without transfer interruption.

Features

  • feat(ux): cached roomId auto-join + theme toggle.
  • feat(frontend): send initiator-online after rejoin with cached/long room ID.
  • feat(backend): idempotent create_room for >=8-char IDs to support cached-ID reconnects.
  • feat(deploy): add build-and-deploy script; switch frontend to Next.js standalone; docs: incremental update guide.
  • feat(blog/blog-i18n): restructure blog by language; localize UI & SEO; add tag pages to sitemap.

Fixes

  • fix(reconnect): auto rejoin on socket connect; broaden reconnection triggers for mobile foreground resume.

Build & DevOps

  • build(standalone): use pnpm hoisted.
  • New script: [build-and-deploy.sh](http://build-and-deploy.sh/) packs frontend/backend into out.zip with deploy info and offers guided server deployment (backup, unzip, PM2 restart).

Docs & Blog

  • docs: document in-app navigation persistence (no transfer interruption).
  • SEO: add JSON-LD structured data; refine WebApplication alternateName.
  • AI Playbook and collaboration docs added and refined.
  • New (included from current staged changes):
    • blog: add “One‑Click Reconnect, Rock‑Solid: A Deep Dive into Cached‑ID Auto‑Join and Resilient Reconnect in PrivyDrop”.
    • asset: add frontend/public/blog-assets/cached-id-reconnect.webp as cover image.
v1.1.0 New feature
⚠ Upgrade required
  • Minimum Docker 20.10+ and Docker Compose 2.x required
  • Private network deployments need no public IP; public mode requires domain registration for LE certificates
Notable features
  • Docker One‑Click Deployment System enables five‑minute automated setup
  • Four deployment modes (lan-http, lan-tls, public, full) covering private and production environments
  • Built‑in TURN server, SNI multiplexing on port 443, automatic Let's Encrypt HTTPS
Full changelog

🐳 Docker One-Click Deployment - Game Changing Update!

🎉 5-Minute Zero-Configuration Deployment

We're excited to announce PrivyDrop's Docker One-Click Deployment System! Transform your deployment experience from 30 minutes of manual configuration to 5 minutes of complete automation.

⚡ Revolutionary Deployment Breakthrough

| Feature | Traditional | Docker Deployment |
|---------|-------------|-------------------|
| ⏱️ Deployment Time | 60 minutes | 5 minutes |
| 🎯 Technical Barrier | Linux expert | Basic Docker knowledge |
| 🌐 Environment | Public IP required | Private networks supported |
| 📊 Success Rate | ~70% | 95%+ |
| 🔧 Configuration | 10+ manual steps | One-click automation |

🚀 Quick Start Commands

# Private Network (Fastest)
bash ./deploy.sh --mode lan-http

# Public Domain (Production Ready)
bash ./deploy.sh --mode full --domain your-domain.com --with-nginx --with-turn --le-email [email protected]

🏗️ Four Deployment Modes

1. lan-http - Private Network HTTP

bash ./deploy.sh --mode lan-http

✅ Zero configuration startup
✅ Private network P2P transfer
✅ Perfect for personal/testing environments

2. lan-tls - Private Network HTTPS (Self-Signed)

bash ./deploy.sh --mode lan-tls --enable-web-https --with-nginx

✅ Optimized for development/managed environments
✅ Self-signed CA certificates
✅ Secure access on port 8443

3. public - Public Network HTTP

bash ./deploy.sh --mode public --with-turn --with-nginx

✅ Public access without domain
✅ Built-in TURN server
✅ Complex network NAT traversal

4. full - Complete Production Environment

bash ./deploy.sh --mode full --domain your-domain.com --with-nginx --with-turn --le-email [email protected]

✅ Let's Encrypt automatic HTTPS
✅ Nginx reverse proxy
✅ SNI 443 port multiplexing
✅ Zero-downtime certificate renewal

🔧 Docker Integration Features

🎯 Automation Capabilities

  • Smart Configuration Detection: Automatic network environment identification
  • Dependency Auto-Installation: Docker, certbot and more automatically configured
  • Health Monitoring: Real-time service status tracking
  • Log Management: Centralized log collection and rotation

🌐 Network Optimization

  • TURN Server: Built-in NAT traversal solving connection issues
  • SNI Multiplexing: Intelligent 443 port sharing (turn.domain → TURN, others → Web)
  • Same-Origin Architecture: Unified frontend/API gateway avoiding CORS issues
  • Proxy Support: Build-time HTTP/HTTPS proxy configuration

🔒 Security Enhancements

  • Container Isolation: All services run in secure isolated environments
  • Minimal Exposure: Only necessary ports exposed
  • Automatic HTTPS: Let's Encrypt certificates auto-issue and renewal
  • Hot Reload: Zero-downtime certificate updates

📋 System Requirements

Minimum Configuration:

  • CPU: 1 core
  • Memory: 512MB
  • Disk: 2GB
  • Network: Any environment (private/public)

Software Dependencies:

  • Docker 20.10+
  • Docker Compose 2.x

🛠️ Advanced Configuration

# Custom ports
vim .env  # Modify FRONTEND_PORT, BACKEND_PORT, HTTP_PORT

# Build proxy support
HTTP_PROXY=http://your-proxy:7890
HTTPS_PROXY=http://your-proxy:7890
NO_PROXY=localhost,127.0.0.1,backend,frontend,redis,coturn

# TURN port range customization
bash ./deploy.sh --mode full --with-turn --turn-port-range 55000-55100

# Feature toggles
bash ./deploy.sh --with-nginx --with-turn --with-sni443

📊 Service Management

# View service status
docker compose ps

# View logs
docker compose logs -f

# Restart services
docker compose restart

# Complete cleanup
bash ./deploy.sh --clean

🔗 Quick Links

📖 Docker Deployment Guide
🌐 Live Demo
🐛 Issue Reporting


🚀 Transform your deployment experience - Try Docker One-Click Deployment today!

v1.0.1 Bugfix
Notable features
  • Leaving a room now supports resuming file transfer from the last saved directory
Full changelog

Fix the issue of slow performance on mobile devices;
Fix the issue of data packets being out of order in Firefox;
Fix the issue where Firefox and Alook browsers cannot download and save files;
Leave Room while transferring is also supported. If a save directory is set, exiting the room supports resuming from where it left off next time.

v1.0.0 New feature
Notable features
  • End-to-End Encrypted Transfers via WebRTC
  • Drag-and-drop File and Folder Sharing
  • Resumable Transfers after network interruptions
Full changelog

v1.0.0: Initial Public Release

We are excited to announce the first stable release of PrivyDrop!

PrivyDrop is an open-source, peer-to-peer (P2P) file and text sharing tool built on WebRTC. It's designed to provide maximum privacy and an efficient transfer experience. All data is transferred directly between browsers without being stored on any intermediate servers.

✨ Core Features in This Release

  • 🔒 End-to-End Encrypted Transfers: Utilizes WebRTC for direct P2P connections, ensuring absolute privacy during data transmission.
  • 📁 File and Folder Sharing: Supports drag-and-drop sharing for multiple files or entire folders.
  • 📝 Rich Text Clipboard: Allows for online editing and sharing of formatted text content.
  • 🔄 Resumable Transfers: Capable of resuming file transfers from where they left off after a network interruption, ensuring the successful delivery of large files.
  • 👨‍👩‍👧‍👦 Multi-Peer Support: Enables a single sender to transfer files to multiple recipients in the same room simultaneously.
  • 🚀 Real-time Speed and Progress: Clearly displays the real-time transfer rate and overall progress.

Quick Start

  1. Sender: Open the website, drag and drop files or paste text into the "Send" tab, then create or join a room.
  2. Receiver: Enter the same room ID in the "Receive" tab.
  3. Download: Once the receiver sees the file list, they can click "Download" to save the files directly to their local machine.

For Developers

PrivyDrop is built with a modern tech stack, including Next.js, Node.js, TypeScript, WebRTC, and Socket.IO. We have carefully designed the application with a layered architecture to decouple the UI, business logic, and underlying services.

What's Next

This is just the beginning. We have many plans for the future of PrivyDrop. Feel free to check out our Roadmap and get involved!

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
131
Forks
11
Languages
TypeScript MDX Shell

Install & Platforms

Install via
docker docker-compose

Beta — feedback welcome: [email protected]