From f186b71ca51e83837db60de13322394bb5e6d348 Mon Sep 17 00:00:00 2001 From: murilo ijanc Date: Tue, 24 Mar 2026 21:41:06 -0300 Subject: Initial commit Import existing tesseras.net website content. --- book/en/docker.html | 303 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 book/en/docker.html (limited to 'book/en/docker.html') diff --git a/book/en/docker.html b/book/en/docker.html new file mode 100644 index 0000000..e6e4570 --- /dev/null +++ b/book/en/docker.html @@ -0,0 +1,303 @@ + + + + + + Docker - Tesseras User Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Keyboard shortcuts

+
+

Press or to navigate between chapters

+

Press S or / to search in the book

+

Press ? to show this help

+

Press Esc to hide this help

+
+
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + + + + + + +
+
+

Docker

+

Tesseras provides a Docker image for running the daemon in containers. This is useful for servers, testing multi-node networks, and CI environments.

+

Building the image

+

From the repository root:

+
docker build -t tesseras-daemon .
+
+

The multi-stage Dockerfile uses rust:1.85 to compile and debian:bookworm-slim as the runtime base. The resulting image is small and contains only the daemon binary and CA certificates.

+

Running a single node

+
docker run -d \
+  --name tesseras \
+  -p 4433:4433/udp \
+  tesseras-daemon
+
+

This starts a node that:

+
    +
  • Listens on UDP port 4433
  • +
  • Bootstraps from the default seed nodes
  • +
  • Stores data inside the container (ephemeral)
  • +
+

To persist data across container restarts, mount a volume:

+
docker run -d \
+  --name tesseras \
+  -p 4433:4433/udp \
+  -v tesseras-data:/root/.local/share/tesseras \
+  tesseras-daemon
+
+

Running as a seed node

+

To run a seed node that doesn’t bootstrap from anyone else:

+
docker run -d \
+  --name tesseras-seed \
+  -p 4433:4433/udp \
+  tesseras-daemon --listen 0.0.0.0:4433 --bootstrap ""
+
+

Multi-node network with Docker Compose

+

The repository includes a Docker Compose file for testing a 3-node network:

+
services:
+  boot1:
+    build: ../..
+    command: ["--listen", "0.0.0.0:4433", "--bootstrap", ""]
+    ports: ["4433:4433/udp"]
+
+  boot2:
+    build: ../..
+    command: ["--listen", "0.0.0.0:4433", "--bootstrap", "boot1:4433"]
+    depends_on: [boot1]
+
+  client:
+    build: ../..
+    command: ["--listen", "0.0.0.0:4433", "--bootstrap", "boot2:4433"]
+    depends_on: [boot2]
+
+

Start the network:

+
cd tests/smoke
+docker compose up --build -d
+
+

Check that all nodes are running:

+
docker compose logs --tail=5
+
+

You should see daemon ready in the logs for each node, and bootstrap successful for boot2 and client.

+

Stop the network:

+
docker compose down
+
+

Custom configuration

+

To use a config file with Docker, mount it into the container:

+
docker run -d \
+  --name tesseras \
+  -p 4433:4433/udp \
+  -v ./config.toml:/etc/tesseras/config.toml:ro \
+  -v tesseras-data:/root/.local/share/tesseras \
+  tesseras-daemon --config /etc/tesseras/config.toml
+
+

See the Configuration chapter for all available options.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + -- cgit v1.2.3