Blaze - A P2P File Sharing Web App

Transfer files quickly between devices using the self-hosted Blaze. A P2P file sharing web app.

Blaze - A P2P File Sharing Web App

As someone who finds themselves frequently needing to share files between multiple devices, I was excited to try out Blaze, a web app that promises to simplify the file sharing process. After using it for a few days, I have to say that it definitely lives up to the hype.

What is Blaze?

Blaze is a progressive web app that can be accessed directly through your browser. Additionally, Blaze can initiate one-to-one and many-to-many file transfers, meaning that you can share files with multiple people at once, making group projects or team collaborations a breeze. In short, Blaze is a versatile web app that allows for quick and efficient file sharing without any extra hassle.

Install Blaze using Docker

A docker-compose.yml file is present at the root of the project repo which runs both the server and client containers and sets up a proxy for WebSocket connections on the frontend in Nginx configuration. To run using docker-compose:

git clone https://github.com/blenderskool/blaze

cd blaze docker-compose up -d

The default settings places the web app on port 80 but this can easily be changed in the Docker Compose file.

version: '3'
services:
  blaze-server:
    build:
      context: .
      dockerfile: ./server/Dockerfile
    environment:
      TRUST_PROXY: 1
    ports:
      - 3030:3030

  blaze-client:
    build:
      context: .
      dockerfile: ./client/Dockerfile
      args:
        TORRENT_SIZE_LIMIT: 3000000
        WS_SIZE_LIMIT: 1000000      
    ports:
      - 8091:80
    depends_on:
      - blaze-server
    volumes:
      - ./nginx/compose-nginx.conf:/etc/nginx/nginx.conf

This is not a standalone Docker Compose file so don't try running it as such.

If you decide to change the file size limit over 700mb, be prepared for ridiculously slow transfer speeds. You have been warned. I recommend removing the following lines from the compose file:

      args:
        TORRENT_SIZE_LIMIT: 3000000
        WS_SIZE_LIMIT: 1000000  

Blaze primarily utilizes WebTorrent and WebSockets protocol to perform file transfers, and it also has a fallback mode. Files shared via WebTorrent are peer-to-peer, allowing for direct transfer between the sender and receiver without the need for an intermediate server. This method of file sharing uses WebRTC internally for security but does require the use of tracker servers to carry metadata and facilitate the file transfer. This may not sound important, but it means that you can securely share files with others without worrying about outsiders accessing your personal information.

I also found that Blaze works decently across different networks and devices. Whether I was using it on my laptop, phone, or tablet, I was able to transfer files quickly and without difficulty. It was particularly useful when working remotely, as there were no issues getting files to and from other team members.

I appreciate that I don't need to create an account or signup to use Blaze. This makes it an even more convenient option compared to other file sharing apps that require extensive sign-in procedures.

While Blaze has many positive aspects, there are a few potential negative things to consider:

Limited File Size: Although Blaze has no restrictions on the number of files you can share, there is a limit to the size of the files you can transfer. The file size limit is 667mb, which may not be enough for some users who need to transfer larger files. This can be changed however in when hosting locally using the environment variables through Docker Compose.

Privacy Concerns: While Blaze uses WebTorrent and WebSockets protocols for file sharing, which are secure and encrypted, there is always a risk when sharing files with others online. Additionally, Blaze uses tracker servers to facilitate file transfer, meaning that some metadata may be available to third-party services.

Network Dependency: Blaze relies on a stable internet connection to perform file transfers successfully. If you're in an area with slow internet or no internet access, you won't be able to use Blaze at all.

Limited Features: Although Blaze is an easy-to-use file sharing app, its simplicity means that it doesn't have some advanced features that other file sharing apps may offer. For example, it does not support automatic synchronization or collaboration tools found in other applications.

📧
We review self-hosted apps and more just like this. Consider subscribing for free to get them delivered to your inbox!

Final Notes and Thoughts

Blaze offers a straightforward and effective way to transfer files, it may not be the best option for users who need to share large files, require advanced features, or prioritize privacy above all else.

This project might remind you of a similar app called SnapDrop.

If you find Blaze to be useful. Hop on over to the Blaze Github repo and give it a star!