Configure your Arc node’s Execution Layer and Consensus Layer as systemd
services so they auto-restart on failure and survive reboots.The Each command prints output similar to:Both services display Common issues:
Prerequisites
Before you begin, ensure that you’ve:- Installed Arc and completed the Run an Arc node tutorial with both layers syncing
- Prepared a Linux machine with systemd
- Obtained root or
sudoaccess
Step 1: Create the Execution Layer unit file
Write the systemd unit file to/etc/systemd/system/arc-execution.service. The
unit file targets mainnet. For testnet, replace --chain arc-mainnet with
--chain arc-testnet and --rpc.forwarder https://rpc.mainnet.arc.io/ with
--rpc.forwarder https://rpc.testnet.arc.io/.The service files assume binaries are installed at
/usr/local/bin/. If you
installed with arcup, the binaries live in ~/.arc/bin/. Update the
ExecStart paths accordingly, or symlink the binaries into /usr/local/bin/.
If you built from source with cargo install, binaries default to
~/.cargo/bin/. Add --root /usr/local to cargo install to place them under
/usr/local/bin/ instead.The RuntimeDirectory=arc directive automatically creates /run/arc owned by
the User= account specified in the service file when the service starts. The
--metrics flag enables the Prometheus endpoint on port 9001. The --full flag
is required on the first start when bootstrapping from a pruned snapshot. Remove
it on subsequent starts if you prefer to run without pruning. When --full is
used, EL pruning runs on a 128-block interval (changed from 5000 in v0.7.3);
pass --prune.block-interval=5000 explicitly to retain the previous schedule.Step 2: Create the Consensus Layer unit file
Write the systemd unit file to/etc/systemd/system/arc-consensus.service. The
After and Requires directives ensure this service starts only after the
Execution Layer is running. The unit file targets mainnet. For testnet, replace
the mainnet follow endpoints with the corresponding testnet endpoints listed
in node requirements.Step 3: Enable and start the services
Reload systemd, enable both services to start on boot, and start them:enable command outputs:Step 4: Verify the services are running
Check the status of both services:Active: active (running) in their output. If a service
shows failed or activating, check its logs:- Incorrect file paths in
ExecStart: Verify that the binary paths in the unit files match your installation directory. - Permission errors on data directories: Confirm that the
Userspecified in the unit file owns$HOME/.arc/. - Consensus Layer connection error: The Execution Layer may not be ready
yet. Wait for it to reach
active (running), then runsudo systemctl restart arc-consensus.
9001 (Execution Layer) and 29000 (Consensus Layer), see
Monitor a node. To set up local Prometheus and
Grafana dashboards on the same host, see
Set up Prometheus and Grafana for an Arc node.