Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RootShare

RootShare is a lightweight, self-hosted file and clipboard sharing tool.

It runs a small server on your own machine. Devices on the same network connect directly at full LAN speed. If you need to share outside your network, RootShare can create a temporary Cloudflare Tunnel.

Nothing is stored beyond the lifetime of the process. When you stop the server, the room, its files, clipboard, and public links are removed.

Features

  • Upload and download files
  • Drag-and-drop file uploads
  • Delete uploaded files
  • Live shared clipboard across every connected device
  • Rooms identified by a 5-character code with an optional password
  • QR code for joining from a phone
  • Same-network and internet sharing links
  • Single command to start sharing

Requirements

  • Node.js 18 or newer

cloudflared is downloaded automatically the first time you run npm install. If the download fails or your platform isn't supported, RootShare will continue to work on your local network, but internet sharing will be unavailable.

Installation

npm install
npm start

During npm install, RootShare also downloads cloudflared in the background. When successful, you'll see a message similar to:

[rootshare] cloudflared installed at ...

If the download fails, see the Troubleshooting section below.

npm start starts the local server at:

http://localhost:5858

Open it in your browser to create or join a room.

CLI Usage

node bin/share.js

Or, after running npm link:

share

This command:

  • Starts the server
  • Creates a room
  • Prints a same-network link
  • Starts a Cloudflare Tunnel (if available)
  • Prints an internet link
  • Opens the local link in your browser

Press Ctrl+C to stop the server. All room data and links are removed immediately.

Sharing Links

Same-network link

Use this when devices are connected to the same Wi-Fi or LAN.

Files are transferred directly between devices at local network speed and do not use your internet connection.

Internet link

The internet link uses a temporary Cloudflare Tunnel.

Transfer speed depends on your internet upload speed rather than your LAN speed. For large local transfers, always use the same-network link.

The room page displays both links (when available) and lets you generate a QR code for either one.

Desktop App

npm run electron

The desktop app:

  • Starts the server
  • Checks for cloudflared
  • Starts a Cloudflare Tunnel if available
  • Opens the room page automatically

If cloudflared isn't available, it simply opens the same-network version.

Building Installers (standalone GUI only app)

npm run dist:win      # Windows (.exe)
npm run dist:mac      # macOS (.dmg)
npm run dist:linux    # Linux (.AppImage and .deb)

Before building installers, run:

node scripts/install-cloudflared.js

This downloads the appropriate cloudflared binary into:

bin/cloudflared/

electron-builder automatically bundles everything in this directory.

If cloudflared has already been downloaded during npm install, you can skip this step.

Project Layout

server/      Express + Socket.IO server
scripts/     cloudflared installer script
bin/         CLI entry point (share)
electron/    Desktop application
public/      Frontend assets

Troubleshooting

cloudflared was not installed during npm install

If the automatic download fails, RootShare still works on your local network.

You can install cloudflared manually from:

and then store it in /bin/cloudflared/

npm start doesn't show an internet link

This is expected.

npm start only starts the local server.

To automatically create a room and start a Cloudflare Tunnel, use:

node bin/share.js

or, if installed globally:

share

Windows portable (win-unpacked) build doesn't start tunnels

The unpacked executable:

dist/win-unpacked/RootShare.exe

does not use the bundled cloudflared binary the same way as the installed application.

Install RootShare using the generated installer instead:

dist/RootShare Setup x.x.x.exe

Then launch it from the Start menu or a desktop shortcut.

macOS unpacked builds have not yet been tested for this behavior.


Cross-platform builds

install-cloudflared.js only downloads the binary for the operating system it is run on.

For example:

  • Windows → cloudflared.exe
  • macOS → macOS binary
  • Linux → Linux binary

If you build for another platform using the wrong binary, the packaged application won't be able to start a Cloudflare Tunnel.

Run:

node scripts/install-cloudflared.js

on each target operating system before building installers.

Contributions & Issues

Contributions are welcome! If you find a bug or want to suggest an improvement, please get involved:Report Issues: Open an Issue to report bugs or request features.Submit Code: Create a Pull Request to contribute fixes or features.

License

This project is licensed under the MIT License.

Thank you for your time and interest in this project.

About

Lightweight self-hosted file and clipboard sharing over a temporary cloudflare tunnel

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages