selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

PrivyDrop logo

Self-host PrivyDrop

v1.3.0

P2P file and text sharing over WebRTC with E2E encryption

ReleaseOpen SourceMIT
Updated4 months ago
LanguageTypescript
Setup difficultyModerate
MobileResponsive
Stars
145
CPU
1 core
RAM
512MB
Storage
2GB available space
Ports
3001 (Backend API and Socket.IO signaling), 3002 (Frontend web application), 80 (Nginx HTTP reverse proxy), 443 (Nginx HTTPS reverse proxy (full mode)), 3478 (Coturn TURN/STUN server (TCP/UDP)), 5349 (Coturn TURN over TLS), 49152 (Coturn UDP relay port range start (default 49152-49252))
Requires
Redis
Install with Docker Compose
PrivyDrop screenshot 1

What is PrivyDrop?

PrivyDrop is a privacy-focused, peer-to-peer file and text sharing web application built on WebRTC. It enables direct browser-to-browser transfers with end-to-end encryption, meaning files never touch a central server. Key capabilities include unlimited file sizes via Chrome's direct-to-disk streaming, simultaneous multi-receiver downloads, folder transfers, resumable transfers with pause/resume, real-time progress and speed display, rich text clipboard sharing, and room-based connections via links or QR codes. The responsive UI works on desktop and mobile browsers with support for English, Chinese, Spanish, Japanese, German, French, and Korean. Self-hosting is done via Docker Compose with a one-click deploy script supporting LAN-only, public IP, and full domain (Let's Encrypt HTTPS) modes. A built-in TURN server (coturn) handles NAT traversal. The stack uses Next.js/React frontend, Node.js/Express backend, Socket.IO for signaling, and Redis for room state. No user accounts or authentication are required — anyone with the room link can join.

Should you self-host PrivyDrop?

PrivyDrop scores 46/100 on selfhost.directory (how scoring works) and ranks #59 of 86 in File Sharing. It has 145 GitHub stars.

It shipped 3 stable releases in the past year. The latest, v1.3.0, came out on 8 June 2026. New versions land roughly every 3 months.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Local Content Share (51/100, 493 stars). It scores higher overall, so compare the two before you pick. See PrivyDrop vs Local Content Share side by side.

Features

  • End-to-end encryption
  • File and folder transfer
  • In-app navigation persistence
  • Internationalization
  • Multi-receiver Support
  • No Account Required
  • QR code and link sharing
  • Real-time progress and speed
  • Resume TransferIf interrupted, currently need to refresh both sender and receiver web pages to restart the transfer.
  • Rich Text Clipboard
  • Unlimited File Transfer

PrivyDrop README

How to install PrivyDrop

Install PrivyDrop with Docker Compose

Environment variables
FRONTEND_PORT, BACKEND_PORT, HTTP_PORT, HTTPS_PORT, TURN_MIN_PORT, TURN_MAX_PORT, CORS_ORIGIN, NEXT_PUBLIC_API_URL, NEXT_PUBLIC_TURN_HOST, NEXT_PUBLIC_TURN_USERNAME, NEXT_PUBLIC_TURN_PASSWORD, HTTP_PROXY, HTTPS_PROXY, NO_PROXY

Private LAN (no domain/public IP)

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

Private LAN + TURN (for complex NAT/LAN)

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

LAN HTTPS (self-signed; dev/managed env; explicitly enable 8443)

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

Public IP without domain (with TURN; recommended with Nginx for same-origin)

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

Public domain (HTTPS + Nginx + TURN + SNI 443, auto-issue/renew)

bash ./deploy.sh --mode full --domain your-domain.com --with-nginx --with-turn --le-email you@domain.com

One-click deployment script with multiple modes. Requires Docker Compose v2.

How to configure PrivyDrop

  • BACKEND_PORT3001Port for backend API service

    Port for backend API service

  • CORS_ORIGINhttp://localhost:3002Allowed CORS origins for backend

    Allowed CORS origins for backend

  • FRONTEND_PORT3002Frontend container port

    Frontend container port

  • HTTP_PORT80Nginx HTTP port

    Nginx HTTP port

  • HTTPS_PORT443Nginx HTTPS port

    Nginx HTTPS port

  • NEXT_IMAGE_UNOPTIMIZEDtrueDisable Next.js image optimization

    Disable Next.js image optimization

  • NEXT_PUBLIC_API_URLhttp://localhost:3001Frontend API URL for backend communication

    Frontend API URL for backend communication

  • NEXT_PUBLIC_TURN_HOSTTURN server host/IP address

    TURN server host/IP address

  • NEXT_PUBLIC_TURN_PASSWORDTURN server password

    TURN server password

  • NEXT_PUBLIC_TURN_USERNAMETURN server username

    TURN server username

  • NODE_ENVproductionNode.js environment mode

    Node.js environment mode

  • REDIS_HOSTlocalhostRedis server hostname

    Redis server hostname

  • REDIS_PORT6379Redis server port

    Redis server port

  • TURN_MAX_PORT49252TURN UDP relay port range maximum

    TURN UDP relay port range maximum

  • TURN_MIN_PORT49152TURN UDP relay port range minimum

    TURN UDP relay port range minimum

PrivyDrop releases & version history

More in File Transfer & Sync

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…