• Stars
    star
    2,759
  • Rank 16,505 (Top 0.4 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Infinitely transfer between every device over pure HTTP with pipes or browsers

Piping Server

npm CodeFactor Build status GitHub Actions Docker Automated build

Infinitely transfer between every device over HTTP/HTTPS
Piping Server hello

Transfer

Piping Server is simple. You can transfer as follows.

# Send
echo 'hello, world' | curl -T - https://ppng.io/hello
# Get
curl https://ppng.io/hello > hello.txt

Piping Server transfers data to POST /hello or PUT /hello into GET /hello. The path /hello can be anything such as /mypath or /mypath/123/. 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 use Web UI like https://ppng.io on your browser. A more modern UI is found in https://piping-ui.org, which supports E2E encryption.

Stream

The most important thing is that the data are streamed. This means that you can transfer any data infinitely. The demo below transfers an infinite text stream with seq inf.

infnite text stream

Ideas

Piping Server is designed based on the ideas as follows.

  • Infinite transfer: You can transfer any kind of data infinitely on a stream. Streams are very efficient in terms of both time and space.
  • Zero installation: All you need is to have either a Web browser or curl, which are widely pre-installed. You do not need to install any extra software.
  • Simpleness: Making simple makes it more secure.
  • Storageless: The server makes transfer more secure since the server never stores your data.
  • Purity: The server streams over pure HTTP, which makes integration easier with other softwares.
  • Engineer friendly: Also designed for Unix/Linux users, who use pipes, not only for Web browser users.

Applications

Any data such as text streams, video streams and protocols can be streamed over Piping Server. Here are applications that fully use the power of pure HTTP.
See: "The Power of Pure HTTP – screen share, real-time messaging, SSH and VNC"

Text stream chat Screen share Drawing share
E2E encryption file transfer SSH on Web browser VNC on Web browser

The most important thing is that Piping Server stays simple. The applications use Piping Server as a core of data communication. It transfers data to POST /thepath into GET /thepath streamingly. The stream makes real-time communications over every device possible.

See "Ecosystem around Piping Server Β· nwtgck/piping-server Wiki" to find more about softwares using Piping Server.

Power of HTTP

In my experiment, Piping Server transferred 1,110TB (β‰ˆ 1PB) in a single HTTP request for 64 days and 2 hours at least. This means that it can transfer huge data and keep a request for about 2 months.

The power of HTTP

Engineer-friendly help

Get help and version only with curl.

curl https://ppng.io/help
curl https://ppng.io/version

Transfer to multiple receivers

You can transfer to multiple receivers. In the demo below, query parameter ?n=3 is specified to allow three receivers.

Piping Server multiple transfer

Public servers

Here are public Piping Servers.

Self-host on Docker

Run a Piping Server on http://localhost:8080 as follows.

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

Run a server in background and it automatically always restarts.

docker run -p 8080:8080 -d --restart=always nwtgck/piping-server

Self-host using portable binaries

Run a Piping Server on http://localhost:8080 as follows on Linux.

curl -L https://github.com/nwtgck/piping-server-pkg/releases/download/v1.12.0/piping-server-pkg-linuxstatic-x64.tar.gz | tar xzvf -
./piping-server-pkg-linuxstatic-x64/piping-server --http-port=8080

The binaries are for multi-platform including Linux on x64, Linux on ARM64, Linux on ARMv7, Intel macOS, Apple Silicon macOS and Windows on x64. See https://github.com/nwtgck/piping-server-pkg to run on the other platform.

Self-host on free services

Here are easier ways to own your Piping Server.

See "Ecosystem around Piping Server Β· nwtgck/piping-server Wiki" to find more about self-hosting.

Headers passed from sender to receivers

Here are headers passed to receivers.

  • Content-Type
  • Content-Length
  • Content-Disposition
  • X-Piping: custom header whose value is freely specified by the sender

Server options

Here is available CLI options by piping-server --help.

Options:
  --help          Show help                                            [boolean]
  --version       Show version number                                  [boolean]
  --host          Bind address (e.g. 127.0.0.1, ::1)                    [string]
  --http-port     Port of HTTP server                            [default: 8080]
  --enable-https  Enable HTTPS                        [boolean] [default: false]
  --https-port    Port of HTTPS server                                  [number]
  --key-path      Private key path                                      [string]
  --crt-path      Certification path                                    [string]

Piping Server written in Rust

Piping Server is also developed in Rust.
https://github.com/nwtgck/piping-server-rust

More Repositories

1

gh-card

:octocat: GitHub Repository Card for Any Web Site
TypeScript
1,310
star
2

actions-comment-run

Execute any script in a GitHub issue comment
TypeScript
439
star
3

actions-netlify

πŸš€ Netlify deploy from GitHub Actions
TypeScript
323
star
4

piping-server-rust

Infinitely transfer between every device over pure HTTP with pipes or browsers
Rust
247
star
5

gif-progress

🎬 Attach progress bar to animated GIF
Go
195
star
6

piping-ui-web

Easy and secure file transfer between every device over HTTPS with/without E2E encryption by ECDH and OpenPGP
Vue
134
star
7

fakelish-npm

Fake English word generator for JavaScript/TypeScript
TypeScript
95
star
8

piping-ssh-web

SSH over HTTPS via Piping Server on Web browser
Vue
94
star
9

ray-tracing-iow-rust

Ray Tracing in One Weekend written in Rust
Rust
81
star
10

piping-vnc-web

VNC client over pure HTTPS via Piping Server on Web browser
JavaScript
73
star
11

nipp

πŸŽ’ Programmable portable App hosted on URL: https://nipp.nwtgck.org
Vue
68
star
12

piping-screen-share-web

πŸ–₯️ Screen Share via Piping Server with End-to-End Encryption
Vue
58
star
13

ssh-keygen-web

Generate a key-pair of ssh-keygen on Web browser
Vue
46
star
14

stacklover-rust

Zero-cost type for stack without complicated type or Box
Rust
45
star
15

piping-server-streaming-upload-htmls

fetch()'s streaming upload feature over Piping Server
HTML
36
star
16

go-fakelish

Fake English word generator for Go and CLI
Go
35
star
17

http-knocking

πŸšͺHTTP-Knocking hides a Web server and open it by knocking sequence: Hide Web server until your knocks
TypeScript
27
star
18

piping-draw-web

🎨 End-to-End Encryption Share Drawing via Piping Server
Vue
26
star
19

ts-json-validator

JSON Validator for TypeScript - Safer JSON.parse() validating by TypeScript types
TypeScript
26
star
20

typescript-on-browser-starter

Starter for TypeScript on Web Browser
JavaScript
24
star
21

piping-chat-web

πŸ’¬ Chat via Piping Server with End-to-End Encryption
TypeScript
24
star
22

web-ssh-keygen

πŸ”’πŸ”‘ Generate a key-pair of ssh-keygen for Web browser
TypeScript
23
star
23

go-piping-server

Piping Server written in Go language (original: https://github.com/nwtgck/piping-server)
Go
22
star
24

piping-server-pkg

Piping Server as portable executable
22
star
25

go-piping-tunnel

Tunneling from anywhere via Piping Server
Go
20
star
26

docker-nginx-http3

Docker image for Nginx + HTTP/3 powered by Quiche
Dockerfile
19
star
27

yamux-cli

TCP and UDP multiplexer using yamux
Go
17
star
28

rich-piping-server

Rich Piping Server
TypeScript
13
star
29

go-webrtc-piping

WebRTC P2P tunneling/duplex with Piping Server WebRTC signaling
Go
12
star
30

piping-phone-web

πŸ“ž Real-time Voice Messaging over HTTP/HTTPS for Web Browser via Piping Server
Vue
12
star
31

piping-vnc-server-for-windows

Instant remote desktop for Windows from anywhere powered by UltraVNC Server and Piping Server
Vue
12
star
32

trans-server-akka

A Server for Transmitting File by curl or wget: Transfer data over HTTP/HTTPS
Scala
11
star
33

ray-tracing-iow-scala

Ray Tracing in One Weekend written in Scala
Scala
11
star
34

multi-svr-python

SVR for multidimensional labels
Python
10
star
35

platy-lang-haskell

Platy Language Compiler by Haskell & LLVM: Declarative, Statically typed and Simple to implement language
Haskell
10
star
36

handy-sshd

Portable SSH Server
Go
9
star
37

piping-webcodecs-screen-share-prototype-web

Vue
9
star
38

piping-chunk-web

πŸ“¦ Chunked Stream File Transfer for Web Browser with End-to-End Encrypted
Vue
9
star
39

ghost-nginx-http3-docker-compose

Ghost + Nginx + HTTP/3 powered by Quiche in Docker Compose, Example of https://github.com/nwtgck/docker-nginx-http3
8
star
40

math2image-npm

CLI for generating beautiful SVG/PNG mathematical image βˆ‘ ∫ π² ∞
TypeScript
7
star
41

docker-mkp224o

Docker image for mkp224o - generate vanity onion v3 address
Dockerfile
6
star
42

piping-adb-web

Android Debug Bridge (ADB) over Piping Serer on Web browser
TypeScript
6
star
43

docker-node-quic

Docker image for Node.js with QUIC
Dockerfile
6
star
44

math2img

Convert LaTeX Math to image
Crystal
6
star
45

docker-rust-musl-builder

original: https://github.com/emk/rust-musl-builder
Dockerfile
6
star
46

ts-copyable-npm

Type-safe #copy() for TypeScript inspired by Scala case-class
TypeScript
6
star
47

cmat2scores-python

Calculate accuracy, precision, recall and f-measure from confusion matrix
Python
6
star
48

tableau-solver-haskell

Tableau method solver in Haskell
Haskell
6
star
49

neural-network-dot

Neural Network by Graphviz
5
star
50

sw-force-download-web

Force download cross-origin file with Service Worker
HTML
5
star
51

go-piping-sshd

SSH server from anywhere with Piping Server
Go
5
star
52

cosense-bookmark-bookmarklet

JavaScript
5
star
53

tcphttp-server

TCP-over-HTTP server: Clients can use it with curl and perhaps browser
TypeScript
5
star
54

aes128gcm-stream-npm

πŸ›‘128-bit AES-GCM Encryption Stream for Web Browsers
TypeScript
5
star
55

specit-rust

Smoothly writing test titles in Rust
Rust
5
star
56

piping-server-onion-service-replit

Super easy to host Piping Server as Onion Service
Shell
4
star
57

comment-run-scripts

Scripts for comment-run action
TypeScript
4
star
58

tiny-http-piping-server-rust

Piping Server written in Rust with tiny-http
Rust
3
star
59

docker-nghttp2

Docker image of nghttpx with HTTP/3
Dockerfile
3
star
60

piping-server-zig

Piping Server in Zig (experimental)
Zig
3
star
61

qrcode-typescript-react

Real-time QR code generator written in TypeScript + React
TypeScript
3
star
62

piping-ui-web-onion-service-docker-compose

Piping UI as Onion Service
Dockerfile
3
star
63

docker-piping-server-rust-multi-platform

Multi-platform Piping Server in Rust Docker images
Dockerfile
3
star
64

private-ip-getter-npm

Private IP Getter for Web Browser
TypeScript
3
star
65

jwk-thumbprint-npm

JWK Thumbprint for JavaScript/TypeScript on both Web Browser and Node.js
TypeScript
3
star
66

assertion-haskell

Assertion with condition string representation in Haskell.
Haskell
3
star
67

go-piping-duplex

Duplex communication over Piping Server
Go
3
star
68

piping-server-onion-service-docker-compose

Piping Server as Onion Service
Shell
3
star
69

nwtgck-hypermd

HyperMD Quick Start
HTML
3
star
70

ibk

πŸ’Ύ Incremental Backup CLI using well-matured technology: tar
Go
3
star
71

binconv-npm

Converters for Blob, Uint8Array, ReadableStream, ArrayBuffer, string in JavaScript/TypeScript
TypeScript
3
star
72

digestream

CLI for streaming message digest calculator - Insert into pipe, get the digest in tty
Go
3
star
73

trans-server-tor-docker-compose

Trans server as Tor Hidden Service
Dockerfile
3
star
74

mac-sandbox

[WIP] Sandbox for macOS
Ruby
2
star
75

data-url-server

A server providing Data URL resource
JavaScript
2
star
76

docker-graalvm-node-piping-server

Docker image for Piping Server on Node.js on GraalVM
Dockerfile
2
star
77

actions-merge-preview

GitHub Actions for pull-request merge preview
TypeScript
2
star
78

jwt-piping-server

Piping Server with JWT authentication such as Auth0
TypeScript
2
star
79

cloudflare-pages-with-github-actions-prac

HTML
2
star
80

gh-language-colors-npm

GitHub Language Colors for JavaScript/TypeScript
TypeScript
2
star
81

egghead-todo-typescript-react

Type-safe TODO list app in React + Redux + TypeScript
TypeScript
2
star
82

tmpl

General Template Engine for Repository: "Keep your best practice as template"
Go
2
star
83

whoogle-search-replit

Whoogle Search which is easy to update on Replit
2
star
84

mac-screen-stream

[WIP] Screen Record Streaming for macOS
2
star
85

8cc-elc-hs

C Compiler written in Haskell powered by 8cc and ELVM
Haskell
2
star
86

verbose

CLI which makes your input verbose, flooding buffer
Go
2
star
87

piping-server-check

Check quality of Piping Server
Go
2
star
88

piping-phone-android

WIP: πŸ“ž Real-time Voice Messaging over HTTP/HTTPS for Android via Piping Server
Kotlin
2
star
89

go-socks

SOCKS4, SOCKS4a and SOCKS5 proxy server in Go
Go
2
star
90

knapsack-elvm-haskell

Knapsack problem solver converted from C language by ELVM.
Haskell
2
star
91

svg-badge-scala

SVG Badge maker in Scala
Scala
2
star
92

event-loop-imitation-scala

Imitation of Event Loop in Scala
Scala
2
star
93

github-back-chrome-extension

A Chrome Extension which allows you to get initial commit on GitHub
JavaScript
2
star
94

docker-host-web

Docker image of web server printing hostname of Docker container
JavaScript
2
star
95

whoogle-search-onion-service-replit

Shell
2
star
96

promise-http-server-npm

Promise-based HTTP server for JavaScript/TypeScript: using accept(), easy to use in async-await context
TypeScript
2
star
97

piping-server-nginx-docker-compose

Piping Server with Nginx using Docker Compose, which might be helpful to write nginx.conf for Piping Server.
2
star
98

http2-http1-server-node

HTTP/2-interface HTTP1 server for compatibility for Node.js/TypeScript
TypeScript
2
star
99

nwtgck

1
star
100

piping-server-command-web

Piping Server Command Cheatsheet
TypeScript
1
star