This is LCDVN's v0.3.14 release and is a recommended update for all operators. It updates Charon to v1.11.3 and further tightens the defaults introduced in v0.3.12. Feedback is welcome and appreciated, please use github issues or discord if you have trouble with this release.
Update
# Stop the node
docker compose down
# Save your local .env / custom overrides
git stash
# Update your local copy of this repo
git pull
# Checkout this release
git checkout v0.3.14
# Re-apply your stashed changes
git stash apply
# Restart the node
docker compose up -d
# Check your node (may need sudo)
./grafana/security-check.shIf you are updating from a release before v0.3.12, also read the v0.3.12 release notes.
Changes
- Charon
v1.11.3redacts credentials and API keys in beacon node and execution client URLs from its logs. If any of your beacon node or execution client URLs contain a password or API key, rotate it: earlier versions logged these URLs in full. - Only P2P ports should face the internet. Ports that Docker publishes are not filtered by host firewalls such as
ufw. On a VPS or bare-metal host, only the EL, CL and charon P2P ports need to accept incoming connections; keep everything else on127.0.0.1. The example ports indocker-compose.override.yml.samplenow bind to127.0.0.1, so copy them as they are. security-check.shchecks more. It lists every non-P2P port your node publishes on a public address, and finds more signs of changes in the olddata/grafana, including on recent Grafana versions. Files you added undergrafana/yourself, such as custom dashboards, are listed for review rather than reported as findings.- Read-only mounts. Grafana's provisioning files and dashboards, and the validator ejector's exit messages, are mounted read-only.
validator-ejector/is now in.gitignore. - Nethermind's JSON-RPC no longer enables the
TraceandParitymodules, which nothing in this stack uses. - Re-enabling Grafana logins: the README's example now turns anonymous access off and asks you to reset the admin password before restarting. If you followed the old example, run
docker compose exec grafana grafana cli admin reset-admin-password '<a strong password>'.
Note
The client version variables documented in .env.sample.* (such as CL_LIGHTHOUSE_VERSION, NETHERMIND_VERSION and RETH_VERSION) now take effect. Previously the compose files read different names and ignored them. If you left one of these uncommented in your .env, that version is used after updating, so check that it isn't stale.
What's Changed
- feat: hardening follow up by @OisinKyne in #342
Full Changelog: v0.3.13...v0.3.14