FilePizza: envía archivos de gran tamaño directamente desde tu navegador
Si sigues el blog, sabrás que enviar archivos grandes sin pasar por correo, memorias USB o servicios que te obligan a subir primero el contenido a la nube es un tema que hemos tratado ampliamente.
Hoy toca hablar de otra alternativa que merece un hueco en tu caja de herramientas: FilePizza.
Su lema lo dice todo: transferencias de archivos peer-to-peer en tu navegador.
¿Qué es FilePizza?
FilePizza es una aplicación web gratuita y de código abierto que permite enviar archivos de un navegador a otro sin que el contenido pase ni se almacene en ningún servidor intermedio. Fue creada por Alex Kern y Neeraj Baid en la Universidad de California en Berkeley (cuentan que mientras comían una pizza Sliver, de ahí el nombre).
El proyecto está alojado en GitHub, cuenta con más de 10.000 estrellas y se distribuye bajo licencia BSD de 3 cláusulas. Existe una instancia pública en file.pizza lista para usar, pero también puedes montar la tuya propia.
¿Cómo funciona? WebRTC de nuevo
Igual que en mis artículos sobre WebWormhole y Toffeshare, el secreto es WebRTC, la API de comunicación en tiempo real que incorporan los navegadores modernos y que permite conectar dos dispositivos de igual a igual (peer-to-peer, p2p).
La diferencia con los servicios tradicionales es clara:
| Servicio tradicional | WebRTC (P2P) |
|---|---|
| Subes el archivo al servidor | El archivo sale directamente de tu navegador |
| El receptor lo descarga del servidor | El receptor lo recibe directamente de tu navegador |
| Tu archivo queda almacenado en un tercero | No se almacena en ningún servidor intermedio |
| Hay que esperar a que termine la subida | La transferencia empieza en cuanto el receptor abre el enlace |
Al eliminar el paso previo de subida, la transferencia es más rápida y más privada.
Cómo enviar un archivo con FilePizza
El uso es muy sencillo:
- Entra en file.pizza.
- Arrastra uno o varios archivos al recuadro (o pulsa para seleccionarlos).
- FilePizza genera un enlace, uno largo y otro corto, que puedes copiar y compartir por el medio que prefieras.
- Quien reciba el enlace lo abre en su navegador y la descarga comienza directamente desde tu equipo.
- Mantén tu pestaña abierta hasta que la transferencia termine.
Como ves, aquí no hay frases secretas ni códigos QR como en WebWormhole: basta con compartir una URL.
Características de FilePizza
La segunda versión del proyecto incorpora mejoras importantes:
- Nueva interfaz con modo oscuro.
- Compatible con la mayoría de navegadores móviles, incluido Safari en iOS.
- Transferencias directas entre el navegador de quien envía y el de quien recibe, con handshakes más rápidos.
- El que envía puede ver el progreso y detener la transferencia cuando quiera.
- Protección con contraseña y sistema de reportes para mayor seguridad.
- Varios archivos a la vez: quien descarga los recibe en un único archivo ZIP.
- Descargas en streaming mediante Service Worker.
- Almacenamiento opcional del estado del servidor con Redis.
Preguntas frecuentes
Estas son las respuestas de los propios creadores en su FAQ, que merece la pena tener presentes:
- ¿Qué tamaño pueden tener los archivos? El que tu navegador pueda manejar. No hay un límite impuesto por el servicio.
- ¿Pueden descargar varias personas a la vez? Sí, basta con compartir el enlace con todas ellas.
- ¿Qué pasa si cierro el navegador? Los enlaces dejan de funcionar. Si alguien ya había completado la descarga, seguirá compartiendo con los que aún no hayan terminado, pero no se podrán iniciar descargas nuevas.
- ¿Está cifrado? Sí. Las comunicaciones WebRTC se cifran automáticamente con DTLS, y además puedes añadir una contraseña opcional a tu envío.
Alójalo tú mismo: FilePizza con Docker
Una de las ventajas de ser software libre es que puedes autoalojarlo. El repositorio incluye un Dockerfile y ficheros docker-compose. Estos son los comandos que indica el proyecto alojado en Github:
git clone https://github.com/kern/filepizza.git
cd filepizza
pnpm install
# Modo desarrollo
pnpm dev
# Compilar y ejecutar
pnpm build
pnpm start
# Con Docker
pnpm docker:build
pnpm docker:up
pnpm docker:down
El servidor se personaliza con variables de entorno, entre ellas:
| Variable | Para qué sirve |
|---|---|
REDIS_URL |
Instancia de Redis para guardar los metadatos de los canales. Si no se define, usa memoria. |
COTURN_ENABLED |
Con valor true, activa TURN para conectar equipos detrás de NAT. |
TURN_HOST / TURN_REALM
|
Servidor y realm TURN. |
STUN_SERVER |
Servidor STUN a usar cuando TURN no está activado. |
PEERJS_HOST / PEERJS_PATH
|
Servidor PeerJS propio, si no quieres usar el predeterminado. |
Si te interesa la parte técnica: está construido con Next.js, React, TypeScript, Tailwind y PeerJS para la capa WebRTC.
Ten en cuenta
Como en cualquier servicio p2p, hay detalles prácticos que conviene conocer:
- Quien envía debe mantener la pestaña abierta y el equipo encendido mientras dure la transferencia. Si el emisor se desconecta, el enlace deja de funcionar.
- Aunque el contenido de los archivos no pasa por servidores, para que los dos navegadores se encuentren hace falta un servicio de señalización (PeerJS) y un servidor STUN. Con la instancia pública se usan los predeterminados del proyecto; si quieres controlar también esa parte, la solución es autoalojarlo.
- La velocidad dependerá siempre de la conexión de subida de quien envía.
- Para archivos realmente importantes, conserva siempre una copia de seguridad: no hay copia en la nube a la que recurrir si algo se interrumpe.
FilePizza frente a otras alternativas p2p
Ya hemos visto varias herramientas basadas en WebRTC en el blog. Cada una tiene su punto fuerte:
| FilePizza | WebWormhole | Toffeshare | |
|---|---|---|---|
| Cómo se conectan | Enlace (URL) | Frase única y código QR | Enlace |
| Varios archivos | Sí, descarga en ZIP | Sí | Un archivo cada vez (o comprimido previamente) |
| Contraseña opcional | Sí | No | No |
| Varios receptores | Sí | Conexión entre dos dispositivos | — |
| Autoalojable | Sí (Docker) | — | — |
| Extra | Modo oscuro, progreso y cancelación | Extensiones para Chrome y Firefox, transferencia en ambos sentidos | Aplicación para Android |
Mi recomendación: FilePizza si quieres compartir un enlace con una o varias personas, y WebWormhole si prefieres emparejar dos dispositivos propios con una frase o un QR.
Más herramientas para enviar archivos de gran tamaño gratis
Este tema da para mucho. Si FilePizza no te convence o necesitas alternativas que no sean p2p puro, repasa estas publicaciones:
- WebWormhole: realizar envíos de archivos sin intermediario entre dispositivos
- Compartir archivos con Toffeshare
- LocalSend: comparte archivos a dispositivos cercanos
- Envío de archivos de gran tamaño
- Envío de archivos de gran tamaño parte II
- Envío de archivos de gran tamaño parte III
Y puedes ver todas las entradas de la categoría Compartir archivos.
Conclusión
FilePizza demuestra que para enviar un archivo grande a otra persona no hace falta subirlo a ningún sitio: con un navegador, un enlace y WebRTC es suficiente. Es gratuito, de código abierto, funciona en móvil y escritorio, admite contraseña y, si quieres tener el control total, puedes desplegarlo en tu propio servidor.
Ya sabes: la próxima vez que un correo electrónico te rechace un adjunto, tienes una pizza esperando. 🍕
Enlaces de interés
- Sitio oficial: file.pizza
- Repositorio: github.com/kern/filepizza
- Tecnología: WebRTC