Skip to content

Splash02/sTransfer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sTransfer

sTransfer is an end-to-end encrypted file transfer application designed for transferring files of any size between multiple users.

Unlike traditional file sharing services, files are not uploaded to or stored on a central file hosting service. Instead, encrypted data is forwarded through a relay server, allowing reliable transfers without requiring users to configure port forwarding or deal with NAT traversal issues.

Features

  • Browser Support: Use sTransfer directly from your browser via sTransfer.net
  • End-to-end encrypted file transfers
  • No server-side file storage (zero-knowledge relay)
  • No file size limits
  • Room-based file sharing with multiple participants per room
  • Simultaneous transfers to multiple recipients
  • Works out of the box using the public relay server
  • Support for self-hosted relay servers
  • Dark mode support
  • Available as Web, GUI, and CLI applications

Screenshots

Main Screen (Light Mode)

Main Screen Light

Main Screen (Dark Mode)

Main Screen Dark

Room View

Room View

Settings

Settings View


How It Works

  1. Start sTransfer.
  2. Choose a username.
  3. Host a room.
  4. Share the Room ID with other users.
  5. If a room password is configured, participants must enter it before joining.
  6. Drag and drop files into the room or select them using the file browser.
  7. Files are transferred to the selected participants.

Note: All transferred data is end-to-end encrypted. The relay server only forwards encrypted packets and cannot access the transferred data.


Downloads

Each release contains multiple builds depending on your preferred interface and OS.

Web Version

You can use the fully functional browser version at sTransfer.net. It works everywhere, including on smartphones (Android/iOS), without having to install any app.

GUI Versions

These are the standard desktop applications with a graphical user interface.

  • sTransfer-win-x64.zip
  • sTransfer-linux-x64.zip
  • sTransfer-osx-arm64.app.zip
  • sTransfer-osx-x64.app.zip

CLI Versions

These versions run entirely in the terminal and provide the same functionality as the GUI version.

  • sTransfer-cli-win-x64.zip
  • sTransfer-cli-linux-x64.zip
  • sTransfer-cli-osx-arm64.app.zip
  • sTransfer-cli-osx-x64.app.zip

Differences compared to the GUI version:

  • All incoming files are accepted automatically.
  • No graphical user interface.
  • Same encryption and transfer functionality.

To display all available commands, enter:

/help

Relay Server

These packages contain the standalone relay server if you wish to host your own.

  • sTransfer-server-win-x64.zip
  • sTransfer-server-linux-x64.zip
  • sTransfer-server-osx-arm64.app.zip
  • sTransfer-server-osx-x64.app.zip

Hosting Your Own Relay Server

Start the server from a terminal:

./sTransferServer

Default Ports

The server listens on two protocols simultaneously:

Protocol Port Supported Clients
Raw TCP 5001 Desktop GUI, CLI
WebSockets 5002 Web, Desktop GUI, CLI

Custom Ports & Disabling Ports

You can specify custom ports when starting the server. The first argument is the TCP port, the second is the WebSocket port:

./sTransferServer 7400 7401

If you want to disable a protocol completely, pass closed as the argument. For example, to disable raw TCP and only use WebSockets on port 5002:

./sTransferServer closed 5002

Make sure the active ports are accessible through your firewall and router configuration.

Secure WebSockets (WSS) & Reverse Proxies

To use Secure WebSockets (wss://), which is required when hosting the web client on HTTPS, you should run a reverse proxy (like Caddy, Nginx, or Apache) in front of the sTransfer server. The reverse proxy handles the SSL certificate on port 443 and forwards the internal traffic to the sTransfer WebSocket port (e.g. 5002).

Example Caddyfile:

api.yourdomain.com {
    reverse_proxy localhost:5002
}

Clients can then connect securely via wss://api.yourdomain.com.


Connecting To A Custom Relay Server

In the GUI Client, open Settings. In the CLI Client, use the /server command.

  1. Server Address:
    • For Raw TCP: Enter the IP (e.g. 99.88.77.66).
    • For WebSockets: Enter the IP or Domain with the protocol (e.g. ws://99.88.77.66 or wss://api.yourdomain.com).
  2. Server Port: Enter the port. This is required for all protocols.
    • For standard Raw TCP: 5001
    • For direct WebSockets: 5002
    • For Secure WebSockets (WSS) via reverse proxy: 443

Additionally, the server's public keys must be added to the known_hosts.json file. The server's public keys can be found in the directory of the server file after you ran it once. X and Y are the public keys, D must remain private.

Configuration Path

  • Windows: %AppData%\sTransfer\known_hosts.json
  • Linux: ~/.config/sTransfer/known_hosts.json
  • macOS: ~/Library/Application Support/sTransfer/known_hosts.json

Example Configuration

{
  "99.88.77.66": "base64StringX|base64StringY",
  "wss://api.yourdomain.com": "base64StringA|base64StringB"
}
  • The key in the JSON must exactly match the Server Address you entered in the client.
  • base64StringX is the first public key.
  • base64StringY is the second public key.
  • The keys must be separated using a pipe character (|).

After saving the known_hosts.json file, the client will connect to your custom relay server.


Security

All file transfers are strictly end-to-end encrypted.

The relay server functions entirely as a traffic forwarder. It has no access to cryptographic keys and cannot read transferred files, room passwords, or any other metadata or communication contents passing through it.

About

A free peer to peer file transfer tool with unlimited file size!

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors