💾 Archived View for complete.org › nncp captured on 2024-08-18 at 17:29:07. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

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.

1: /asynchronous-communication/

2.

NNCP is to UUCP[2] what ssh is to telnet; NNCP is an Encrypted[3], authenticated, onion-routed version of UUCP!

2: /uucp/

3: /encrypted/

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: https://nncp.mirrors.quux.org/

5: /email/

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!

6: /usenet-over-nncp/

7: https://nncp.mirrors.quux.org/Use-cases.html

8: https://nncp.mirrors.quux.org/Integration.html

5.

A tool for small technology, privacy, and self-resilience.

See more about NNCP and download it at https://nncp.mirrors.quux.org/[9].

9: https://nncp.mirrors.quux.org/

Learning about NNCP

Here are some materials for you:

10: /nncp-concepts/

11: https://changelog.complete.org/archives/10163-rehabilitating-asynchronous-communication-with-nncp-a-cross-between-tor-ssh-and-uucp

12: https://changelog.complete.org/archives/tag/nncp

13: /syncthing/

14: /recovering-our-lost-free-will-online-tools-and-techniques-that-are-available-now/

15: /ideas-for-nncp-projects/

16: /dead-usb-drives-are-fine-building-a-reliable-sneakernet/

NNCP information

* Sending mail from the laptop to the server via NNCP[31] (deriving from my article on a similar topic[32])

* Connecting the laptop to the server via NNCP[33]

17: /nncp-concepts/

18: /getting-started-with-nncp/

19: /quux-org-nncp-public-relay/

20: /quux-org-usenet-nntp-and-nncp-peer/

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: /raspberry-pi/

27: /installing-debian-backports-on-raspberry-pi/

28: /nncp-on-android/

29: /maintaining-nncp/

30: /using-filespooler-over-nncp/

31: https://alexschroeder.ch/view/2024-06-29-nncp

32: https://changelog.complete.org/archives/10165-asynchronous-email-exim-over-nncp-or-uucp

33: https://alexschroeder.ch/view/2024-06-28-nncp

--------------------------------------------------------------------------------

Links to this note

34: /how-gapped-is-your-air/

Sometimes we want better-than-firewall security for things. For instance:

35: /using-gensio-and-ser2net/

gensio[36] and the related ser2net[37] are generic tools for communication.

36: https://github.com/cminyard/gensio

37: https://github.com/cminyard/ser2net

38: /an-asynchronous-rsync-with-dar/

In my writing about dar[39], I recently made that point that dar is a filesystem differ and patcher.

39: /dar/

40: /roundup-of-data-backup-and-archiving-tools/

Here is a comparison of various data backup and archiving tools. For background, see my blog post[41] 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.

41: https://changelog.complete.org/archives/10500-recommendations-for-tools-for-backing-up-and-archiving-to-removable-media

42: /easily-accessing-all-your-stuff-with-a-zero-trust-mesh-vpn/

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.

43: /building-an-asynchronous-internet-optional-instant-messaging-system/

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.

44: /dead-usb-drives-are-fine-building-a-reliable-sneakernet/

"OK," you're probably thinking. "John, you talk a lot[45] about things like Gopher[46] and personal radios[47], and now you want to talk about building a reliable network out of... *USB drives*?"

45: /the-pc-internet-revolution-in-rural-america/

46: /gopher/

47: /the-joy-of-easy-personal-radio-frs-gmrs-and-motorola-dlr-dtr/

48: /using-filespooler-without-queues-to-pass-more-metadata/

One frustration people sometimes have with ssh or NNCP[49] 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.

49: /nncp/

50: /dar/

dar is a Backup[51] 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[52], various forms of compression, even integrated rdiff deltas.

51: /backups/

52: /encrypted/

53: /gitsync-nncp/

gitsync-nncp is a tool for using Asynchronous Communication[54] tools such as NNCP[55] or Filespooler[56], or even (with some more work) Syncthing[57] to synchronize git[58] repositories.

54: /asynchronous-communication/

55: /nncp/

56: /filespooler/

57: /syncthing/

58: /git/

59: /introduction-to-filespooler/

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.

60: /one-to-many-with-filespooler/

In some cases, you may want to use Filespooler[61] to send the data from one machine to many others. An example of this could be using gitsync-nncp over Filespooler[62] where you would like to propagate the changes to many computers.

61: /filespooler/

62: /gitsync-nncp-over-filespooler/

63: /using-filespooler-over-nncp/

NNCP[64] is a powerful tool for building Asynchronous Communication[65] networks. It features end-to-end Encryption[66] as well as all sorts of other features; see my NNCP Concepts[67] page for some more ideas.

64: /nncp/

65: /asynchronous-communication/

66: /encrypted/

67: /nncp-concepts/

68: /filespooler/

Filespooler lets you request the remote execution of programs, including stdin and environment. It can use tools such as S3, Dropbox, Syncthing[69], NNCP[70], ssh, UUCP[71], USB drives, CDs, etc. as transport; basically, a filesystem is the network for Filespooler.
Filespooler is particularly suited to distributed and Asynchronous Communication[72].

69: /syncthing/

70: /nncp/

71: /uucp/

72: /asynchronous-communication/

73: /airgap/

"Airgap" refers to a computer (or network) that is physically disconnected from a larger network and the Internet.

74: /ideas-for-nncp-projects/

I sometimes see people read about NNCP[75] and wonder "This sounds great! But... what can I do with it?" This page aims to answer those questions.

75: /nncp/

76: /maintaining-nncp/

The care and feeding of an NNCP[77] installation.

77: /nncp/

78: /nncp-on-android/

To use NNCP[79] on Android[80], we need a way to build and run it. The easiest option for that is Termux[81].

79: /nncp/

80: /android/

81: /termux/

82: /installing-debian-backports-on-raspberry-pi/

This page is intended to describe how to run Debian[83]'s backports[84] on a Raspberry Pi[85] running Raspberry Pi OS (Raspbian).

83: /debian/

84: https://backports.debian.org/

85: /raspberry-pi/

86: /nncp-concepts/

This page describes some basic concepts of NNCP[87].

87: /nncp/

88: /tools-for-communicating-offline-and-in-difficult-circumstances/

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.

89: /nncp-over-yggdrasil/

NNCP[90] can be run over Yggdrasil[91] in two ways:

90: /nncp/

91: /yggdrasil/

92: /getting-started-with-nncp/

This page describes the basic installation and configuration of NNCP[93].

93: /nncp/

94: /using-nncp-at-sdf/

You can use NNCP[95] at SDF Public Access Unix[96]!

95: /nncp/

96: /sdf-public-access-unix/

97: /software-and-operating-systems/

Linux

98: /interesting-topics/

Here are some (potentially) interesting topics you can find here:

99: /encrypted/

Anything that uses encryption to keep content away from spying eyes.

100: /raspberry-pi/

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[101].

101: /debian/

102: /syncthing/

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.

103: /asynchronous-communication/

Asynchronous communication is communication between two endpoints that doesn't have to happen in real time or near-real-time.

104: /using-nncp-with-sudo/

We're going to cover two different sudo situations:

105: /tunneling-nncp-over-other-transports/

NNCP[106] has built-in support for running over TCP, with nncp-daemon and nncp-call/caller. NNCP's own use cases[107] page talks about various use cases for NNCP. Some of them, such as the no link[108] page, cover use of nncp-xfer; others, such as the one-way broadcasting[109] page go over nncp-bundle.

106: /nncp/

107: https://nncp.mirrors.quux.org/Use-cases.html

108: https://nncp.mirrors.quux.org/UsecaseNoLink.html

109: https://nncp.mirrors.quux.org/UsecaseBroadcast.html

110: /email/

Email is one of the most common examples of Asynchronous Communication[111] people are familiar with today. It is a store-and-forward approach which is tolerant of temporary disruptions to services and supports multiple hops.

111: /asynchronous-communication/

112: /usenet-over-nncp/

Usenet[113], of course, originally ran over UUCP[114] in quite a few cases. Since NNCP[115] is quite similar to UUCP -- in fact, you can map UUCP commands to NNCP ones[116] -- 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!

113: /usenet/

114: /uucp/

115: /nncp/

116: https://nncp.mirrors.quux.org/Comparison.html

117: /quux-org-nncp-public-relay/

According to the NNCP documentation[118], NNCP[119] is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant[120] networks for fire-and-forget secure reliable files, file requests, Internet Email[121] and commands transmission. All packets are integrity checked, end-to-end Encrypted[122], 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.

118: https://nncp.mirrors.quux.org/

119: /nncp/

120: /asynchronous-communication/

121: /email/

122: /encrypted/

123: /old-and-small-technology/

Old technology is any tech that's, well... old.

124: /usenet/

Usenet[125] 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.

125: https://en.wikipedia.org/wiki/Usenet

126: /sites-and-services-hosted-at-complete-org/

These sites are hosted on the complete.org server. Some are hosted with resources donated to non-profit organizations.

127: /john-goerzen-s-software/

This page gives you references to software by John Goerzen[128].

128: /john-goerzen/

129: /recovering-our-lost-free-will-online-tools-and-techniques-that-are-available-now/

*This started out at a post on my blog[130]. This edited version is intended to be kept more up-to-date.*

130: https://changelog.complete.org/archives/10231-recovering-our-lost-free-will-online-tools-and-techniques-that-are-available-now

131: /the-pc-internet-revolution-in-rural-america/

Inspired by several others (such as Alex Schroeder's post[132] and Szczeżuja's prompt[133]), 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.

132: https://alexschroeder.ch/wiki/2021-11-14_The_early_years_on_the_net

133: https://mastodon.online/@szczezuja/108902027541781265

134: /uucp/

UUCP is a system for exchanging data and requesting remote execution. It dates back to 1979, and was primarily used over Modem[135]s using telephone landlines for most of its days of popularity. It is an Asynchronous Communication[136] 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.

135: /modem/

136: /asynchronous-communication/

More on www.complete.org

Homepage

Interesting Topics

How This Site is Built

About John Goerzen

Web version of this site

(c) 2022-2024 John Goerzen