Nodes on systems without a machine ID now keep their identity
An edge node on a system with no machine ID came back as a brand new node every time it paired, and the key protecting its stored credentials came from its hostname alone. It now creates and keeps an identity of its own. Affected nodes pair once more after updating.
Most systems give each machine a permanent ID, and the edge node uses it, hashed, as the node’s identity on the network. Some systems don’t provide one, including a number of container images and appliance platforms. A node running on one of them had no identity to present, so every time it paired, the network treated it as a brand new node: Active Node Hours back to zero, and its leaderboard place, badges and history gone.
The same ID also feeds the key that encrypts the node’s stored credentials. Without it, that key came from the hostname alone, which some platforms set predictably, so a copy of the encrypted credentials file was far easier to decrypt than it should have been.
From edge-node v0.0.104, a node that finds no machine ID creates a random one the first time it starts, keeps it in its own home directory, and uses it from then on, both as its identity and in the key that protects its credentials. Nodes on systems that do have a machine ID are unaffected.
What you need to do
- On most computers, nothing. They provide a machine ID, and the node keeps using it.
- Docker, with our Compose file: nothing. It already provides a machine ID and keeps it on a volume; see Docker nodes keep their identity when the container is recreated.
- Any other container: make sure the node’s home directory is on persistent storage. The new ID lives there, and a container that loses it on every recreate is back where it started. Our Compose file does this by setting
HOME=/dataon its data volume.
Affected nodes pair once more
A node on a system without a machine ID asks to pair again after it updates to v0.0.104 or later. Its stored credentials were encrypted with the old key and can’t be read with the new one, and there was never an identity to carry over. It comes back as a new node, so its Active Node Hours start from zero that one last time. From then on it keeps its identity.