ng0 c6c9880ae8 Fix: gnurl in version 7.57 still used xzip 5 years ago
..
Dockerfile c6c9880ae8 Fix: gnurl in version 7.57 still used xzip 5 years ago
README.md 671997ed58 also move docker/ to contrib 5 years ago
docker-entrypoint.sh 671997ed58 also move docker/ to contrib 5 years ago
gnunet.conf 671997ed58 also move docker/ to contrib 5 years ago

README.md

gnunet-docker

A Dockerfile (and maybe later docker-compose.yml) for getting a running GNUnet docker container.

This README and parts of the Dockerfile were adapted from https://github.com/compiaffe/gnunet-docker

Build it

This will take quite a while and will consume a bit of data.

First you need to go to the root of this repo.

cd ..

Now you can build the image.

docker build -t gnunet .

Start it from the newly created gnunet image

Start a container from gnunet image, which can access /dev/net/tun, has access to the host network. We are going to name it gnunet1.

Note the --rm that will delete the container as soon as you stop it and -ti gives you an interactive terminal.

Linux Users

docker run \
  --rm \
  -ti \
  --privileged \
  --name gnunet1 \
  --net=host \
  -v /dev/net/tun:/dev/net/tun \
  gnunet

Mac Users

docker run \
  --rm \
  -it \
  --privileged \
  --name gnunet1 \
  -e LOCAL_PORT_RANGE='40001 40200' \
  -e GNUNET_PORT=2086 \
  -p 2086:2086 \
  -p 2086:2086/udp \
  -p40001-40200:40001-40200 \
  -p40001-40200:40001-40200/udp \
  gnunet

This terminal will keep on printing to screen at the moment. So go on in a new terminal please.

Don't worry about warnings too much...

Check if you are connected

Open a new terminal and connect to the container we just started:

docker exec -it gnunet1 gnunet-peerinfo -i

If you get a list of peers, all is good.

Multiple containers on the same host

Running

Run Container 1

export GPORT=2086 LPORT='40001-40200' GNAME=gnunet1
docker run \
  --rm \
  -it \
  --privileged \
  -e GNUNET_PORT=$GPORT \
  -e LOCAL_PORT_RANGE="${LPORT/-/ }" \
  -p $GPORT:$GPORT \
  -p $GPORT:$GPORT/udp \
  -p$LPORT:$LPORT \
  -p$LPORT:$LPORT/udp \
  --name $GNAME \
  gnunet

Run Container 2

export GPORT=2087 LPORT='40201-40400' GNAME=gnunet2
docker run \
  --rm \
  -it \
  --privileged \
  -e GNUNET_PORT=$GPORT \
  -e LOCAL_PORT_RANGE="${LPORT/-/ }" \
  -p $GPORT:$GPORT \
  -p $GPORT:$GPORT/udp \
  -p$LPORT:$LPORT \
  -p$LPORT:$LPORT/udp \
  --name $GNAME \
  gnunet

Testing cadet example

Container 1

$ docker exec -it gnunet1 bash
$ gnunet-peerinfo -s
I am peer `VWPN1NZA6YMM866EJ5J2NY47XG692MQ6H6WASVECF0M18A9SCMZ0'.
$ gnunet-cadet -o asdasd

Container 2

$ docker exec -it gnunet2 bash
$ gnunet-cadet VWPN1NZA6YMM866EJ5J2NY47XG692MQ6H6WASVECF0M18A9SCMZ0 asdasd

Testing file sharing example

Container 1

$ docker exec -it gnunet1 bash
$ echo 'test' > test.txt
$ gnunet-publish test.txt
Publishing `/test.txt' done.
URI is `gnunet://fs/chk/1RZ7A8TAQHMF8DWAGTSZ9CSA365T60C4BC6DDS810VM78D2Q0366CRX8DGFA29EWBT9BW5Y9HYD0Z1EAKNFNJQDJ04QQSGTQ352W28R.7MYB03GYXT17Z93ZRZRVV64AH9KPWFSVDEZGVE84YHD63XZFJ36B86M48KHTZVF87SZ05HBVB44PCXE8CVWAH72VN1SKYPRK1QN2C98.5'.

Container 2

$ docker exec -it gnunet2 bash
$ gnunet-download -o out.file "gnunet://fs/chk/1RZ7A8TAQHMF8DWAGTSZ9CSA365T60C4BC6DDS810VM78D2Q0366CRX8DGFA29EWBT9BW5Y9HYD0Z1EAKNFNJQDJ04QQSGTQ352W28R.7MYB03GYXT17Z93ZRZRVV64AH9KPWFSVDEZGVE84YHD63XZFJ36B86M48KHTZVF87SZ05HBVB44PCXE8CVWAH72VN1SKYPRK1QN2C98.5"
100% [============================================================]
Downloading `out.file' done (0 b/s).
$ cat out.file
test