From ArchWiki

Cjdns implements an encrypted IPv6 network using public-key cryptography for address allocation and a distributed hash table for routing. This provides near-zero-configuration networking, and prevents many of the security and scalability issues that plague existing networks.


Install cjdns. An alternative cjdns-gitAUR package (with more dependencies) is also available.

Both packages include a systemd service file, but sysvinit scripts are available too as cjdns-git-sysvinitAUR[broken link: package not found].


On installation, a /etc/cjdroute.conf is autogenerated.

If you need to re-generate it, execute:

# cjdroute --genconf > /etc/cjdroute.conf
Note: Double-check file permissions for /etc/cjdroute.conf as it contains the private key capable of encrypting and decrypting all your communications. Executing chmod 600 /etc/cjdroute.conf as root sets them correctly.

Edit /etc/cjdroute.conf as root to add at least one peer to the connectTo section. Peers can be anyone else running cjdns who gives you credentials to connect to them with. They can be found in Hyperboria peers, #cjdns and #projectmeshnet on EFnet among many other places.


Start/enable the cjdns.service.

If cjdns did not start, you should check the unit status or use journalctl and edit /etc/cjdroute.conf if needed.