Sign inSign up

eecdn/ee-cdn-edge

By eecdn

•Updated 43 minutes ago

Edge node for the Evolving Edge CDN - caches and serves .ee workloads over WebRTC

Image
Networking
2

2.5K

eecdn/ee-cdn-edge repository overview

⁠Evolving Edge Node

Run an Evolving Edge⁠ edge node in a container. Your node caches and serves content to people in your city for the Evolving Edge network from spare storage and bandwidth, and earns you cash payments.

In short: a multi-arch image for linux/amd64 and linux/arm64. Start it with the Compose file below, open the pairing link it prints in its logs, and keep its volumes. They hold the node's identity, and losing them starts you over as a new node.

⁠Supported architectures

Pulling eecdn/ee-cdn-edge:latest gives you the right image for your machine.

ArchitectureDocker platformRuns onTags
x86-64linux/amd64Intel and AMD PCs and servers, most NAS devices, Intel Macs with Docker Desktoplatest, v0, vX.Y.Z, vX.Y.Z-amd64
ARM 64-bitlinux/arm64Raspberry Pi 3, 4 and 5 running a 64-bit OS, Apple Silicon Macs with Docker Desktop, ARM servers, ARM-based NAS deviceslatest, v0, vX.Y.Z, vX.Y.Z-arm64

32-bit ARM (armv7) is not available as an image. On a Raspberry Pi, install a 64-bit OS and use the arm64 image. Check with uname -m: aarch64 works, armv7l does not.

Home Assistant: an add-on for amd64 and aarch64 (64-bit ARM) is on the way. It runs the same node binary as this image.

⁠Tags

TagWhat it is
latestThe newest release. Recommended.
v0The newest release in the 0.x series
vX.Y.Z (e.g. v0.0.103)One exact release, pinned
vX.Y.Z-amd64, vX.Y.Z-arm64A single-architecture image. You don't normally need these; the tags above select one for you.
sha256-….sigCosign signatures for the images, not images themselves

⁠Before you start

  • You need to live in the United States to run a node.
  • Create an operator account at portal.3dge.app⁠.
  • Minimum hardware: a dual-core CPU, 2 GB RAM free and 10 GB of available storage.
curl -fsSL https://cp.3dge.app/docker-compose.yml -o docker-compose.yml
docker compose up -d
docker compose logs -f edge-node

Keep the Compose file as it is. Three of its settings keep your node's identity; see Keep your node's identity below.

⁠Pair the node with your account

On its first start the node prints a pairing code and a link:

Code: XXXX-XXXX
URL:  https://…
Waiting for authorization...

Open the link, sign in to your operator account and approve the device. The node finishes enrolling by itself; you don't need to restart it. You'll see:

[Auth] Enrollment complete — authenticating as <node-id>

Your node now appears under Edge Nodes in the portal⁠.

⁠Or run it with docker run

First create a machine ID file, once, and keep it. It gives the container a fixed identity (see below).

Linux and macOS:

uuidgen | tr -d '-' | tr 'A-F' 'a-f' > ~/edge-node-machine-id

Windows (PowerShell):

[guid]::NewGuid().ToString('N') | Out-File -Encoding ascii $HOME\edge-node-machine-id

Create the file before you start the container. If the path doesn't exist, Docker creates an empty directory there instead, and the node behaves as if it had no machine ID.

Then start the node:

docker volume create edge-data

docker run -d \
  --name edge-node \
  --hostname edge-node \
  --restart unless-stopped \
  -p 8080:8080 \
  -v edge-data:/data \
  -v ~/edge-node-machine-id:/etc/machine-id:ro \
  -e HOME=/data \
  -e PORT=8080 \
  -e HOST=0.0.0.0 \
  -e HEARTBEAT_SECONDS=30 \
  -e EE_INSTALL_METHOD=docker \
  -e CONTROL_PLANE_URL=https://cp.3dge.app \
  docker.io/eecdn/ee-cdn-edge:latest

docker logs -f edge-node

Then pair it as described above.

⁠Keep your node's identity

Your Active Node Hours, badges, leaderboard position and referral program qualification belong to one node identity. A container has no identity of its own, so three settings supply one. They only work together:

SettingComposedocker runWhy it matters
Node data on a volumeHOME=/data and the edge-data volume-e HOME=/data -v edge-data:/dataStores the node's encrypted credentials. Without HOME=/data they are written inside the container and lost when it is recreated.
A fixed hostnamehostname: edge-node--hostname edge-nodeOne of the two inputs to the key that decrypts those credentials
A persistent machine IDthe edge-identity volumethe machine ID fileThe other input, and what the network recognises the node by

If you leave out any of them, or delete a volume or the machine ID file, recreating the container enrolls a brand-new node whose history starts from zero. Your account, balance and payouts are not affected.

Two more things:

  • Don't clone a node. Copying the volumes or the machine ID file to another machine gives both machines the same identity. Start each new node fresh.
  • Treat the edge-data volume as private. It holds the node's credentials.

⁠Ports and reachability

PortProtocolPurpose
8080TCPThe node's HTTP port

If 8080 is already taken on your host, change only the left side of the mapping, e.g. 8081:8080.

To be eligible for gateway mode, the node must also be reachable from the internet. For example, forward a TCP port on your router to the Docker host's published port. You can check eligibility in the portal.

⁠Check that it's running

docker compose ps                         # or: docker ps
curl http://<docker-host>:8080/health

The container restarts itself unless you stop it. Each node checks in every 30 seconds, and uptime counts toward your Performance Index⁠, so leave it running.

⁠Update

docker compose pull
docker compose up -d

With docker run, pull the new image, remove the container and run the same command again. Your volumes and machine ID file carry the node's identity across the update.

⁠Start over as a new node

Removing a node in the portal doesn't reset the container, which keeps its saved credentials. To pair again from scratch, remove the container and its volumes (docker compose down -v, or docker rm -f edge-node && docker volume rm edge-data), delete the machine ID file if you used one, and start again. The result is a new node.

⁠Portainer and other Docker UIs

Deploy the Compose file as a stack. In Portainer, go to Stacks → Add stack → Web editor and paste the contents of cp.3dge.app/docker-compose.yml⁠. The pairing link appears in the container's logs.

Tag summary

Content type

Image

Digest

sha256:25cbce750…

Size

13.4 MB

Last updated

43 minutes ago

docker pull eecdn/ee-cdn-edge