New in v1.1.0

Run a Flux Node
on Raspberry Pi 5

HarbourOS is the only purpose-built OS that runs a production Flux CUMULUS node and Plex Media Server on the same device — fully managed from one dashboard.

CUMULUS
Supported tier on Pi 5
4–5 days
Initial explorer index build
~900 EPS
Benchmark result (Pi 5)
Zero
Source patches required
Background

What is Flux?

Flux is a decentralized cloud infrastructure network. Node operators run Flux software on their hardware and earn FLUX rewards in return for contributing compute, storage, and network resources to the network.

Decentralized Compute

Flux nodes host Docker applications deployed by users and projects across the network. Your Pi becomes part of a global infrastructure layer.

Passive Rewards

Nodes earn FLUX rewards approximately every 5–6 days (depending on queue position). Rewards are paid automatically to your configured payment address.

Three Tiers

CUMULUS is the entry tier and the one supported on Pi 5. NIMBUS and STRATUS require more powerful hardware. All tiers require 1,000 FLUX collateral.

Collateral requirement: Running a Flux node requires locking 1,000 FLUX as collateral in a transaction. HarbourOS monitors your node and helps manage it, but does not assist with purchasing or locking collateral. You need to set this up through the Flux ecosystem before installing.
Value Proposition

Why run Flux on HarbourOS?

Setting up a Flux node from scratch involves multiple services, config files, RPC credentials, and FluxOS compatibility workarounds. HarbourOS handles all of it.

ChallengeWithout HarbourOSWith HarbourOS
flux.conf generation Manual, easy to miss flags Automatic with all required flags
Insight Explorer setup Must know to add 5 flags Included by default
fluxbenchd credentials Often wrong after install Auto-corrected on install
P2SH transaction crashes Manual source patching Eliminated by insightexplorer=1
Node monitoring SSH + CLI commands Web dashboard
Wallet & earnings External explorer Live in dashboard
Benchmark results CLI only Live cards in UI
Plex coexistence Manual tuning required Pre-configured resource balance

One-click install

Open the Flux Node tab in the HarbourOS dashboard and click Install. Docker, FluxOS, fluxbenchd, and the correct flux.conf are all configured automatically.

Persistent monitoring

The dashboard polls node status every 30 seconds, benchmark results every 5 minutes, and wallet data every 5 minutes — all cached to avoid hammering the network.

Requirements

Hardware requirements

Flux CUMULUS tier has specific hardware requirements. The Raspberry Pi 5 (8 GB) with NVMe meets all of them.

ComponentMinimumRecommended
Board Raspberry Pi 5 (8 GB) Raspberry Pi 5 (8 GB)
Storage USB 3.0 SSD (≥240 GB) NVMe via PCIe HAT (≥240 GB)
Write speed 180 MB/s 350+ MB/s (NVMe)
Power supply 5V/3A (not sufficient) Official Pi 27W (5.1V/5A)
Cooling Heatsink Active cooler (fan)
Network 10 Mbps up/down 100+ Mbps, static IP or DDNS
RAM 7.5 GB available Pi 5 (8 GB) = 7.9 GB usable
PSU is critical. The Pi 5 under Flux + Plex combined load can draw 12–16W. An undersized supply causes under-voltage events that risk filesystem corruption. Use the official Raspberry Pi 27W USB-C supply (5.1V/5A) — not a generic phone charger.

Why NVMe over USB SSD?

The Flux Insight Explorer must index approximately 2.6 million blocks during initial setup. This involves millions of database write operations. On a USB SSD this takes 3–5 days; on NVMe via PCIe it completes in the same window but at lower temperature and with more headroom for Plex coexistence.

A microSD card is not viable. The write endurance would be exhausted within weeks, and the throughput (~30 MB/s) would make the initial sync take 3–4 weeks.

Tested NVMe drives

Samsung 980 Samsung 980 Pro WD SN750 Samsung 990 Evo Any M.2 2280 NVMe

PCIe HAT required — Pi 5 exposes a PCIe Gen 2 x1 connector. Compatible HATs: Pineboards HatDrive, Geekworm X1004, Argon ONE M.3, and others.

Architecture

How Flux runs on HarbourOS

Four services run together. HarbourOS configures and monitors all of them from a single systemd + PM2 supervision layer.

Service Stack
fluxd (zelcash.service)
←→
Flux P2P Network
-datadir=/var/lib/fluxd   -conf=/var/lib/fluxd/flux.conf
FluxOS (pm2 flux)
→
MongoDB (zelcashdata)
reads /root/.flux/flux.conf   explorer scans every block
fluxbenchd (fluxbenchd.service)
→
FluxOS RPC :16224
measures CPU, RAM, disk, EPS, network
HarbourOS Admin UI
→
FluxOS API :16127

Key configuration: Insight Explorer mode

The most important configuration decision is enabling Insight Explorer mode in flux.conf. This single setting routes FluxOS through its processInsight() code path instead of processStandard(). The standard path crashes on P2SH collateral transactions — a bug that affects all modern Flux nodes using P2SH addresses.

# flux.conf — required flags txindex=1 insightexplorer=1 experimentalfeatures=1 addressindex=1 timestampindex=1 spentindex=1 # zelnode config (filled in by user) # zelnode=1 # zelnodeprivkey=YOUR_KEY # zelnodeoutpoint=YOUR_TXID
Zero source patching. With insightexplorer=1, FluxOS's explorer works correctly on all transaction types including P2SH. No FluxOS source files are modified.
Technical Detail

Insight Explorer: what it is and why it matters

FluxOS includes an internal block explorer that indexes every transaction in the Flux blockchain. This is required for node confirmation, application deployment tracking, and payment verification. The explorer has two processing modes:

ModeActivated byCode pathP2SH support
Standard Default (no flag) processStandard() Crashes on P2SH tx
Insight Explorer insightexplorer=1 processInsight() Full support

The crash in processStandard() occurs because P2SH transactions don't include an addresses[] array in their scriptPubKey. The standard code reads scriptPubKey.addresses[0] without a null check, throwing an exception that halts the explorer's block processor.

With insightexplorer=1, fluxd builds supplementary indexes (address index, timestamp index, spent index) as it processes blocks. FluxOS's processInsight() path uses these indexes to look up transaction data differently — without touching scriptPubKey.addresses. The crash never occurs.

Fast-skip range: Blocks 699,420–862,002 are skipped by FluxOS's processInsight() path — this means the explorer races through ~163,000 blocks almost instantly during initial sync. You'll see the scanned height jump from ~699k to ~862k in seconds.

Initial index build timeline

Blockchain download

fluxd downloads 2.6M block headers and transaction data from Flux P2P peers.

1–3 hours

Address / timestamp / spent index build

fluxd builds supplementary indexes required by insightexplorer mode. Most of the wall-clock time is here.

4–5 days on Pi 5 + NVMe

FluxOS explorer processes blocks 0 → 699k

FluxOS's explorer (MongoDB) scans each block via processInsight(), building its own transaction index.

~12–24 hours after fluxd sync

Fast-skip zone (699k → 862k)

FluxOS skips this range — scanned height jumps to 862,000 in seconds.

Seconds

Explorer catches up to chain tip

Remaining blocks from 862k to current height (~2.6M). Explorer processes at ~200-500 blocks/second.

Concurrent with benchmark run

Node confirmed

Once benchmark returns CUMULUS, fire startdeterministicfluxnode. Confirmation takes ~6 minutes (3 blocks).

~10–20 min after benchmark completes
Performance

Expected benchmark results

The Flux benchmark tests CPU performance (EPS), RAM size, disk write speed, and network speed. A CUMULUS tier qualification requires minimum thresholds in each category.

MetricCUMULUS minimumPi 5 + NVMe typical
CPU cores24
RAM7 GB7.9 GB
Disk write100 MB/s350–400 MB/s
EPS (encrypt/sec)500850–900
Download30 MbpsISP-dependent
Upload10 MbpsISP-dependent
Tier qualificationAll aboveCUMULUS
Network speed results vary by ISP. Most home connections with 30+ Mbps upload qualify. A gigabit fibre connection will score 900+ Mbps download. The benchmark measures your actual ISP throughput at the time of the test.

Resource usage at steady state

ServiceRAMCPU (idle)
fluxd (zelcash)~440 MB5–8%
MongoDB (FluxOS data)~450 MB1–3%
FluxOS (node.js)~190 MB2–3%
fluxbenchd~40 MB<1%
Plex (idle)~350 MB~0.2%
HarbourOS UI~70 MB<1%
Total~1.5 GB~12–15%

During Plex 1080p transcode, CPU rises to 30–50%. During initial explorer sync, MongoDB adds ~1 GB RAM and CPU spikes to 100%. Plan accordingly.

Coexistence

Plex and Flux on the same Pi

Running both services simultaneously is viable with proper configuration. The key constraints are RAM and thermal management.

What works well

Plex direct play with Flux running — essentially zero conflict. Flux uses 5–8% CPU at steady state, leaving 90%+ for Plex direct play and library management.

What to watch

Plex 4K software transcode + Flux simultaneously pushes CPU temperature to 75–82°C. The Pi 5 Active Cooler handles this, but the system will run hot. Avoid heavy transcoding during the initial 4–5 day explorer sync.

MongoDB cache

Set MongoDB's WiredTiger cache to 1–1.5 GB (cacheSizeGB: 1.2 in mongod.conf). The default 2 GB leaves insufficient headroom for Plex transcoding and can cause OOM events.

Flux confirmation safety: fluxd checks for confirmation windows on every block (~30 seconds). Even during heavy Plex transcoding at 90%+ CPU, fluxd uses only ~7% of one core — it retains enough time slices to broadcast confirmation transactions reliably. CPU contention alone will not cause a missed confirmation.
Real-world validation

Production deployment case study

Raspberry Pi 5 + NVMe — Flux CUMULUS + Plex Media Server

Hardware: Raspberry Pi 5 (8 GB) · NVMe (240 GB) · Official Pi 5 Active Cooler · 27W PSU

107h
Total initial sync + index build
~57°C
Steady-state temperature (Flux idle)
16
fluxd peer connections
0
P2SH errors after insightexplorer=1

A Raspberry Pi 5 (8 GB) with NVMe was configured with HarbourOS v1.1.0, running both a Plex Media Server and a Flux CUMULUS node. The blockchain download completed in approximately 2 hours. The Insight Explorer index build (fluxd supplementary indexes) took approximately 107 hours on NVMe at ~360 MB/s average write speed.

After index completion, FluxOS processed the full block history with the processInsight() path — zero P2SH errors, no explorer stalls. The fast-skip zone (blocks 699,420–862,002) was traversed in under 30 seconds. Scanned height reached chain tip within hours of fluxd index completion.

The node passed the fluxbenchd CUMULUS qualification benchmark (EPS ~873, disk ~357 MB/s, 4 cores, 7.9 GB RAM). The startdeterministicfluxnode command broadcast successfully; the node reached CONFIRMED status 6 minutes later (3 blocks). Plex remained fully operational throughout the entire process, with only a temporary pause during the insightexplorer migration reindex.

Steady-state temperature with active cooling: 55–60°C at Flux+Plex idle. During simultaneous Plex 1080p transcode + Flux blockchain activity: 72–78°C. No thermal throttling observed at idle. All metrics above use anonymized data — no IP addresses, wallet addresses, TXIDs, or node identifiers were included.

FAQ

Frequently asked questions

Does HarbourOS help me buy FLUX or set up collateral?
No. You need to acquire 1,000 FLUX and lock it in a collateral transaction before installing a Flux node. HarbourOS manages the node software and monitoring after collateral is confirmed on-chain. Purchase FLUX on an exchange and use the Flux wallet or Zelcore to create the collateral transaction.
Will the 4–5 day initial sync disrupt my Plex server?
Plex keeps running throughout. The bottleneck is disk I/O and CPU, not network. The only time Plex is paused is if you choose to run the -reindex flag to add insightexplorer=1 to an existing node — this is a one-time operation. New installations generate the correct flux.conf from day one with no reindex needed.
What happens if the Pi reboots during the sync?
fluxd resumes from where it left off. All services are configured with systemctl enable and Restart=on-failure. A reboot adds a few hours at most, not days. The insightexplorer index is durable — it does not need to be rebuilt from scratch after a clean shutdown.
My node expired during the initial sync. Is that expected?
Yes. The initial confirmation window is approximately 480–600 blocks (~4–5 hours). If your node was previously confirmed and you start a migration or reindex that takes longer, it will expire. This is expected and safe. Once the sync completes and the benchmark returns CUMULUS, simply run startdeterministicfluxnode again to re-enter the network queue. There is no penalty for expiry.
Can I run NIMBUS or STRATUS tier on Pi 5?
No. NIMBUS requires 30 GB RAM; STRATUS requires 60 GB. The Pi 5 maxes out at 8 GB. CUMULUS (7 GB RAM minimum) is the only viable tier on Pi 5 hardware.
What ports do I need to forward?
Forward these TCP+UDP ports on your router to your Pi's local IP: 16124 (fluxd RPC), 16125 (fluxd P2P), 16126–16129 (FluxOS), 16224 (fluxbenchd). The HarbourOS installer configures UFW rules automatically if UFW is installed.
Does HarbourOS patch FluxOS source code?
No — and this is intentional. With insightexplorer=1, FluxOS routes through processInsight() which handles all transaction types correctly. No source file modifications are needed. A legacy patch script (harbouros-flux-patch.sh) is included for emergency fallback situations only, and is clearly labelled as such.
How do I know when my node will receive its first reward?
Check the Flux Node tab in the HarbourOS dashboard for your queue position and rank. The dashboard shows an estimated daily FLUX earnings figure based on current network size. First reward timing = (rank / total nodes) × ~5.7 days. New nodes join at the back of the queue.

Ready to run a Flux node?

Install HarbourOS on your Raspberry Pi 5 and open the Flux Node tab to get started.

Get HarbourOS Documentation v1.1.0 Release Notes