russell.ballestrini.net/content/2021-12-03-gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet.rst
russell@unturf.com 137d65cc65 Consolidate blog tags: 57 → 23 unique tags
- Fix case duplicates (guide→Guide, project→Project, etc.)
- Consolidate single-post tags into broader categories
- Add technology tags (Python, AWS, Salt, Docker, Kubernetes) to 93 posts
- Add lib/tag_stats.py tool for checking tag usage
- Update CLAUDE.md with tag guidelines
2026-01-26 09:09:53 -05:00

179 lines
6.3 KiB
ReStructuredText

GNUnet GNS Nameserver Operator Notes, Quickstart, & Cheatsheet
################################################################
:author: Russell Ballestrini
:slug: gnunet-gns-nameserver-operator-notes-quickstart-cheatsheet
:date: 2021-12-03 18:21
:tags: Code, DevOps, Docker
:status: published
We GROW with Truth, Freedom, Love.
| "You have an ally".
We scroll through the official GNUnet handbook, everything is covered in details, sections have examples. Seems verbose at first glance but also familiar .
Freedom of speech is under attack.
I AM not scared, we understand the technology we have and the technology we need. We will rescue ourselves and GROW together.
GNS right NOW!
Why?
Our Collective's Internet Nameservice (DNS) is UNDER ACTIVE ATTACK by groups of governments.
Multitiple reports of DNS Name registrars breaking registrants Internet Domains on the behalf of NON-HUMAN ENTITIES.
To avoid any erosion of our Freedom of speech, we will use GNS to make sure our web domains continue to map to our resources for people looking for us.
I AM a seasoned 17 year Bind9 DNS administrator. I had my start on FreeBSD 5.0, virtualized over the years, now on Ubuntu VMs running on "the cloud" & local hypervisors hosting on broken laptops.
We know how to scale DNS, it sort of just works once you figure out the config files.
So let's figure out GNS and GROW a new Internet Culture, eh?
---
We pull down the source code using git:
.. code-block:: bash
git clone https://git.gnunet.org/gnunet.git
We see a lot of C code, interesting choice.
.. code-block:: bash
cd gnunet
[fox@blanka gnunet]$ ls -hal src/dns/
total 144K
drwxrwxr-x. 1 fox fox 362 Dec 3 18:09 .
drwxrwxr-x. 1 fox fox 834 Dec 3 18:09 ..
-rw-rw-r--. 1 fox fox 9.3K Dec 3 18:09 dns_api.c
-rw-rw-r--. 1 fox fox 1.3K Dec 3 18:09 dns.conf.in
-rw-rw-r--. 1 fox fox 2.2K Dec 3 18:09 dns.h
-rw-rw-r--. 1 fox fox 126 Dec 3 18:09 .gitignore
-rw-rw-r--. 1 fox fox 11K Dec 3 18:09 gnunet-dns-monitor.c
-rw-rw-r--. 1 fox fox 7.1K Dec 3 18:09 gnunet-dns-redirector.c
-rw-rw-r--. 1 fox fox 32K Dec 3 18:09 gnunet-helper-dns.c
-rw-rw-r--. 1 fox fox 35K Dec 3 18:09 gnunet-service-dns.c
-rw-rw-r--. 1 fox fox 14K Dec 3 18:09 gnunet-zonewalk.c
-rw-rw-r--. 1 fox fox 2.2K Dec 3 18:09 Makefile.am
-rw-rw-r--. 1 fox fox 7.5K Dec 3 18:09 plugin_block_dns.c
-rwxrwxr-x. 1 fox fox 1.6K Dec 3 18:09 test_gnunet_dns.sh
GNUnet 0.15.0 released: https://www.gnunet.org/en/news/2021-08-0.15.0.html
GNS First-come-first-served GNUnet top-level domain ".pin" zone key and website updated
Register now: https://fcfs.gnunet.org/
Wow, Ok - We want to reserve our favorite names, right?
How do we generate our ``zone key```?
A section in the GNUnet handbook which seems to cover zones and keys:
* https://docs.gnunet.org/handbook/gnunet.html#First-steps-_002d-Using-the-GNU-Name-System
To register a top-level domain of the ``.pin`` we need to generate a public/private keypair for each zone.
But before we do that we need to install GNUnet and configure the tool.
Ok, I would prefer some up-to-date binaries than the source tree.
Fedora package looks old and abandoned, same with Ubuntu, & Alpine...
I AM dreaming of a lightweight Alpine docker container to pass around the nets with with GNUnet prebaked in. Maybe a project for another day.
It seems like the NixOS package manager has an uptodate version 0.15.3!
To install GNUnet binaries, we must first learn how to install ``nix`` package manager.
Installing nix package manager, run the following:
.. code-block:: bash
# reference: https://nixos.org/download.html
curl -L https://nixos.org/nix/install | sh
Once installed try to install GNUnet, like this:
.. code-block:: bash
nix-env -iA nixpkgs.gnunet
Errors complaining about certificates might be an easy fix:
.. code-block:: bash
source /home/fox/.nix-profile/etc/profile.d/nix.sh
For example the install script placed the following into my ``~/.bash_profile``:
.. code-block:: bash
if [ -e /home/fox/.nix-profile/etc/profile.d/nix.sh ]; then . /home/fox/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
Once you get all that sorted you should have installed GNUnet!
To verify try to interact with ``~/.nix-profile/bin/gnunet-config``.
Battleship Operational, A Carrier Has Arrived.
.. code-block:: bash
[fox@blanka russell.ballestrini.net]$ gnunet-config --version
gnunet-config v0.15.3 release
Alright now we must somehow configure zones and public/private keypairs with this tool.
The handbook gives us this as an example, and we break down the anatomy of the command and outputs.
.. code-block:: bash
gnunet-config -s gns -o .myfriend -V PUBLIC_KEY
Let's try passing ``--help``
.. code-block:: bash
[fox@blanka russell.ballestrini.net]$ gnunet-config --help
gnunet-config [OPTIONS]
Manipulate GNUnet configuration files
Arguments mandatory for long options are also mandatory for short options.
-b, --supported-backend=BACKEND
test if the current installation supports the
specified BACKEND
-c, --config=FILENAME use configuration file FILENAME
-d, --diagnostics output extra diagnostics
-F, --full write the full configuration file, including
default values
-f, --filename interpret option value as a filename (with
$-expansion)
-h, --help print this help
-L, --log=LOGLEVEL configure logging to use LOGLEVEL
-l, --logfile=FILENAME configure logging to write logs to FILENAME
-o, --option=OPTION name of the option to access
-r, --rewrite rewrite the configuration file, even if nothing
changed
-S, --list-sections print available configuration sections
-s, --section=SECTION name of the section to access
-V, --value=VALUE value to set
-v, --version print the version number
Report bugs to gnunet-developers@gnu.org.
Home page: http://www.gnu.org/s/gnunet/
General help using GNU software: http://www.gnu.org/gethelp/
Ok so it seems like this command simply edits config files for GNUnet.
Ok but where are these enigmatic config files?
This is a living document we will continue the story toward a resolution and simple quickstart guide!
Leave comments below!
.. contents::