SPIPED(1)
π SPIPED(1) β the spiped secure pipe daemon, from the spiped README π
okay bestie, sit down, hydrate, because we're learning spiped and it's genuinely iconic. it's a secure pipe daemon β like a little tunnel goblin that takes your connections and wraps them in encryption so nobody's snooping. π¦
β¨ SYNOPSIS β¨
spiped {-e | -d} -s <source socket> -t <target socket> -k <key file>
[-DFj] [-b <bind address>] [-f | -g] [-n <max # connections>]
[-o <connection timeout>] [-p <pidfile>] [-r <rtime> | -R] [--syslog]
[-u <username> | <:groupname> | <username:groupname>]
spiped -v
so basically you pick a mode (-e or -d, you MUST pick one, it's not optional), you tell it where to listen and where to connect, you hand it a key file, and it goes to work. slay. π
πΈ OPTIONS πΈ
-eβ take unencrypted connections from the source socket and send encrypted connections out to the target socket. this is the "encrypt my stuff on the way out" era.-dβ the other direction, bestie: take encrypted connections from the source socket and send unencrypted connections to the target socket. decrypting queen. π-s <source socket>β the address wherespipedshould listen for incoming connections. the accepted formats are literally the same ones the target socket accepts. BUT β and this is important β contrary to target socket, hostnames here are resolved whenspipedis launched and are not re-resolved later. so if DNS entries change,spipedwill keep accepting connections at the expired address. it's loyal to a fault. π-t <target socket>β the addressspipedshould connect to. it has to be in one of these formats, no exceptions:/absolute/path/to/unix/sockethost.name:port[ip.v4.ad.dr]:port[ipv6::addr]:port
hostnames get re-resolved every rtime seconds. β¨
-k <key file>β use the provided key file to authenticate and encrypt. pass"-"to read from standard input. stdin girlies rise up. π«Ά-b <bind address>β bind the outgoing address. if this is a network address, the port number may either be specified or left to the operating system. but heads up: if you specify the port number, the operating system will not let you open a second connection until the first one has completely expired (i.e. the TCP state is no longer in theTIME-WAITstate). so like, patience. π§-Dβ wait for DNS. normally whenspipedis launched it resolves addresses and binds to its source socket before the parent process returns; with this option it will daemonize first and retry failed DNS lookups until they succeed. this letsspipedlaunch even if DNS isn't set up yet β but at the expense of losing the guarantee that oncespipedhas finished launching it will be ready to create pipes. trade-offs, bestie. βοΈ-fβ use fast/weak handshaking: this reduces the CPU time spent in the initial connection setup by disabling the Diffie-Hellman handshake, at the expense of losing perfect forward secrecy. it's giving shortcuts. π-gβ require perfect forward secrecy by dropping connections if the other host is using the-foption. boundaries! we love them. π«-Fβ run in foreground. this can be useful with systems likedaemontools.-jβ disable transport layer keep-alives. (by default they are enabled.)-n <max # connections>β limit on the number of simultaneous connections allowed. a value of0indicates that no limit should be imposed; this may be inadvisable in some circumstances, sincespipedwill terminate if it fails to allocate memory for handling a new connection. defaults to100connections. π―-o <connection timeout>β timeout, in seconds, after which an attempt to connect to the target or a protocol handshake will be aborted (and the connection dropped) if not completed. defaults to5s.-p <pidfile>β file to whichspiped's process ID should be written. defaults to source socket.pid(in the current directory if source socket is not an absolute path). no file will be written if-F(run in foreground) is used.-r <rtime>β re-resolve the address of target socket everyrtimeseconds. defaults to re-resolution every60seconds.-Rβ disable target address re-resolution. set it and forget it. π--syslogβ after daemonizing, send warnings to syslog instead of stderr. has no effect if-F(run in foreground) is used.-u <username>|<:groupname>|<username:groupname>β after binding a socket, change the user to username and/or the group to groupname. glow-down for security reasons. π-vβ print version number. that's it, that's the whole option. β
π SIGNALS π
spiped provides special treatment of the following signals:
SIGTERMβ on receipt of theSIGTERMsignal,spipedwill stop accepting new connections and exit once there are no active connections left. it's a graceful queen, it never just dips mid-conversation. π
π SEE ALSO π
spipe(1). go read it, bestie, iykyk. π
and that's the whole page, fr fr. this was spiped version 1.6.4, dated April 02, 2025 β no cap, that's the source and the date, so you know exactly which manual era you're in. mwah, go encrypt something. πβ¨π
π¦ where this page comes from
- nixos 26.05: spiped 1.6.4
- nixpkgs unstable: spiped 1.6.4
- ubuntu resolute: spiped 1.6.4-1 Β· BSD-2-Clause
- ubuntu stonking: spiped 1.6.4-3 Β· BSD-2-Clause
- Copyright (c) 2012 Andreas Olsson
- Copyright (c) 2016 Tim Duesterhus
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms