Skip to main content

Introduction

Keep your Fenine node updated to benefit from performance improvements, security patches, and new features. This guide covers safe upgrade procedures.
Always backup your node before upgrading. See Backup & Recovery guide.

Before You Upgrade

Check Current Version

fene-geth version
Output example:
Fene-Geth
Version: 1.2.5
Architecture: amd64
Protocol Versions: [65]
Network Id: 89

Review Release Notes

Check the GitHub releases page for:
  • New features
  • Breaking changes
  • Database migrations
  • Configuration updates
  • Known issues
Subscribe to releases on GitHub to get notifications about new versions.

Determine Upgrade Type

Upgrade TypeDescriptionDowntimeRisk
Patch (1.2.x → 1.2.y)Bug fixes, minor improvements<5 minLow
Minor (1.x.0 → 1.y.0)New features, optimizations5-15 minMedium
Major (x.0.0 → y.0.0)Breaking changes, migrations15-60 minHigh
HardforkNetwork consensus changeMust upgrade before block heightCritical
Hardfork upgrades are mandatory and must be completed before the activation block height. Missing a hardfork will cause your node to reject new blocks.

Upgrade Procedures

For patch and minor version upgrades:

1. Download New Version

cd /tmp

# Get latest version
LATEST_VERSION=$(curl -s https://api.github.com/repos/fenines-network/fene-geth/releases/latest | grep tag_name | cut -d '"' -f 4)

echo "Upgrading to: $LATEST_VERSION"

# Download
wget "https://github.com/fenines-network/fene-geth/releases/download/${LATEST_VERSION}/fene-geth-linux-amd64.tar.gz"

# Verify checksum
wget "https://github.com/fenines-network/fene-geth/releases/download/${LATEST_VERSION}/checksums.txt"
sha256sum -c checksums.txt

2. Backup Current Binary

sudo cp /usr/local/bin/fene-geth /usr/local/bin/fene-geth.backup

3. Stop Node

sudo systemctl stop fenine

# Verify stopped
sudo systemctl status fenine

4. Install New Binary

tar -xzf fene-geth-linux-amd64.tar.gz
sudo mv fene-geth /usr/local/bin/
sudo chmod +x /usr/local/bin/fene-geth

5. Verify Installation

fene-geth version

6. Start Node

sudo systemctl start fenine

# Monitor startup
sudo journalctl -u fenine -f

7. Verify Sync

curl -X POST http://localhost:8545 \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_syncing",
    "params": [],
    "id": 1
  }'
Expected: {"result": false} (fully synced)

Zero-Downtime Upgrade (Advanced)

For production RPC services, use multiple nodes:

Setup

  1. Load Balancer: nginx or HAProxy distributing traffic
  2. Node Pool: 2+ nodes behind load balancer

Rolling Upgrade

# Node 1: Remove from load balancer
# In nginx config, comment out node1

# Upgrade node1
ssh node1
sudo systemctl stop fenine
# ... upgrade steps ...
sudo systemctl start fenine

# Verify node1 healthy
curl http://node1:8545 -X POST \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

# Add node1 back to load balancer

# Wait 5 minutes, then repeat for node2, node3, etc.

Automated Upgrade Monitoring

Create /usr/local/bin/check-upgrade.sh:
#!/bin/bash

CURRENT_VERSION=$(fene-geth version | grep Version | awk '{print $2}')
LATEST_VERSION=$(curl -s https://api.github.com/repos/fenines-network/fene-geth/releases/latest | grep tag_name | cut -d '"' -f 4)

if [ "$CURRENT_VERSION" != "${LATEST_VERSION:1}" ]; then
  echo "New version available: $LATEST_VERSION (current: $CURRENT_VERSION)"
  echo "New Fenine version available: $LATEST_VERSION" | \
    mail -s "Node Upgrade Available" your-email@example.com
fi
Add to cron:
crontab -e
# Check for updates weekly
0 9 * * 1 /usr/local/bin/check-upgrade.sh

Upgrade Checklist

1

Pre-Upgrade

  • Read release notes
  • Backup node data
  • Backup configuration files
  • Verify disk space (30GB+ free)
  • Schedule maintenance window
  • Notify users (if public RPC)
2

Upgrade

  • Download new binary
  • Verify checksum
  • Stop node service
  • Replace binary
  • Update configuration (if needed)
  • Start node service
3

Post-Upgrade

  • Verify version number
  • Check sync status
  • Monitor logs for errors
  • Verify peer connections
  • Test RPC endpoints
  • Monitor for 30 minutes
  • Document upgrade results
4

Cleanup

  • Remove old backups (older than 30 days)
  • Clean up /tmp files
  • Update monitoring dashboards
  • Notify users upgrade complete

Common Upgrade Issues

Symptoms: Service fails to start, immediate exitCauses:
  • Incompatible configuration
  • Missing permissions
  • Database corruption
Solutions:
# Check logs
sudo journalctl -u fenine -n 100

# Test config
fene-geth --config /var/lib/fenine/config.toml --help

# Verify permissions
sudo chown -R $USER:$USER /var/lib/fenine

# Reset database (last resort)
sudo systemctl stop fenine
sudo rm -rf /var/lib/fenine/geth
fene-geth init /var/lib/fenine/genesis.json --datadir /var/lib/fenine
sudo systemctl start fenine
Symptoms: Block height not increasingSolutions:
# Check peers
curl -X POST http://localhost:8545 \
  -d '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}'

# If peer count low, add bootnodes
sudo systemctl stop fenine

# Add --bootnodes flag to systemd service
sudo nano /etc/systemd/system/fenine.service

ExecStart=/usr/local/bin/fene-geth \
  --config /var/lib/fenine/config.toml \
  --bootnodes "enode://[BOOTNODE]@bootnode1.fene.app:30303"

sudo systemctl daemon-reload
sudo systemctl start fenine
Symptoms: OOM kills, swap usageSolutions:
# Reduce cache size
sudo systemctl stop fenine

# Edit service file
sudo nano /etc/systemd/system/fenine.service

# Change --cache 4096 to --cache 2048

sudo systemctl daemon-reload
sudo systemctl start fenine

# Monitor memory
watch free -h
Symptoms: Migration script errorsSolutions:
# Restore from backup
sudo systemctl stop fenine
sudo rm -rf /var/lib/fenine/geth
sudo tar -xzf /backup/fenine-data-YYYYMMDD.tar.gz -C /

# Try migration again with more logging
fene-geth db migrate \
  --datadir /var/lib/fenine \
  --target-version 2.0 \
  --verbosity 5

Support Resources

Release Notes

View all version changes

Discord #node-operators

Get upgrade help

Troubleshooting

Fix common issues

Backup Guide

Protect your data
Upgrade Strategy:
  • Testnet first: Always test on testnet before mainnet
  • Off-peak hours: Upgrade during low traffic
  • Staged rollout: For multiple nodes, upgrade one at a time
  • Monitor closely: Watch for 30+ minutes post-upgrade