Repolode
polius

polius/FileSync

A self-hosted web app that sends files from one browser to many others in real time, peer-to-peer over WebRTC with no size limit.

Stars
1,892
Forks
188
Open issues
1
Last commit
2 days ago

What is it?

FileSync lets one device share files with many recipients at once. The sender creates a room and shares a link or QR code, and recipients open it in a browser without installing anything or creating an account. Rooms can be password-protected.

Files travel directly between browsers over encrypted WebRTC. A signaling server only helps the peers connect, and a TURN relay is used when a direct connection is not possible. Received files are streamed to disk as they arrive, so memory use stays flat regardless of file size, and interrupted transfers reconnect and resume.

The project ships as a single Docker image. The HTTPS setup uses Caddy with a domain, which enables the streaming save methods in the browser. Plain HTTP works for local testing but falls back to buffering the whole file in memory.

Key features

  • 01Files go directly between browsers over encrypted WebRTC.
  • 02Streams received files to disk, so large files do not exhaust memory.
  • 03Resumes interrupted transfers automatically.
  • 04Sends one file to many devices through a shared room link or QR code.
  • 05Falls back to a TURN relay when a direct connection is blocked.
  • 06Requires no installs or accounts for recipients, with optional room passwords.

Use cases

  • Sending large files to a group of colleagues or clients without uploading them to a third-party cloud.
  • Sharing files within a home or office network, or across networks, through a self-hosted instance.
  • Transferring files between your own phone and computers through a browser.

Quick start

  1. 1

    Download deploy/docker-compose.yml from the repository

  2. 2

    Start FileSync with Docker Compose

    docker compose up -d
  3. 3

    Open http://localhost in your browser on the machine running Docker

Things to know

  • The HTTP option is for quick local testing only and is not meant for production.
  • Over plain HTTP, received files are buffered fully in memory, so large transfers are not memory-safe.
  • Production use needs HTTPS with your own domain and a Caddy setup.
  • You must open ports 80/443, 3478 and the UDP range 50000–50100 on your firewall.

In collections

Topics

FAQ

What is FileSync?
A self-hosted web app that sends files from one browser to many others in real time, peer-to-peer over WebRTC with no size limit. FileSync lets one device share files with many recipients at once. The sender creates a room and shares a link or QR code, and recipients open it in a browser without installing anything or creating an account. Rooms can be password-protected.
Is FileSync free to use? What license does it have?
FileSync is open source under the MIT license. Check the license terms before using it in commercial products.
Is FileSync still maintained?
Actively maintained. The last commit to FileSync was on Nov 5, 2026.
What can I use FileSync for?
Sending large files to a group of colleagues or clients without uploading them to a third-party cloud. Sharing files within a home or office network, or across networks, through a self-hosted instance. Transferring files between your own phone and computers through a browser.
How do I install FileSync?
Download deploy/docker-compose.yml from the repository Start FileSync with Docker Compose: docker compose up -d Open http://localhost in your browser on the machine running Docker
Where can I get FileSync?
The source code and installation instructions are on GitHub: https://github.com/polius/FileSync

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects