Core-GethThe pages of this site follow this link

Install Core-Geth

Install Core-Geth and run an Ethereum Classic node

This guide takes a machine with nothing installed to a node that has caught up with the Ethereum Classic network and holds peers, on the latest v1.13 release or a build of the main branch.

Replacing a node that runs a v1.12 release? Follow Migrate Core-Geth instead: a node that ran v1.12 needs a new P2P node key before it starts again, and the steps here start a node on the key it has.

Before you install Core-Geth

Check the machine, then choose a route

A full node needs room for the chain, memory and time to sync: the documentation's hardware requirements page has the figures, measured on each network.

  • A release archive, for Linux, macOS or Windows. The checksum and build attestation published with it let you check the file before it runs.
  • A container image, for a host that already runs containers.
  • A build from source of the main branch, on a machine with none of the build tools: the steps install them first.

The start steps run a node on Ethereum Classic; for the Mordor test network, use --mordor in place of --classic. On a first run, Windows names the publisher as unknown and macOS blocks a downloaded binary until it is allowed: the documentation's installation guide says how to proceed on each.

Installing Core-Geth

Install Core-Geth on your platform

Run each block in order, and read the note under it before the next. Every tab ends with the start step: before you run it, check what you downloaded with the commands below.

The start step in the Linux tab carries a recording of the node's first start, made installing v1.13.0.

Choose your platform

Linux

The x86-64 and Arm64 archives need glibc 2.17 or newer, which is RHEL 7, CentOS 7 and anything more recent; the 32-bit Arm archives need glibc 2.28 or newer. The release report lists every archive and its platform.

Install curl and unzip

On Debian or Ubuntu:

sudo apt-get update && sudo apt-get install -y curl unzip

On Fedora or RHEL, run sudo dnf install -y --refresh curl unzip && sudo dnf upgrade -y curl unzip instead, and on Arch, sudo pacman -Syu --needed curl unzip. Each line also updates curl and unzip if they are already installed.

Download the release, check it and install it

curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-linux-v1.13.0.zip
curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-linux-v1.13.0.zip.sha256
sha256sum -c core-geth-linux-v1.13.0.zip.sha256 &&
  unzip -o core-geth-linux-v1.13.0.zip &&
  sudo install -m 0755 geth /usr/local/bin/geth &&
  geth version

sha256sum -c must print OK: if it prints FAILED, delete the file and download it again rather than running it. On an Arm machine, put the name for your processor where the file name says linux: arm64 if uname -m prints aarch64 or arm64, arm7 for armv7l, arm6 for armv6l, and arm5 for armv5tel.

Start a node on Ethereum Classic

geth --classic

For the Mordor test network, run geth --mordor instead.

Recorded on Linux, installing v1.13.0geth --classic starts the node with snap sync. It advertises 203.0.113.10, an address reserved for documentation, set with GETH_NAT for this recording in place of the node's own. It opens its IPC endpoint, logs Block synchronisation started as it finds peers, and begins downloading the chain.
Linux users guide

macOS

Download the release, check it and install it

curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-osx-arm64-v1.13.0.zip
curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-osx-arm64-v1.13.0.zip.sha256
shasum -a 256 -c core-geth-osx-arm64-v1.13.0.zip.sha256 &&
  unzip -o core-geth-osx-arm64-v1.13.0.zip &&
  sudo mkdir -p /usr/local/bin &&
  sudo install -m 0755 geth /usr/local/bin/geth &&
  geth version

shasum -a 256 -c must print OK: if it prints FAILED, delete the file and download it again rather than running it. On an Intel Mac, put osx where the file names say osx-arm64. A browser download carries the quarantine attribute, which macOS blocks: xattr -d com.apple.quarantine geth clears it.

Start a node on Ethereum Classic

geth --classic

For the Mordor test network, run geth --mordor instead.

macOS users guide

Windows

Download the release and check it

# In PowerShell
Invoke-WebRequest "https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-win64-v1.13.0.zip" -OutFile "core-geth-win64-v1.13.0.zip"
Invoke-WebRequest "https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-win64-v1.13.0.zip.sha256" -OutFile "core-geth-win64-v1.13.0.zip.sha256"

# Compare these two lines
(Get-FileHash "core-geth-win64-v1.13.0.zip" -Algorithm SHA256).Hash
Get-Content "core-geth-win64-v1.13.0.zip.sha256"

Compare those two lines yourself: the letters must match and the case need not, since Get-FileHash prints uppercase and the .sha256 file holds lowercase followed by the file name. If they differ, delete the file and download it again rather than running it.

If the two lines match, unpack the release

Expand-Archive "core-geth-win64-v1.13.0.zip" -DestinationPath C:\core-geth -Force
C:\core-geth\geth.exe version

The first line geth.exe version prints must name a v1.13 release.

Start a node on Ethereum Classic

cd C:\core-geth
.\geth.exe --classic

For the Mordor test network, run .\geth.exe --mordor instead.

Windows users guide

Containers

Check Docker and the GitHub CLI

These steps need Docker to pull and run the image, and the GitHub CLI to check where the image came from:

docker version --format '{{.Server.Version}}'
gh --version
gh auth status

The first line must print the Docker engine's version. An error in its place means Docker is not installed or not running: Get Docker says how to install it. gh --version must print 2.49.0 or later, the release that added gh attestation. gh auth status must say you are logged in to github.com. If it does not, run gh auth login. Install or update the GitHub CLI from cli.github.com. On Debian and Ubuntu, take GitHub's own package: theirs are older than 2.49.0.

Pull the published image and check where it came from

docker pull ghcr.io/ethereumclassic/core-geth:latest
gh attestation verify oci://ghcr.io/ethereumclassic/core-geth:latest --repo ethereumclassic/core-geth

gh attestation verify must print Verification succeeded and name .github/workflows/docker-publish.yml. If it does not, do not run the image.

Start a node, keeping the chain in a named volume

docker run --rm ghcr.io/ethereumclassic/core-geth:latest version
docker run -d --name core-geth-classic \
    --restart unless-stopped --stop-timeout 300 \
    -v core-geth-classic:/root \
    -p 30303:30303 -p 30303:30303/udp \
    ghcr.io/ethereumclassic/core-geth:latest --classic

The first line confirms that the image runs. The volume is mounted at /root, so the chain survives the container being replaced. For Mordor, run the same command with core-geth-mordor as the container and volume name and --mordor as the flag.

Docker users guide

Source

Each tab starts from a machine with none of the build tools: it installs them, checks each one's version, and builds the main branch.

Choose your platform for building from source

Build from source on Linux

Install Git, a C compiler and make

On Debian or Ubuntu:

sudo apt-get update && sudo apt-get install -y build-essential git curl

On Fedora or RHEL, run sudo dnf install -y --refresh gcc make git && sudo dnf upgrade -y gcc make git instead, and on Arch, sudo pacman -Syu --needed base-devel git, which brings the rest of the system current with them, as Arch requires. Each line also updates a tool that is already installed. build-essential and base-devel carry the C compiler and make, and the next step downloads with curl.

Install Go 1.26.8

main pins Go 1.26.8 in its build/checksums.txt, the Go its release builds use. This installs Go 1.26.8 from the Go project's downloads at go.dev, and checks the download against the SHA-256 the same file pins:

curl -LO https://go.dev/dl/go1.26.8.linux-amd64.tar.gz
echo "d0f743b33e8d8945e6b1f432edd15785c70507121d6e2a723b21285eddf8b57b  go1.26.8.linux-amd64.tar.gz" | sha256sum -c &&
  sudo rm -rf /usr/local/go &&
  sudo tar -C /usr/local -xzf go1.26.8.linux-amd64.tar.gz &&
  sudo ln -sf /usr/local/go/bin/go /usr/local/bin/go &&
  hash -r &&
  go version

sha256sum -c must print OK: if it prints FAILED, delete the file and download it again rather than installing it. The block replaces any Go in /usr/local/go, and go version must then print go1.26.8. On a 64-bit Arm machine, where uname -m prints aarch64, put go1.26.8.linux-arm64.tar.gz in place of the file name and 211ffced9dcb9633a55eac6364816ec0ddd951389a740e88fa8b3337971bdda0 in place of the SHA-256. On 32-bit Arm, use go1.26.8.linux-armv6l.tar.gz and eab440beabf395870752021fa74cedf04f97b61e43ebbe005ecbb98b94e55697.

Check the tools
git --version
go version
gcc --version
make --version

Each line must print a version, and go version must print go1.26.8. A line that prints an error names a tool the steps above did not install. If go version prints another release, a Go earlier on PATH than /usr/local/bin runs in its place: uninstall that Go.

Build the main branch
git clone --branch main --single-branch https://github.com/ethereumclassic/core-geth.git &&
  cd core-geth &&
  make geth &&
  ./build/bin/geth version

main carries patches and dependency updates before a release does: every change reaches it through a pull request that needs an approving review and the project's required checks. It keeps moving, so two builds a day apart can be different code. It is not a release: until a release is prepared, geth version ends its first line with -unstable, and its Git Commit line names the commit you built. An existing core-geth folder stops this block at the clone rather than building an old copy: to build main again, run git pull in that folder and build there, or remove the folder first.

Install the build
ls build/bin/geth &&
  sudo install -m 0755 build/bin/geth /usr/local/bin/geth &&
  geth version

Run this in the folder the build step left you in: the first line stops the block anywhere else. geth version must print the same first line and Git Commit line the build printed.

Start a node on Ethereum Classic
geth --classic

For the Mordor test network, run geth --mordor instead.

Build from source

Build from source on macOS

Install the Xcode Command Line Tools
xcode-select --install

A window asks whether to install the tools: choose Install, and wait until it says the software was installed. The tools carry Git, the C compiler and make. If they are already installed, the command says so: install any update for them that Software Update lists in System Settings, then go on to the next step.

On an Apple Silicon Mac, install Go 1.26.8

main pins Go 1.26.8 in its build/checksums.txt, the Go its release builds use. This installs Go 1.26.8 from the Go project's downloads at go.dev, and checks the download against the SHA-256 the same file pins. uname -m prints arm64 on Apple Silicon and x86_64 on Intel:

curl -LO https://go.dev/dl/go1.26.8.darwin-arm64.tar.gz
echo "a012b25b571bd0138a03dcd25375ceba866fe5ca822f426d2c66a4de56fd3f4b  go1.26.8.darwin-arm64.tar.gz" | shasum -a 256 -c &&
  sudo rm -rf /usr/local/go &&
  sudo tar -C /usr/local -xzf go1.26.8.darwin-arm64.tar.gz &&
  sudo mkdir -p /usr/local/bin &&
  sudo ln -sf /usr/local/go/bin/go /usr/local/bin/go &&
  hash -r &&
  go version

shasum -a 256 -c must print OK: if it prints FAILED, delete the file and download it again rather than installing it. The block replaces any Go in /usr/local/go, and go version must then print go1.26.8.

On an Intel Mac, install Go 1.26.8

The same release, built for Intel:

curl -LO https://go.dev/dl/go1.26.8.darwin-amd64.tar.gz
echo "186be014105aa6542b767d2c6ed5cca10a0214bdff809ef1724022a8c7894150  go1.26.8.darwin-amd64.tar.gz" | shasum -a 256 -c &&
  sudo rm -rf /usr/local/go &&
  sudo tar -C /usr/local -xzf go1.26.8.darwin-amd64.tar.gz &&
  sudo mkdir -p /usr/local/bin &&
  sudo ln -sf /usr/local/go/bin/go /usr/local/bin/go &&
  hash -r &&
  go version

shasum -a 256 -c must print OK: if it prints FAILED, delete the file and download it again rather than installing it. The block replaces any Go in /usr/local/go, and go version must then print go1.26.8.

Check the tools
git --version
go version
gcc --version
make --version

Each line must print a version, and go version must print go1.26.8. gcc --version prints Apple clang, the C compiler on macOS. A line that prints an error names a tool the steps above did not install. If go version prints another release, a Go earlier on PATH, such as one from Homebrew, runs in its place: uninstall that Go.

Build the main branch
git clone --branch main --single-branch https://github.com/ethereumclassic/core-geth.git &&
  cd core-geth &&
  make geth &&
  ./build/bin/geth version

main carries patches and dependency updates before a release does: every change reaches it through a pull request that needs an approving review and the project's required checks. It keeps moving, so two builds a day apart can be different code. It is not a release: until a release is prepared, geth version ends its first line with -unstable, and its Git Commit line names the commit you built. An existing core-geth folder stops this block at the clone rather than building an old copy: to build main again, run git pull in that folder and build there, or remove the folder first.

Install the build
ls build/bin/geth &&
  sudo mkdir -p /usr/local/bin &&
  sudo install -m 0755 build/bin/geth /usr/local/bin/geth &&
  geth version

Run this in the folder the build step left you in: the first line stops the block anywhere else. geth version must print the same first line and Git Commit line the build printed.

Start a node on Ethereum Classic
geth --classic

For the Mordor test network, run geth --mordor instead.

Build from source

Build from source on Windows

Check for Chocolatey

In a PowerShell window opened with Run as administrator, which the Chocolatey steps need:

choco --version

If PowerShell says the term is not recognized, Chocolatey is not installed: take the next step. If the version starts with 1, skip the next step and take the one after it. If it starts with 2, go to "Update Chocolatey, then install Git and a C compiler".

If Chocolatey is not installed, install it

WinGet, which comes with Windows 11, installs Chocolatey from its publisher:

winget install --id Chocolatey.Chocolatey -e --source winget --accept-source-agreements --accept-package-agreements

Approve the prompt the installer shows. Then open a new PowerShell window with Run as administrator for the next steps: a window opened before the install does not find Chocolatey.

If Chocolatey is version 1, move it to 1.4.0 first
choco upgrade chocolatey --version 1.4.0 --allow-downgrade -y

Chocolatey's guide to version 2 moves a version 1 to 1.4.0 before the upgrade to version 2, which the next step makes. Skip this step on version 2: it would downgrade Chocolatey.

Update Chocolatey, then install Git and a C compiler
choco upgrade chocolatey -y
choco upgrade mingw git -y
choco --version

choco upgrade installs what is missing and moves what is installed to its current release, so an older Chocolatey, Git or MinGW-w64 is updated rather than kept. The last line must print a version starting with 2. If the first line asks for a restart to install .NET Framework 4.8, which Chocolatey 2 needs, restart and run this block again. mingw is MinGW-w64, the C compiler cgo needs on Windows. The next two steps can run in this window.

Download Go 1.26.8 and check it

main pins Go 1.26.8 in its build/checksums.txt, the Go its release builds use. This downloads the Go 1.26.8 installer from the Go project's downloads at go.dev, and checks the download against the SHA-256 go.dev publishes for the installer. An administrator window opens in C:\Windows\System32, so the first line moves to your home folder:

cd $HOME
Invoke-WebRequest "https://go.dev/dl/go1.26.8.windows-amd64.msi" -OutFile "go1.26.8.windows-amd64.msi"
(Get-FileHash "go1.26.8.windows-amd64.msi" -Algorithm SHA256).Hash -eq "0581e37d54c8f2876c447204737d4aaa3f65f983005c65a1d5186b5f18ae3eca"

The last line must print True. If it prints False, delete the file and download it again rather than running it.

If the check printed True, run the Go installer
msiexec /i "$HOME\go1.26.8.windows-amd64.msi" /passive | Out-Null

The installer shows a progress bar and takes its defaults, which put Go in C:\Program Files\Go and on PATH. The line returns once it has finished.

Check the tools

In the same window:

$env:Path = [Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [Environment]::GetEnvironmentVariable("Path", "User")
git --version
go version
gcc --version

The first line reloads PATH from Windows' settings, so this window finds what the steps above installed. Each line after it must print a version, and go version must print go1.26.8. A line saying the term is not recognized names a tool the steps above did not install.

Build the main branch
cd $HOME
git clone --branch main --single-branch https://github.com/ethereumclassic/core-geth.git
cd core-geth
go run build/ci.go install ./cmd/geth
.\build\bin\geth.exe version

main carries patches and dependency updates before a release does: every change reaches it through a pull request that needs an approving review and the project's required checks. It keeps moving, so two builds a day apart can be different code. It is not a release: until a release is prepared, geth version ends its first line with -unstable, and its Git Commit line names the commit you built. Run these in PowerShell, one line at a time. If git clone reports that core-geth already exists, run git pull in that folder before the build line.

Install the build
New-Item -ItemType Directory -Force C:\core-geth | Out-Null
Copy-Item .\build\bin\geth.exe C:\core-geth\geth.exe
C:\core-geth\geth.exe version

Run these in the core-geth folder the build step left you in. The last line must print the same first line and Git Commit line the build printed. C:\core-geth is where the Windows download puts the client, so a node starts the same way from either.

Start a node on Ethereum Classic
cd C:\core-geth
.\geth.exe --classic

For the Mordor test network, run .\geth.exe --mordor instead.

Build from source

Every file the latest release published, with its checksum, is listed on Downloads.

Verifying a Core-Geth download

Check what you downloaded

Run these after the download and before the node's first start. The checksum confirms the file arrived intact, and the build attestation names the workflow run that built it and the commit it built from.

Choose your platform for checking a download

Linux

Check the GitHub CLI

Checking where a file came from needs the GitHub CLI, signed in to GitHub. Debian's and Ubuntu's own gh packages are older than 2.49.0, so install or update GitHub's own package, as Installing gh on Linux shows for each distribution. Then confirm the release and the sign-in:

gh --version
gh auth status

gh --version must print 2.49.0 or later, the release that added gh attestation. gh auth status must say you are logged in to github.com. If it does not, run gh auth login. The checksum line in the next step does not need the GitHub CLI.

Check an archive

# 1. Check that the archive arrived intact
sha256sum -c core-geth-linux-v1.13.0.zip.sha256
# core-geth-linux-v1.13.0.zip: OK

# 2. Check where the archive came from
gh attestation verify core-geth-linux-v1.13.0.zip --repo ethereumclassic/core-geth
# Loaded digest sha256:... for file://core-geth-linux-v1.13.0.zip
# Loaded 1 attestation from GitHub API
# ✓ Verification succeeded!
#
# - Attestation #1
#   - Build repo:..... ethereumclassic/core-geth
#   - Build workflow:. .github/workflows/release-packages.yml@refs/tags/v1.13.0

sha256sum -c must print OK. If it prints FAILED, delete the file and download it again rather than running it. gh attestation verify must print Verification succeeded and name .github/workflows/release-packages.yml. If it does not, do not run the file. For another archive, put its name in place of core-geth-linux-v1.13.0.zip, such as core-geth-arm64-v1.13.0.zip.

Verify where the archive came from

macOS

Check the GitHub CLI

Checking where a file came from needs the GitHub CLI, signed in to GitHub. Install or update it with Homebrew, brew install gh, or with the macOS installer from GitHub's releases. Then confirm the release and the sign-in:

gh --version
gh auth status

gh --version must print 2.49.0 or later, the release that added gh attestation. gh auth status must say you are logged in to github.com. If it does not, run gh auth login. The checksum line in the next step does not need the GitHub CLI.

Check an archive

shasum -a 256 -c core-geth-osx-arm64-v1.13.0.zip.sha256
gh attestation verify core-geth-osx-arm64-v1.13.0.zip --repo ethereumclassic/core-geth

shasum -a 256 -c must print OK. If it prints FAILED, delete the file and download it again rather than running it. gh attestation verify must print Verification succeeded and name .github/workflows/release-packages.yml. If it does not, do not run the file. On an Intel Mac, put osx where the file names say osx-arm64.

Verify where the archive came from

Windows

Install or update the GitHub CLI

Checking where a file came from needs the GitHub CLI, signed in to GitHub. In PowerShell, WinGet, which comes with Windows 11, installs it, or updates an older one:

winget install --id GitHub.cli -e --source winget --accept-source-agreements --accept-package-agreements

Approve the prompt the installer shows.

Check the GitHub CLI

In the same window:

$env:Path = [Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [Environment]::GetEnvironmentVariable("Path", "User")
gh --version
gh auth status

The first line reloads PATH from Windows' settings, so this window finds gh. gh --version must print 2.49.0 or later, the release that added gh attestation. gh auth status must say you are logged in to github.com. If it does not, run gh auth login. The checksum line in the next step does not need the GitHub CLI.

Check an archive

# 1. Check that the archive arrived intact: compare these two lines, in PowerShell
(Get-FileHash "core-geth-win64-v1.13.0.zip" -Algorithm SHA256).Hash
Get-Content "core-geth-win64-v1.13.0.zip.sha256"

# 2. Check where the archive came from
gh attestation verify core-geth-win64-v1.13.0.zip --repo ethereumclassic/core-geth
# Loaded digest sha256:... for file://core-geth-win64-v1.13.0.zip
# Loaded 1 attestation from GitHub API
# ✓ Verification succeeded!
#
# - Attestation #1
#   - Build repo:..... ethereumclassic/core-geth
#   - Build workflow:. .github/workflows/release-packages.yml@refs/tags/v1.13.0

Compare those two lines yourself: the letters must match and the case need not, since Get-FileHash prints uppercase and the .sha256 file holds lowercase followed by the file name. If they differ, delete the file and download it again rather than running it. gh attestation verify must print Verification succeeded and name .github/workflows/release-packages.yml. If it does not, do not run the file.

Verify where the archive came from

Containers

Check Docker and the GitHub CLI

These steps need Docker to load the image, and the GitHub CLI to check where the image came from:

docker version --format '{{.Server.Version}}'
gh --version
gh auth status

The first line must print the Docker engine's version. An error in its place means Docker is not installed or not running: Get Docker says how to install it. gh --version must print 2.49.0 or later, the release that added gh attestation. gh auth status must say you are logged in to github.com. If it does not, run gh auth login. Install or update the GitHub CLI from cli.github.com. On Debian and Ubuntu, take GitHub's own package: theirs are older than 2.49.0.

Check an image file

curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-docker-amd64-v1.13.0.tar.gz
curl -LO https://github.com/ethereumclassic/core-geth/releases/download/v1.13.0/core-geth-docker-amd64-v1.13.0.tar.gz.sha256
sha256sum -c core-geth-docker-amd64-v1.13.0.tar.gz.sha256
gh attestation verify core-geth-docker-amd64-v1.13.0.tar.gz --repo ethereumclassic/core-geth

On an Arm64 host, put docker-arm64 where the file name says docker-amd64. sha256sum -c must print OK: if it prints FAILED, delete the file and download it again rather than loading it. gh attestation verify must print Verification succeeded and name .github/workflows/docker-publish.yml. If it does not, do not load the file.

Load the image

docker load -i core-geth-docker-amd64-v1.13.0.tar.gz

The loaded image keeps its published name, with v1.13.0 as its tag and no latest tag. Use that name in place of latest in a docker run command, because a command that names latest makes Docker pull from the registry.

Load the image from the release

Source

Choose your platform for checking a build from source

Check a build from source on Linux

Check the commit you built
git rev-parse HEAD
go version -m ./build/bin/geth | grep vcs.revision

Run these in the clone: the first line is the commit you checked out and the second is the commit the binary was built from. Both lines must name the same commit.

How do I verify a download?

Check a build from source on macOS

Check the commit you built
git rev-parse HEAD
go version -m ./build/bin/geth | grep vcs.revision

Run these in the clone: the first line is the commit you checked out and the second is the commit the binary was built from. Both lines must name the same commit.

How do I verify a download?

Check a build from source on Windows

Check the commit you built
git rev-parse HEAD
go version -m .\build\bin\geth.exe | Select-String vcs.revision

Run these in the clone: the first line is the commit you checked out and the second is the commit the binary was built from. Both lines must name the same commit.

How do I verify a download?

Running a Core-Geth node

Once the node is running

On its first start, the node finds peers through the discovery lists and bootnodes built into the release, and syncs the chain from them.

  • Check that it has caught up. Attach to the node: eth.syncing returns false once it has caught up with the network, and net.peerCount above zero means it holds peers. How to tell it is done has the commands.
  • No peers after five minutes? Why does the node have no peers? lists the causes. If the discovery lists and bootnodes have gone dark, start it once from the node records committed in ethereumclassic/discv4-dns-lists.
  • Keep it running. The documentation's run guides set up a node that starts on its own: a systemd unit on Linux, a launchd agent on macOS, and a start at sign-in on Windows. Docker has a guide of its own.
  • Decide MESS. MESS makes a node resist deep chain reorganizations. --mess turns it on and --mess=false turns it off, and without either the node uses the setting its release ships with. Which setting fits which operator sets out the choice. Give every node you run the same setting.
  • Open RPC only for what needs it. The node answers JSON-RPC over IPC by default, and --http and --ws open HTTP and WebSocket endpoints. Before anything outside the machine uses them, start with the documentation's guide for your role: Choose your role.
  • Stay on the latest release. Releases are published from ethereumclassic/core-geth. When a new one ships, Downloads has its files and the same steps, and a node that has only ever run v1.13 keeps its P2P node key.

Help with Core-Geth

Where to ask

The documentation's Questions and answers covers which repository publishes releases, which version to run, why node key rotation is required, public RPC endpoints and how to verify a download. The core developers answer questions on Discord, defects go in the repository's issues, and a security issue is reported privately.