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.
Table of Contents
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 https://ppng.io/ostechnix
Now go to the receiver node (i.e. Ubuntu in my case) and download the file using command:
$ curl https://ppng.io/ostechnix > ostechnix.txt
It's that simple. The file will be downloaded in the current directory.
Here, https://ppng.io/ostechnix
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 - https://ppng.io/ostechnix
Go to the receiver node and get the above text file using command:
$ curl https://ppng.io/ostechnix > 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.
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 - https://ppng.io/ostechnix
Compress a directory using zip
and share it using Piping Server:
$ zip -q -r - ~/mydirctory | curl -T - https://ppng.io/ostechnix
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 - https://ppng.io/ostechnix
On the receiving node, you can get this message by typing the following command:
$ curl https://ppng.io/ostechnix
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 https://ppng.io/ostechnix > 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 - https://ppng.io/ostechnix
To decrypt and download the file:
$ curl https://ppng.io/ostechnix | 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 https://ppng.io/ostechnix [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 - https://ppng.io/ostechnix?n=5
Now the above file can be accessed by 5 recipients (or 5 times in a system) using the following URL:
$ curl https://ppng.io/ostechnix?n=5
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 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:
- https://ppng.io/
- https://piping-ui.org/ (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.
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 https://github.com/nwtgck/piping-server-pkg/releases/download/v1.1.0/piping-server-linux
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
.
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 https://ppng.io/help
Resource:
Related read:
- Share Files Between Multiple Devices Using Snapdrop Via Web Browser
- Share Files Between Linux Desktops With Warpinator
- PSiTransfer – A Simple Open Source Self-hosted File Sharing Solution
- How to Setup A Basic File server Using simpleHTTPserver
- An Easy And Fast Way To Share Files Over Internet From Command Line
- OnionShare – Share Files Of Any Size Securely And Anonymously
- AirDroid – Access and manage your Android device from Computer