Piping Server

by nwtgck

GitHub Readme.md

Piping Server

npm CodeFactor CircleCI Build status GitHub Actions Docker Automated build Dependabot Status

Deploy

Streaming Data Transfer Server over HTTP/HTTPS

Piping Server transfer

How to transfer data?

Suppose a Piping Server is running on https://piping.ml. You can send "hello.txt" to a receiver.

# Send
cat hello.txt | curl -T - https://piping.ml/mysecret
# Get
curl https://piping.ml/mysecret > myhello.txt

Multiple Transfer

Piping Server supports multiple receiver. The following moving image is an example. Use query parameter "?n=3" to allow 3 receivers for example.

Piping Server multiple transfer

Web UI

Piping UI: https://piping-ui.org
GitHub repository: https://github.com/nwtgck/piping-ui-web

Design Philosophy

Piping Server is designed to realize the following ideas.

  1. No account
  2. No installation
  3. Never store data
  4. Engineer friendly

Usually, when you want to send data to someone, you need to have an account in the common service among you and his/her. In addition, the service may require you to install specific software to share the data.

Piping Server is designed to solve the problems above. Piping Server allows you to use without any account and frees you from additional software installation because the server is available with Web browsers, curl and wget commands, which are widely pre-installed in Unix-like OS. Because of HTTP/HTTPS, users can send data across different devices such as Windows, macOS, Unix, Linux, iOS, Android and any device which uses HTTP. Furthermore, pipe in Unix-like OS allows you to send data in a more efficient and secure way.

Engineer Friendly Help

You can get help and version only with curl!

curl piping.ml/help
curl piping.ml/version

Run server

Heroku deployment

Click the button below to deploy a Piping Server to Heroku.

Deploy

Run server on localhost

# Install
npm install -g piping-server
# Run a server
piping-server

Then, a Piping Server is running on http://localhost:8080.

Command-line Options

Here is available command-line options by piping-server --help.

Options:
  --help          Show help                                            [boolean]
  --version       Show version number                                  [boolean]
  --http-port     Port of HTTP server                            [default: 8080]
  --enable-https  Enable HTTPS                                  [default: false]
  --https-port    Port of HTTPS server                                  [number]
  --key-path      Private key path                                      [string]
  --crt-path      Certification path                                    [string]

Run on Docker

Run a Piping Server on http://localhost:8181 by the following command.

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

You can also specify an option like the following.

docker run -p 8181:80 nwtgck/piping-server --http-port=80

You can run a server in background and it automatically always restarts.

docker run -p 8181:80 -d --restart=always nwtgck/piping-server --http-port=80

More about Piping Server

Ecosystem around Piping Server · nwtgck/piping-server Wiki
This contains end-to-end encrypted chat/file transfer/screen sharing/voice chat/drawing share and some English and Japanese posts.

Piping Server is simple and streams any kind of data, not limited to a file.