filepizza README

The project's README from github.com/kern/filepizza. As one markdown file: README.md.

XKCD 949 FilePizza wordmark

Peer-to-peer file transfers in your browser

Cooked up by Alex Kern & Neeraj Baid while eating Sliver @ UC Berkeley.

Using WebRTC, FilePizza eliminates the initial upload step required by other web-based file sharing services. Because data is never stored in an intermediary server, the transfer is fast, private, and secure.

A hosted instance of FilePizza is available at file.pizza.

What's new with FilePizza v2

Development

$ git clone https://github.com/kern/filepizza.git
$ pnpm install
$ pnpm dev
$ pnpm build
$ pnpm start

Running with Docker

$ pnpm docker:build
$ pnpm docker:up
$ pnpm docker:down

Stack

Configuration

The server can be customized with the following environment variables:

FAQ

How are my files sent? Your files are sent directly from your browser to the downloader's browser. They never pass through our servers. FilePizza uses WebRTC to send files. This requires that the uploader leave their browser window open until the transfer is complete.

Can multiple people download my file at once? Yes! Just send them your short or long URL.

How big can my files be? As big as your browser can handle.

What happens when I close my browser? The URLs for your files will no longer work. If a downloader has completed the transfer, that downloader will continue to seed to incomplete downloaders, but no new downloads may be initiated.

Are my files encrypted? Yes, all WebRTC communications are automatically encrypted using public-key cryptography because of DTLS. You can add an optional password to your upload for an extra layer of security.

License & Acknowledgements

FilePizza is released under the BSD 3-Clause license. A huge thanks to iblowyourdesign for the pizza illustration.

filepizza (kern/filepizza)

Searching Database…

10.3K ·GitHub
Что это такое?FilePizza — это бесплатное веб-приложение для обмена файлами напрямую между браузерами (peer-to-peer): выбираете файл, делитесь ссылкой, и получатель скачивает его прямо с вас. Есть также размещённый экземпляр на file.pizza.
Чем это отличается от сайтов для обмена файлами вроде WeTransfer?Здесь нет этапа предварительной загрузки: WebRTC передаёт файл напрямую из вашего браузера в браузер скачивающего, поэтому данные не хранятся на промежуточном сервере. Благодаря этому передача идёт быстро, приватно и безопасно.
Как отправить кому-нибудь файл?Откройте file.pizza (или свой экземпляр), выберите один или несколько файлов и отправьте короткую или длинную ссылку, которую сервис сгенерирует. Тот, кто откроет ссылку, скачает файлы напрямую; несколько файлов приходят одним zip-архивом.
Можно ли пользоваться прямо в браузере, в том числе с телефона?Да — ничего устанавливать не нужно и аккаунт не требуется: с обеих сторон достаточно современного браузера. Интерфейс v2 работает в большинстве мобильных браузеров, включая Mobile Safari.
В чём подвох — можно ли закрыть вкладку после того, как отправил ссылку?Нет: окно браузера должно оставаться открытым, пока передача не завершится, а его закрытие отключает ссылки. Те, кто уже скачал файл, могут раздавать его остальным, не докачавшим, но новые скачивания начаться не смогут.
Можно ли поднять свой сервер FilePizza?Да — это приложение на Next.js/TypeScript, которое можно запустить через npm или Docker Compose (в compose-настройке входят Redis и TURN-сервер coturn). Redis необязателен: без него состояние сервера хранится в памяти.
Мои файлы шифруются при передаче?Да — весь трафик WebRTC автоматически шифруется по схеме с открытым ключом через DTLS, а для дополнительной защиты к загрузке можно добавить пароль.
Могут ли несколько человек скачивать мой файл одновременно?Да — просто отправьте одну и ту же короткую или длинную ссылку всем, кому нужен файл; ограничения в один скачивающий нет.
Есть ли ограничение на размер файла?FilePizza никаких ограничений не ставит: файл может быть настолько большим, насколько выдержит ваш браузер. Можно загружать и сразу несколько файлов — скачивающие получат их одним zip-архивом.
Почему два участника могут не соединиться — зачем нужен TURN?WebRTC не всегда может пробиться через строгий NAT. При самостоятельном развёртывании можно задать COTURN_ENABLED=true, чтобы передавать трафик через TURN-сервер; по умолчанию FilePizza использует публичный STUN-сервер Google.
На чём построен FilePizza?Стек версии v2 — это Next.js, React, TypeScript и Tailwind, где PeerJS отвечает за WebRTC, опциональный Redis хранит состояние сервера, а скачивание идёт через Service Worker.
Creator
kern
Size
8.1 MB
Stars
10.3K
Updated
CommitJan 31
Age
11y
Commits · 90 Days