NNCP
What is NNCP?
1.
NNCP lets you securely send files, or request remote execution, between systems. It uses asynchronous communication[1], so the source and destination need never be online simultaneously. NNCP can route requests via intermediate devices -- other NNCP nodes, USB sticks, tapes, radios, phones, cloud services, whatever -- leading to a network that is highly resilient and flexible. NNCP makes it much easier to communicate with devices that lack Internet connectivity, or have poor Internet.
2.
NNCP is to UUCP[2] what ssh is to telnet; NNCP is an Encrypted[3], authenticated, onion-routed version of UUCP!
3.
According to the NNCP documentation[4], NNCP is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant networks for fire-and-forget secure reliable files, file requests, Internet email[5] and commands transmission. All packets are integrity checked, end-to-end encrypted, explicitly authenticated by known participants public keys. Onion encryption is applied to relayed packets. Each node acts both as a client and server, can use push and poll behaviour model. Also there is multicasting area support.
4.
Over NNCP, you can run email, Usenet[6], web downloading services, and more. NNCP's use cases[7] and integrations[8] pages will give you ideas!
5.
A tool for small technology, privacy, and self-resilience.
See more about NNCP and download it at https://nncp.mirrors.quux.org/[9].
Learning about NNCP
Here are some materials for you:
- My page NNCP Concepts[10] is a great next step in learning about NNCP.
- My blog post Rehabilitating Asynchronous Communication with NNCP: A Cross Between Tor, ssh, and UUCP[11] gives an introduction to NNCP as well as an introduction to the concepts and problems it helps solve.
- I have a much longer blog series about NNCP[12], which includes examples of integrating it with Exim for email, ZFS for backups, git for syncing, Syncthing[13] for meshing and transport, etc.
- Recovering Our Lost Free Will Online: Tools and Techniques That Are Available Now[14] locates NNCP amid a larger universe of technologies with similar goals.
- Ideas for NNCP Projects[15]
- Dead USB Drives Are Fine: Building a Reliable Sneakernet[16]
NNCP information
- NNCP Concepts[17]
- Getting Started with NNCP[18]
- quux.org NNCP public relay[19]
- quux.org Usenet NNTP and NNCP peer[20]
- NNCPNET Email Network[21]
- using NNCP with sudo[22]
- Tunneling NNCP over other transports[23]
- Using NNCP at SDF[24]
- NNCP in Docker[25]
- NNCP over Yggdrasil[26]
- Installing NNCP on a Raspberry Pi[27]: Installing Debian Backports on Raspberry Pi[28]
- NNCP on Android[29]
- Maintaining NNCP[30]
- Using Filespooler over NNCP[31]
- tomasino has a nice series exploring NNCP:
* Sending mail from the laptop to the server via NNCP[32] (deriving from my article on a similar topic[33])
* Connecting the laptop to the server via NNCP[34]
--------------------------------------------------------------------------------
Links to this note
- NNCPNET Email Network[35]
The NNCPNET email network is a peer-to-peer, encrypted Email[36] network based on NNCP[37]. It routes across the quux.org NNCP public relay[38] by default. It is a full-featured email system that doesn't require Internet connectivity, though by default it routes across the Internet. It doesn't require a public IP, DNS tricks, or port forwarding.
- Archives and Mirrors[39]
I (John Goerzen[40]) maintain a number of archives and mirrors, with a particular emphasis on material important to computing history.
- How Gapped Is Your Air?[41]
Sometimes we want better-than-firewall security for things. For instance:
- Using Gensio and Ser2net[42]
gensio[43] and the related ser2net[44] are generic tools for communication.
- An Asynchronous Rsync With Dar[45]
In my writing about dar[46], I recently made that point that dar is a filesystem differ and patcher.
- Roundup of Data Backup and Archiving Tools[47]
Here is a comparison of various data backup and archiving tools. For background, see my blog post[48] in which I discuss the difference between backup and archiving. In a nutshell, backups are designed to recover from a disaster that you can fairly rapidly detect. Archives are designed to survive for many years, protecting against disaster not only impacting the original equipment but also the original person that created them. That blog post goes into a lot of detail on what makes a good backup or archiving tool.
- Easily Accessing All Your Stuff With a Zero-Trust Mesh VPN[49]
Probably everyone is familiar with a regular VPN. The traditional use case is to connect to a corporate or home network from a remote location, and access services as if you were there.
- Building an Asynchronous, Internet-Optional Instant Messaging System[50]
I loaded up this title with buzzwords. The basic idea is that IM systems shouldn't have to only use the Internet. Why not let them be carried across LoRa radios, USB sticks, local Wifi networks, and yes, the Internet? I'll first discuss how, and then why.
- Dead USB Drives Are Fine: Building a Reliable Sneakernet[51]
"OK," you're probably thinking. "John, you talk a lot[52] about things like Gopher[53] and personal radios[54], and now you want to talk about building a reliable network out of... *USB drives*?"
- The PC & Internet Revolution in Rural America[55]
Inspired by several others (such as Alex Schroeder's post[56] and Szczeżuja's prompt[57]), as well as a desire to get this down for my kids, I figure it's time to write a bit about living through the PC and Internet revolution where I did: outside a tiny town in rural Kansas. And, as I've been back in that same area for the past 15 years, I reflect some on the challenges that continue to play out.
- Using Filespooler Without Queues to Pass More Metadata[58]
One frustration people sometimes have with ssh or NNCP[59] is that they'd like to pass along a lot of metadata to the receiving end. Both ssh and nncp-exec allow you to pass along command-line parameters, but neither of them permit passing along more than that. What if you have a whole host of data to pass? Maybe a dozen things, some of them optional? It would be very nice if you could pass along the environment.
- Dar[60]
dar is a Backup[61] and archiving tool. You can think of it as as more modern tar. It supports both streaming and random-access modes, supports correct incrementals (unlike GNU tar's incremental mode), Encryption[62], various forms of compression, even integrated rdiff deltas.
- Gitsync-Nncp[63]
gitsync-nncp is a tool for using Asynchronous Communication[64] tools such as NNCP[65] or Filespooler[66], or even (with some more work) Syncthing[67] to synchronize git[68] repositories.
- Introduction to Filespooler[69]
It seems that lately I've written several shell implementations of a simple queue that enforces ordered execution of jobs that may arrive out of order. After writing this for the nth time in bash, I decided it was time to do it properly. But first, a word on the *why* of it all.
- One-to-Many With Filespooler[70]
In some cases, you may want to use Filespooler[71] to send the data from one machine to many others. An example of this could be using gitsync-nncp over Filespooler[72] where you would like to propagate the changes to many computers.
- Using Filespooler over NNCP[73]
NNCP[74] is a powerful tool for building Asynchronous Communication[75] networks. It features end-to-end Encryption[76] as well as all sorts of other features; see my NNCP Concepts[77] page for some more ideas.
- Filespooler[78]
Filespooler lets you request the remote execution of programs, including stdin and environment. It can use tools such as S3, Dropbox, Syncthing[79], NNCP[80], ssh, UUCP[81], USB drives, CDs, etc. as transport; basically, a filesystem is the network for Filespooler.
Filespooler is particularly suited to distributed and Asynchronous Communication[82].
- Airgap[83]
"Airgap" refers to a computer (or network) that is physically disconnected from a larger network and the Internet.
- Ideas for NNCP Projects[84]
I sometimes see people read about NNCP[85] and wonder "This sounds great! But... what can I do with it?" This page aims to answer those questions.
- Maintaining NNCP[86]
The care and feeding of an NNCP[87] installation.
- NNCP on Android[88]
To use NNCP[89] on Android[90], we need a way to build and run it. The easiest option for that is Termux[91].
- Installing Debian Backports on Raspberry Pi[92]
This page is intended to describe how to run Debian[93]'s backports[94] on a Raspberry Pi[95] running Raspberry Pi OS (Raspbian).
- NNCP Concepts[96]
This page describes some basic concepts of NNCP[97].
- Tools for Communicating Offline and in Difficult Circumstances[98]
When things are difficult -- maybe there's been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you're just backpacking off the grid -- there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.
- NNCP over Yggdrasil[99]
NNCP[100] can be run over Yggdrasil[101] in two ways:
- Getting Started With NNCP[102]
This page describes the basic installation and configuration of NNCP[103].
- Using NNCP at SDF[104]
You can use NNCP[105] at SDF Public Access Unix[106]!
- Software and Operating Systems[107]
- Recovering Our Lost Free Will Online: Tools and Techniques That Are Available Now[108]
*This started out at a post on my blog[109]. This edited version is intended to be kept more up-to-date.*
- Encrypted[110]
Encryption is a way to encode data so that people that might intercept it can't decipher the original message (often called the "plaintext").
- Raspberry Pi[111]
One of several single-board computers. The Raspberry Pi is an ARM computer that typically sells for less than $50. Generally is runs a derivative of Debian[112].
- Syncthing[113]
Syncthing is a serverless, peer-to-peer file synchronization tool. It is often compared to Dropbox. However, unlike Dropbox, there is no central server with Syncthing; your devices talk directly to each other to sync data. Syncthing has various effective methods for firewall traversal, including public relays for the worst case. All Syncthing traffic is fully encrypted and authenticated.
- Asynchronous Communication[114]
Asynchronous communication is communication between two endpoints that doesn't have to happen in real time or near-real-time.
- Using NNCP With Sudo[115]
We're going to cover two different sudo situations:
- Tunneling NNCP over Other Transports[116]
NNCP[117] has built-in support for running over TCP, with nncp-daemon and nncp-call/caller. NNCP's own use cases[118] page talks about various use cases for NNCP. Some of them, such as the no link[119] page, cover use of nncp-xfer; others, such as the one-way broadcasting[120] page go over nncp-bundle.
- UUCP[121]
UUCP is a system for exchanging data and requesting remote execution. It dates back to 1979, and was primarily used over Modem[122]s using telephone landlines for most of its days of popularity. It is an Asynchronous Communication[123] system, which transmits data from one machine to the next on the way to its destination. Each intermediate node may store the data before passing it on to the next.
- Email[124]
Email is one of the most common examples of Asynchronous Communication[125] people are familiar with today. It is a store-and-forward approach which is tolerant of temporary disruptions to services and supports multiple hops.
- Usenet over NNCP[126]
Usenet[127], of course, originally ran over UUCP[128] in quite a few cases. Since NNCP[129] is quite similar to UUCP -- in fact, you can map UUCP commands to NNCP ones[130] -- it is quite possible, and not all that hard, to run Usenet over NNCP. In fact, in a number of ways, it works better than Usenet over UUCP!
- Quux.Org NNCP Public Relay[131]
According to the NNCP documentation[132], NNCP[133] is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant[134] networks for fire-and-forget secure reliable files, file requests, Internet Email[135] and commands transmission. All packets are integrity checked, end-to-end Encrypted[136], explicitly authenticated by known participants public keys. Onion encryption is applied to relayed packets. Each node acts both as a client and server, can use push and poll behaviour model. Also there is multicasting area support.
- Old and Small Technology[137]
Old technology is any tech that's, well... old.
- Usenet[138]
Usenet[139] is sometimes said to be the world's oldest social network. Since 1980, Usenet has been a massive, global discussion system. Participants can read and post messages (called articles) in discussion forums (called newsgroups). Unlike web forums, Usenet newgroups are available from thousands of independently-operated servers worldwide (instead of just one particular site). You can also use the client of your choice to access them.
- John Goerzen's Software[140]
This page gives you references to software by John Goerzen[141].
- Interesting Topics[142]
Here are some (potentially) interesting topics you can find here:
More on www.complete.org
(c) 2022-2024 John Goerzen