FydeDrop enables file transfering in the same network. It is a fork of Snapdrop.
FydeDrop is built with:
- Vanilla HTML5 / ES6 / CSS3
- Progressive Web App
- WebRTC
- WebSockets fallback
- NodeJS
- Material Design
FydeDrop uses a P2P connection if WebRTC is supported by the browser. WebRTC needs a signaling serve, but it is only used to establish a connection and is not involved in the file transfer.
None of files are ever sent to any server. Files are sent only between peers.
Peers sharing the same public IP will enter the same room to transfer files. That makes the transfer only work in the same network.
As a signaling server is required to get the peer's public IP to establish P2P connection, FydeDrop is connecting to a STUN deployed with STUNTMAN. Before that coturn is used instead which acts as both STUN and TURN server. We do not want relaying as a fallback when P2P connection is unavailable, so STUNTMAN is enough for FydeDrop.
docker-compose up
Now visit http://localhost:6080 in your browser.
The client expects the server at http(s)://your.domain/server.
When serving the node server behind a proxy the "X-Forwarded-For" header has to be set by the proxy. Otherwise all clients that are served by the proxy will be mutually visible.
By default the server listens on port 6000.
For the nginx configuration, see nginx/default.conf.
Check docker.sh for more commands.
./docker.sh start
Since FydeDrop is PWA, the service worker will cache website resources in local. To deliver the update to users in time, there are 2 lines should been modified in every release.
Bump the version in CACHE_NAME
.
Bump the version in CSS and JS resource URL, e.g.
- Bump the version in
<link rel="stylesheet" href="styles.css?version">
to force the browser to fetch CSS. - Bump the version in
<script src="scripts/ui.js?version"></script>
to force the browser to fetch JS.