NNCP services
NNCP (Node to Node copy) is a collection of utilities simplifying secure store-and-forward files, mail and command exchanging.
This utilities are intended to help build up small size (dozens of nodes) ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant networks for fire-and-forget secure reliable files, file requests, Internet mail 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 areas support.
Out-of-box offline sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape storages, air-gapped computers support. But online TCP daemon with full-duplex resumable data transmission exists.
Portable module
An NNCP portable service module is available from the WCIIT overlay as pkgs.alt.wciit.nncp.services.default.
SLAM import
{ pkgs, ... }:
{
system.services.nncp = {
imports = [
pkgs.alt.wciit.nncp.passthru.services.default
];
nncp = {
"…" = "…";
};
};
}NixOS import
{ pkgs, ... }:
{
system.services.nncp = {
_module.args = { inherit pkgs; };
imports = [
pkgs.alt.wciit.nncp.passthru.services.default
];
nncp = {
"…" = "…";
};
};
}Configuration
NNCP uses static secrets to authenticate and encrypt communications
with other nodes. These secrets must be stored outside the Nix
store. The necessary secrets items within the configuration file are the
self and neigh.self objects.
A minimal configuration file containing fresh secrets can be
generated using the pkgs.jq, pkgs.hjson-go,
and the following command:
nncp-cfgnew |hjson-cli -j |jq '{ "self": .self, "neigh": .neigh }'
The Secrets specified via the nncp.secrets option and
the value of nncp.settings are merged at runtime and
written to /run/nncp.hjson.
