This guide teaches you how to easily and securely transfer files between any devices using Piping Server from command line and via a web browser. You can transfer any kind of data infinitely with Piping Server. It could be a directory, a text file, an audio, video, or anything. Also, It doesn't matter which OS or device you're using. Sharing files with Piping Server is quite easy and straight forward.

A brief introduction to Piping Server

Piping Server is a free web service used to share any data between any devices over HTTP/HTTPS. The data can be transferred either from the Terminal using curl program or via a web UI. No sign-up or registration required! You don't even need to install any extra software. All you need is either curl command line program or a modern web browser, which are pre-installed in most operating systems.

The Piping Server transfers the data securely with end-to-end encryption. It never stores your data in any central location or public cloud. Piping Server uses peer-to-peer method to relay data from one device to anther.

It can able to share data between multiple devices at the same time. Just send a file from one device and receive it from multiple devices. If a file or folder is too big to share, simply compress it and send it.

The developer has also created a few more applications and scripts that uses Piping Server:

  • Text stream chat
  • Share Drawing via Piping Server with End-to-End Encryption
  • Terminal screen sharing
  • Piping UI - A web interface to easily and securely share data between devices over HTTPS
  • Piping-ssh-web - SSH over HTTPS via Piping Server on Web browser
  • Piping-vnc-web - VNC over pure HTTPS via Piping Server

The link to the aforementioned applications are given in the Piping Server main GitHub repository.

Transfer files between any devices using Piping Server from commandline

Sharing files between multiples devices with Piping Server is very easy! First, we will see how to share data between two systems using curl program.

For example, I am going to share a text file named ostechnix.txt from my Fedora system and receive it in Ubuntu system.

On the sender node (i.e. Fedora in my case), type the following command to share the file:

$ curl -T ostechnix.txt

Now go to the receiver node (i.e. Ubuntu in my case) and download the file using command:

$ curl > ostechnix.txt

It's that simple. The file will be downloaded in the current directory.

Transfer Files Between Any Devices Using Piping Server In LinuxTransfer Files Between Any Devices Using Piping Server In Linux

Here, is the file upload URL. You can use different secret path at the end of this URL. For example, the secret path can be /mymessage or /text123 or anything you want. A sender and receivers who specify the same path can transfer. Both the sender and the recipient can start the transfer first. The first one waits for the other.

You can also pipe the contents of a text file and then share it. On the sender node, run the following command to share a text file named ostechnix.txt:

$ cat ostechnix.txt | curl -T -

Go to the receiver node and get the above text file using command:

$ curl > ostechnix.txt

As soon as the receiver run the above command in his/her, the shared file will start to download in their system.

Here is the sample output. I've shared the oxtechnix.txt file from my Ubuntu system to the Fedora system via Terminal.

imgTransfer Files Between Any Devices Using Piping Server

Transfer directories using Piping Server

If you want to share a directory, just archive or compress it and share it.

Archive a directory using tar and share it using Piping Server:

$ tar zfcp - ~/mydirectory | curl -T -

Compress a directory using zip and share it using Piping Server:

$ zip -q -r - ~/mydirctory | curl -T -

Share text

As stated already, you can send any kind of data, even text messages. Let us share a text message between two systems.

On the sender node, type the following:

$ echo "Welcome to OSTechNix" | curl -T -

On the receiving node, you can get this message by typing the following command:

$ curl

imgShare text between systems using piping server

Quite easy, isn't it? It comes handy when sharing URLs and clipboard between systems.

If you want to append the text message to a file, simply do:

$ curl > ostechnix.txt

The above command will save the text in a text file instead of printing in the standard output.

Encrypt files

To encrypt and send files with Piping Server, run:

$ cat ostechnix.txt | openssl aes-256-cbc | curl -T -

To decrypt and download the file:

$ curl | openssl aes-256-cbc -d

Transfer files to multiple receivers using Piping Server

In the above cases, we shared the file to only one recipient. As soon as the recipient, the download link will expire, so you can't download the same file from any other devices.

Even if someone tries to access that file, they will get the following message:

$ curl
[ERROR] The number of receivers has reached limits.

If you want to transfer files to more than receivers, for example 5, use ?n=5 parameter at the end of the URL like below:

$ cat ostechnix.txt | curl -T -

Now the above file can be accessed by 5 recipients (or 5 times in a system) using the following URL:

$ curl

Please note the URL. You must give the exact URL as mentioned in the sender's node. After the file is received by all receivers, the link you will see a successful message in the senders node:

[INFO] Waiting for 5 receiver(s)...
[INFO] A receiver was connected.
[INFO] A receiver was connected.
[INFO] Start sending to 5 receiver(s)!
[INFO] Sent successfully!
[INFO] All receiver(s) was/were received successfully.

Transfer files using Piping Server via web browser

If you don't want to receive the file via Terminal, just copy the download URL and paste it in your browser's address bar to download it.

Transfer files using Piping Server via web browser

Transfer files from Piping Server Web UI

As mentioned already, you can send and receive them either via terminal or a web browser in Unix-like operating systems. If you are not comfortable with command line options or if you are suing other operating systems like Windows, you can use the Piping Server's web UI for transferring files. Piping Server has the following two web interfaces for those who prefers GUI over CLI:

  2. (a more modern UI with encryption option)

Go to any one of the above links and choose the file you want to share, enter the secret path, and click Send button. If you use the second UI (i.e. piping-ui), there is an option to password-protect files. Now a file upload URL will be generated. You can use this URL to download the file from any system.

Transfer files from Piping Server Web UITransfer files from Piping Server Web UI

To download the file, just paste the URL which you copied in the earlier step in GET tab in Piping Server web interface. You may need enter the passphrase to unlock and download the file.

Install Piping Server Locally

Currently, a few public servers are maintained by the Piping Server developer(s) to transfer files. You can also self-host it using docker or using the portable executable file.

If you prefer to use Docker, run the following command to run a local Piping Server instance:

$ docker run -p 8080:8080 nwtgck/piping-server

Point your web browser to http://localhost:8080 URL to access the Piping Server.

if you prefer to use portable executable file, download its latest version from the official releases page:

$ wget

Make it executable:

$ chmod +x piping-server-linux

And run the Piping Server local instance with command:

$ ./piping-server-linux

You can now access the Piping Server web UI from URL http://ip-address:8080.

Self Host Piping ServerSelf Host Piping Server

There are also a few more ways to deploy Piping Server in your local machine. Refer the project's GitHub link to know how.

Getting help

To display Piping Server help section, run:

$ curl

Reproduced From


Related read: