💾 Archived View for gemini.complete.org › ideas-for-nncp-projects captured on 2024-07-09 at 00:59:53. Gemini links have been rewritten to link to archived content

View Raw

More Information

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

Ideas for NNCP Projects

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

1: /nncp/

Either before or after reading this page, you might find these three pages useful:

2: /nncp/

3: /nncp-concepts/

4: /getting-started-with-nncp/

5: /asynchronous-communication/

A Quick Word on Background

Compared to something like ssh, with NNCP, you trade latency for reliability and flexibility. It might take a little longer to get there, but you can be really sure it gets there.

With NNCP, you also don't actually need a network between the systems. USB sticks can carry your data.

Airgapped Systems

Airgap[6]ed systems are ones that are physically disconnected from each other, often for Computer Security[7] reasons. They are great for handling sensitive information or things such as Backups[8]. My blog post How and Why to use Airgapped Backups[9] discusses this. The page Dead USB Drives Are Fine: Building a Reliable Sneakernet[10] goes into detail on a more sophisticated approach as well.

6: /airgap/

7: /computer-security/

8: /backups/

9: https://changelog.complete.org/archives/10160-how-why-to-use-airgapped-backups

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

You could also build an airgapped archive box, for instance.

In general, you can use a USB stick, CD-ROM, or whatever to handle transport to airgapped systems.

Intermittent or Slow Connectivity

For systems that have intermittent, or just slow, connectivity, NNCP can be great. Examples of these scenarios include wilderness or rural areas, various forms of travel (air, cruise ships, etc), even devices that have wifi but lack 4G/5G connectivity.

The NNCP documentation has a number of examples in its integration[11] page, which include a web site or file downloading service, Email[12] transfer, and so forth. Additionally, you can integrate with Kiwix and ZIM Files[13] to facilitate offline reading.

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

12: /email/

13: /kiwix-and-zim-files/

See also my article Tools for Communicating Offline and in Difficult Circumstances[14].

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

File Distribution and Synchronization

My program gitsync-nncp[15] takes advantage of NNCP's multicast areas[16] to form what is essentially a distributed Mesh Network[17] that propagates git commits.

15: https://github.com/jgoerzen/gitsync-nncp

16: https://nncp.mirrors.quux.org/Multicast.html

17: /mesh-network/

Remote Execution

More broadly, my article A Simple, Delay-Tolerant, Offline-Capable Mesh Network with Syncthing[18] discusses using nncp-xfer over syncthing. This can of course distribute files, but also handle nncp-exec requests. Why is this cool? Imagine:

18: https://changelog.complete.org/archives/10219-a-simple-delay-tolerant-offline-capable-mesh-network-with-syncthing-optional-nncp

tar -cpf - /usr/local | nncp-exec bob tarextract

The extraction might take place days later; like ssh, it doesn't have to be online simultaneously.

Now, what if /usr/local was 100GB? Consider the non-NNCP alternative using a ssh command like this:

tar -cpf - /usr/local | ssh bob tar -xvf -

In that example, the transfer will only succeed if the source, destination, and all networks connecting them, remain up for the entire duration of the 100GB transfer. With NNCP, transfers are resumable. When using the nncp-exec example above, your data may take longer to get there in ideal network conditions (because of the additional spooling). But you have greater faith that it WILL get there eventually; NNCP transfers are resumable, can use USB sticks as transport, etc. See more on this on my NNCP Concepts[19] page.

19: /nncp-concepts/

Offline Package Updates

apt-offline for Debian[20] and Debian-derived systems can easily run atop NNCP, which makes it easy to deliver security and other updates -- or even simple software installation -- to systems without good Internet connectivity.

20: /debian/

Email

You can send email out using NNCP. The Integration[21] page gives information on Postfix and Exim, but others would be supported too.

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

Also take a look at Building an Asynchronous, Internet-Optional Instant Messaging System[22].

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

Usenet

NNCP makes a great carrier for Usenet! See Usenet over NNCP[23] for details.

23: /usenet-over-nncp/

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

Links to this note

24: /nncp/

NNCP lets you securely send files, or request remote execution, between systems. It uses asynchronous communication[25], 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.

25: /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