Snapdrop Local File Sharing
Local file sharing inspired by Apple Airdrop.
Overview
Snapdrop is a progressive web application that recreates Apple's AirDrop functionality for any device with a web browser. Originally created by Robin Linus as an open-source alternative to proprietary file sharing solutions, Snapdrop enables instant peer-to-peer file transfers between devices on the same local network without requiring accounts, installations, or cloud storage. The application uses WebRTC technology to establish direct connections between browsers, ensuring files never leave your local network.
This Docker deployment uses the LinuxServer.io maintained image of Snapdrop, providing a self-hosted instance that runs entirely within your infrastructure. The containerized setup eliminates external dependencies on public Snapdrop servers, giving you complete control over your file sharing environment while maintaining the simplicity of the original web-based interface. The application automatically discovers devices on the same network and presents them as clickable targets for file transfers.
This configuration is ideal for privacy-conscious organizations, home labs, and development teams who need secure local file sharing without internet connectivity requirements. IT administrators can deploy this for office environments where external file sharing services are restricted, while developers can use it for quick asset transfers between testing devices on isolated networks.
Key Features
- WebRTC-based peer-to-peer file transfers that bypass server storage entirely
- Automatic device discovery using network broadcast and WebSocket signaling
- Progressive Web App support with offline capability and mobile home screen installation
- Real-time connection status indicators showing available devices and transfer progress
- Multi-file and folder transfer support with drag-and-drop interface
- Cross-platform compatibility supporting Windows, macOS, Linux, iOS, and Android browsers
- Zero-configuration setup requiring only network connectivity between devices
- End-to-end encrypted transfers using WebRTC's built-in DTLS encryption
Common Use Cases
- 1Corporate environments replacing external file sharing services for security compliance
- 2Home media servers enabling quick photo and video transfers from mobile devices
- 3Development teams sharing build artifacts and assets across different testing devices
- 4Educational institutions providing student file sharing without cloud service dependencies
- 5Trade shows and conferences where vendors need to share materials with attendees on local networks
- 6Remote work setups allowing secure file transfers between personal and work devices on the same VPN
- 7IoT and embedded development projects requiring file transfers to devices with limited connectivity options
Prerequisites
- Docker and Docker Compose installed on the host system
- Minimum 512MB available RAM for the Snapdrop container
- Network ports 80 and 443 available and not conflicting with other services
- All client devices must be on the same local network or VLAN as the Docker host
- Modern web browsers supporting WebRTC (Chrome 23+, Firefox 22+, Safari 11+, Edge 79+)
- Firewall rules allowing WebRTC traffic between client devices on UDP ports 1024-65535
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 snapdrop: 3 image: linuxserver/snapdrop:latest4 container_name: snapdrop5 environment: 6 - PUID=10007 - PGID=10008 - TZ=UTC9 ports: 10 - "80:80"11 - "443:443"12 networks: 13 - snapdrop-network14 restart: unless-stopped1516networks: 17 snapdrop-network: 18 driver: bridge.env Template
.env
1# Snapdrop2# No configuration neededUsage Notes
- 1Web UI at http://localhost
- 2Open on multiple devices on same network
- 3Click device name to share files
- 4WebRTC peer-to-peer transfer
- 5No upload to server
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 snapdrop:5 image: linuxserver/snapdrop:latest6 container_name: snapdrop7 environment:8 - PUID=10009 - PGID=100010 - TZ=UTC11 ports:12 - "80:80"13 - "443:443"14 networks:15 - snapdrop-network16 restart: unless-stopped1718networks:19 snapdrop-network:20 driver: bridge21EOF2223# 2. Create the .env file24cat > .env << 'EOF'25# Snapdrop26# No configuration needed27EOF2829# 3. Start the services30docker compose up -d3132# 4. View logs33docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/snapdrop-file-sharing/run | bashTroubleshooting
- Devices not appearing in discovery list: Ensure all devices are on the same subnet and check if corporate firewalls are blocking WebSocket connections on ports 80/443
- File transfers failing or timing out: Verify WebRTC UDP traffic is not blocked between client devices, particularly in corporate networks with strict firewall policies
- HTTPS certificate warnings in browsers: The default setup uses self-signed certificates; either accept the warning or configure proper SSL certificates in the container
- Connection refused errors when accessing web interface: Check if ports 80 or 443 are already in use by other services using 'netstat -tulpn | grep :80'
- Transfers work on some devices but not others: Disable VPN connections on client devices as they can interfere with local network discovery and WebRTC connectivity
- Poor transfer performance on large files: Ensure QoS settings on network equipment aren't limiting peer-to-peer traffic between wireless and wired segments
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download