FileSync truyền file thời gian thực từ một thiết bị đến nhiều thiết bị khác qua kết nối WebRTC ngang hàng, không cần tài khoản và không giới hạn dung lượng. Đây là repo mã nguồn mở dành cho những ai muốn gửi file cỡ lớn trực tiếp giữa các trình duyệt mà không đưa dữ liệu qua máy chủ trung gian. Bạn chỉ cần mở đường link phòng, gửi file và người nhận tải xuống ngay trong trình duyệt.
Thank you for reading this post, don't forget to subscribe!Những điểm chính
- FileSync dùng WebRTC để truyền file trực tiếp giữa các trình duyệt, máy chủ chỉ hỗ trợ bắt tay ban đầu nên nội dung file không bị lưu trên server.
- File gửi xuống đĩa theo luồng khi đang nhận, nhờ đó có thể chuyển file nhiều GB mà gần như không chiếm RAM nếu dùng HTTPS.
- Một phòng có thể gửi file đến nhiều người cùng lúc qua link hoặc mã QR; người nhận không cần đăng ký hay cài phần mềm.
- Bạn có thể tự lưu trữ toàn bộ hệ thống bằng một Docker image và bảo vệ phòng bằng mật khẩu khi cần.
FileSync là gì và giải quyết vấn đề gì?

FileSync là một ứng dụng web self-hosted giúp các thiết bị trong cùng phòng kết nối trực tiếp với nhau để trao đổi file, thay vì upload lên một dịch vụ đám mây tập trung. Nó giải quyết những tình huống cần gửi file ngay lập tức cho nhiều máy, đặc biệt khi file dung lượng lớn hoặc thông tin nhạy cảm cần hạn chế tối đa việc đi qua bên thứ ba.
Kiến trúc của FileSync khá khéo: máy chủ WebSocket chỉ làm nhiệm vụ trao đổi SDP và ICE trong lúc kết nối, sau đó rút lui và để dữ liệu chảy thẳng giữa các trình duyệt. Nhờ vậy, băng thông và quyền riêng tư không bị nghẽn ở một điểm trung tâm.
Bạn có thể xem chi tiết tại repository gốc trên GitHub nếu muốn đọc source hoặc theo dõi các cập nhật mới.
Những tính năng nổi bật của FileSync là gì?

FileSync tập trung vào trải nghiệm gửi file nhanh, riêng tư và không rào cản kỹ thuật. Các tính năng được thiết kế xoay quanh WebRTC, streaming dữ liệu và khả năng tự triển khai.
Quyền riêng tư theo thiết kế
File đi thẳng giữa các trình duyệt qua WebRTC mã hóa. Máy chủ chỉ khởi tạo kết nối, không có khả năng đọc nội dung file. Trong môi trường cần kiểm soát thông tin, điều này tốt hơn hẳn việc gửi file qua các dịch vụ lưu trữ tạm thời.
Không giới hạn dung lượng nhờ streaming
File nhận được ghi xuống đĩa ngay khi dữ liệu đến, thay vì giữ toàn bộ trong bộ nhớ. Với HTTPS, việc truyền file nhiều GB hầu như không tăng bộ nhớ sử dụng. Với HTTP thuần, FileSync rơi vào chế độ Blob và chỉ đáng tin cậy ở mức dưới 500 MB.
Gửi một lúc đến nhiều máy
Mỗi phòng có một link riêng và mã QR riêng. Người gửi chỉ cần kéo thả file, còn người nhận mở link là thấy file hiện ra. Bạn cũng có thể bật mật khẩu cho phòng trước khi chia sẻ link để hạn chế người lạ.
Kết nối xuyên mạng và tự lưu trữ
FileSync tự động dùng STUN để kết nối trực tiếp, rồi chuyển sang TURN relay nếu gặp NAT khó hoặc tường lửa chặn UDP. Phần mềm được đóng gói trong một Docker image duy nhất nên bạn có thể chạy trên VPS, NAS hoặc máy chủ nội bộ mà không cần tài khoản hay dịch vụ trung gian.
Hướng dẫn cài đặt và sử dụng FileSync như thế nào?

FileSync yêu cầu Docker và Docker Compose để chạy. Bạn cũng cần Python 3 chỉ để sinh chuỗi secret key, sau đó triển khai bằng một trong hai cách: HTTP cho mạng nội bộ hoặc HTTPS cho tên miền công khai.
Bước 1. Tạo secret key
Secret key dùng để ký thông tin TURN credential phục vụ NAT traversal. Hãy chạy lệnh sau:
python3 -c 'import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())'
Hãy dùng giá trị tự sinh, đừng dùng giá trị xuất hiện trong ví dụ.
Bước 2. Triển khai HTTP cho mạng nội bộ
- Tải file
deploy/docker-compose.ymltừ repository. - Thay cả hai chỗ
<SECRET_KEY>bằng secret key bạn vừa tạo, gồm biến môi trườngSECRET_KEYvà tham số--static-auth-secret. - Chạy
docker compose up -d. - Mở
http://localhosthoặchttp://IP-máy-chủtrong trình duyệt.
Cách này chỉ nên dùng trong mạng LAN, còn file lớn hơn 500 MB qua HTTP có thể không ổn định.
Bước 3. Triển khai HTTPS với Caddy
- Tải
deploy/docker-compose-ssl.ymlvàdeploy/Caddyfile. - Thay thế
<SECRET_KEY>tương tự như bước trên. - Trong Caddyfile, thay
yourdomain.combằng tên miền thật của bạn. - Chạy
docker compose -f docker-compose-ssl.yml up -d. - Mở
https://yourdomain.comđể bắt đầu dùng.
Caddy sẽ tự cấp và gia hạn chứng chỉ Let’s Encrypt. Muốn dừng FileSync, chạy docker compose down cho bản HTTP hoặc docker compose -f docker-compose-ssl.yml down cho bản HTTPS.
Các cổng mạng cần mở
Để FileSync hoạt động trên Internet, bạn cần mở các cổng sau trên firewall:
- Cổng 80/443 TCP cho giao diện web.
- Cổng 3478 TCP và UDP cho STUN/TURN để thiết lập kết nối ngang hàng.
- Dải 50000-50100 UDP cho TURN relay khi không thể kết nối trực tiếp.
Dải TURN chỉ cần cho khoảng 5-10% kết nối gặp NAT khó hoặc tường lửa chặn UDP.
Đối tượng phù hợp và hạn chế của FileSync

FileSync phù hợp với nhóm cần gửi file gấp, theo phiên ngắn hạn, không muốn người nhận phải tạo tài khoản. Ngược lại, nó không phải hệ thống lưu trữ file tập trung, không thay thế được Google Drive, NAS sync hay công cụ quản lý phiên bản tài liệu.
Trong trải nghiệm thực tế, cách chia sẻ qua phòng rất trực quan: kéo thả file, mở link là xong. Thế nhưng vì dữ liệu đến từ các trình duyệt ngang hàng, nếu bạn cần lưu trữ lâu dài, kiểm soát phiên bản, hoặc gửi file cho người dùng không quen công nghệ trong môi trường NAT phức tạp, bạn phải đánh đổi thời gian hỗ trợ kết nối.
Nên dùng khi: bạn là IT admin muốn tự triển khai trên hạ tầng riêng; nhân viên cần gửi file nội bộ cho nhiều máy; giáo viên phát tài liệu cỡ lớn trong lớp; hoặc sự kiện cần phân phối file đến nhiều thiết bị cùng lúc. Không nên dùng khi: bạn muốn một kho lưu trữ đám mây có thương hiệu, cần đồng bộ nhiều chiều, hoặc không sẵn sàng mở port TURN cho toàn bộ người dùng.
Câu hỏi thường gặp
FileSync có miễn phí không?
FileSync được phát hành theo giấy phép MIT, nghĩa là bạn có thể dùng miễn phí, sửa đổi và tự lưu trữ. Bạn chỉ cần trả chi phí cho máy chủ hoặc VPS nơi bạn chạy Docker image. Người nhận không phải trả phí hoặc cài ứng dụng.
FileSync có giới hạn dung lượng file không?
Về thiết kế, FileSync không giới hạn dung lượng. Khi chạy HTTPS, file stream thẳng xuống đĩa nên dù vài GB cũng không làm đầy bộ nhớ. Với HTTP, trình duyệt phải dùng Blob để lưu tạm trong bộ nhớ nên FileSync không đáng tin cậy cho file lớn hơn khoảng 500 MB.
FileSync có an toàn không?
File truyền trực tiếp giữa trình duyệt bằng WebRTC với mã hóa. Máy chủ chỉ khởi tạo kết nối và không thấy nội dung file. Bạn vẫn nên bật HTTPS, dùng mật khẩu phòng nếu cần và không chia sẻ link công khai cho dữ liệu nhạy cảm.
Người nhận có cần cài đặt phần mềm không?
Không. Người nhận chỉ cần mở link hoặc quét mã QR bằng trình duyệt hiện đại. File đi qua WebRTC nên không cần tài khoản, không cần plugin. Tuy nhiên, muốn nhận file cực lớn ổn định, họ cần dùng trình duyệt hỗ trợ Service Worker hoặc File System Access API.
Vì sao nên chạy FileSync bằng HTTPS?
HTTPS mở khả năng stream file trực tiếp xuống đĩa qua File System Access API hoặc Service Worker, giúp truyền file lớn an toàn hơn về bộ nhớ. Ngoài ra, Caddy trong hướng dẫn chính thức tự cấp chứng chỉ Let’s Encrypt nên bạn không cần xử lý thủ công.
Kết luận
Nếu bạn cần truyền file thời gian thực theo kiểu một phòng, nhiều người nhận, FileSync là repo đáng để thử nhờ thiết kế gọn, tự lưu trữ dễ dàng và không thu thập dữ liệu file. Bạn có thể bắt đầu ngay bằng việc tải docker-compose, sinh secret key và chạy thử trong mạng LAN, sau đó nâng lên HTTPS nếu muốn dùng cho Internet. Đừng quên ghé thăm FileSync trên GitHub để đọc mã nguồn và theo dõi các phát hành tiếp theo.

