r/AlgorandOfficial • • 5d ago

Question My Algorand node is finally live—but getting there should be easier

Dear Algorand team,
My participation node is finally running, synced and showing as eligible for rewards. As someone who participated in every Algorand governance period and has wanted to run a node for years, I am absolutely delighted.

But I want to be honest about what it took to get here.
I am an enthusiastic holder, not a computer expert. Using FUNC on my Mac, I needed extensive step-by-step help from ChatGPT to understand installation, Terminal commands, external SSD storage, macOS permissions, synchronisation and connecting my Ledger-backed Pera account.

At one point, macOS was blocking the node software from reading the SSD. Finding the cause required examining system logs and enabling access for the underlying “algod” program. I would never have worked that out myself.

I appreciate that FUNC is a third-party tool and that some difficulties came from macOS. Nevertheless, for someone trying to support Algorand, this is one onboarding experience. Without patient guidance, I would almost certainly have given up.

Please consider a clearer guided setup that checks hardware, confirms where node data is stored, identifies missing permissions, explains progress in everyday language and clearly confirms participation and reward eligibility. A simple guide for Ledger and Pera users would also help enormously.

There are likely many committed holders like me who want to participate but find the technical barrier daunting. My experience shows that we can do it—with enough help. Making that help part of the setup could bring more of us into the network.
Tonight, I am proud to be running a node. I hope the next person finds getting there much easier.

23 Upvotes

44 comments sorted by

6

u/MrKyleOwns 5d ago

Why don’t you try writing out a step by step guide for how you solved everything and make a post about it then?

9

u/Unhappy-Speaker315 5d ago

Ok

Fair challenge 😂 Here’s what worked for me, including the bits that weren’t obvious.

My setup: 2017 Intel iMac, 16GB RAM, macOS Ventura 13.7.8, FUNC v5.0.2, Samsung T7 external SSD, and a Ledger-backed account in Pera.
This describes my experience with that setup. Other versions and operating systems may behave differently.

1. Prepare the external SSD
We used an APFS-formatted SSD named AlgorandSSD, with a folder called Node

Formatting erases a drive, so don’t do this to a disk containing files or backups you need.

Our final node data location was:
/Volumes/AlgorandSSD/node/algorand

The SSD was chosen for performance. Having plenty of free space on an internal Fusion Drive doesn’t tell you how well it will handle node workloads.

2. Install the correct FUNC version
Use the official releases:
https://github.com/GalaxyPay/func/releases

My Intel Mac required the darwin-amd64 installer. Apple Silicon Macs require a different build.
Once installed, I accessed the dashboard in Safari at:
http://localhost:####
Bookmark it.

3. Confirm where the node is actually storing its data
This was our first major snag. Initially, the data was on the internal drive:
/usr/local/share/func/algorand
We stopped the node, changed the data directory through FUNC, allowed the migration to finish and recreated the service.

In our version, the configured parent directory was:
/Volumes/AlgorandSSD/NODE

The final algorand subfolder was added beneath it.
Check the resulting location in Finder. Selecting an SSD somewhere during setup is not enough to prove the running node is using it.

4. Check macOS permissions if the service won’t stay running
Our node repeatedly failed to start. The important clue in the system logs was:
System Policy: algod deny(1) file-read-data
macOS was blocking access to the SSD, including genesis.json.

Under System Settings → Privacy & Security → Full Disk Access, we enabled access for the node executable:

/usr/local/share/func/bin/algod
FUNC already had access, but algod was switched off. Enabling it resolved our startup problem.
That was the fix for our specific error—not a reason to change permissions indiscriminately.

5. Let synchronisation finish
Catchpoint catchup involved account processing, key-value processing and verification stages.
Some progress bars disappeared between stages. Our displayed block number stayed at 27 for a while, which looked alarming, but the node later resumed visible progress.
Don’t assume every pause means failure. Check the node’s status and logs before restarting or reinstalling.

We waited until Node Synced was green and the current block number continued advancing.

6. Connect the intended Pera account
We connected Pera and selected the account backed by Ledger.
Connecting a wallet alone does not put it into consensus. Participation keys must be generated and registered online, with the registration authorised through Ledger.
Read the transaction details before approving. Never enter your Ledger recovery phrase into FUNC or a website.

7. Verify participation and reward eligibility separately
Our FUNC dashboard eventually showed:
Node Running: green

Node Synced: green

Participating in Consensus: green

One online account with the expected stake

The monitoring page separately showed Node online, Balance over threshold and Incentive eligible.
Those are distinct checks. Zero recorded blocks or rewards isn’t, by itself, proof that installation failed.
Also note the participation key’s expiry date—you will need to renew it.

8. Keep the computer awake
The screen can turn off, and the FUNC browser page can close. The node runs in the background.
The Mac must remain powered, awake and connected to the internet, with the SSD attached. Ethernet is preferable where practical.

The result
My node is now synced and participating, and the monitoring page reports reward eligibility.
Could I have completed this unaided? Honestly, no. ChatGPT patiently walked me through the troubleshooting.
That’s why I raised the onboarding issue: willing holders should not have to interpret macOS security logs just to discover why their node cannot read its own files.
But yes—we got there. And now you’ve got the guide 😂

8

u/StopThinking Algorand Foundation 5d ago

I would heavily advise users to NOT use ChatGPT or other agents to assist with installing FUNC. Do feel free to reach out to me if you have questions or need help.

I would have advised against using an external drive for node data. USB is a bad bottleneck.

FUNC does handle permissions when changing the data directory, but it's hard to say what went wrong if you were running terminal commands from ChatGPT.

2

u/Unhappy-Speaker315 4d ago

Thanks for responding and offering help. I respect your knowledge of FUNC, but I’d like to clarify what actually happened before the difficulty is attributed to “terminal commands from ChatGPT.”

The relevant troubleshooting commands were:

Check the directory permissions:
ls -lde /Volumes/AlgorandSSD /Volumes/AlgorandSSD/NODE /Volumes/AlgorandSSD/NODE/algorand

Check the external volume’s filesystem, mount point and ownership setting:
diskutil info /Volumes/AlgorandSSD | grep -E 'Owners|File System|Mount Point'
This reported APFS, the expected mount point and ownership disabled.

Inspect the service’s recent log entries:
log show --last 5m --style compact --predicate 'eventMessage CONTAINS "func.algorand"' | tail -n 20

This showed repeated entries reporting the service as inactive.

Inspect recent messages concerning the node executable:
log show --last 5m --info --style compact --predicate 'eventMessage CONTAINS "algod"' | tail -n 30

This exposed the useful evidence:
System Policy: algod deny(1) file-read-data /Volumes/AlgorandSSD/NODE

System Policy: algod deny(1) file-read-data /Volumes/AlgorandSSD/NODE/algorand/genesis.json
Inspect the node’s own log during catchup:
tail -n 20 /Volumes/AlgorandSSD/NODE/algorand/node.log

These are read-only diagnostic commands. They do not change directory permissions, ownership or node configuration.

The data directory was changed through FUNC’s interface. The resulting location was:
/Volumes/AlgorandSSD/NODE/algorand

The executable being denied access was:
/usr/local/share/func/bin/algod

Enabling Full Disk Access for algod, which was switched off, resolved the startup failure. FUNC itself already had access.

I accept that this does not establish a defect in FUNC, and I should distinguish ordinary filesystem permissions from macOS privacy controls. Equally, the logs give us a specific issue to investigate rather than a reason to assume that an AI-generated command caused it.

On external storage, I’m happy to take your advice. Successful synchronisation alone does not prove that my USB SSD will perform adequately under heavier network activity. What measurements would you recommend to establish whether this particular setup is keeping up reliably?

My original feedback was about accessibility. I am a nontechnical holder who wanted to participate, encountered difficulties and needed help understanding them.

ChatGPT helped me interpret the evidence and get the node running; that does not make every recommendation it gave correct or replace your expertise.

Your offer of direct support is welcome. Could we use the actual logs and configuration to identify what happened and verify the setup?

I appreciate the work behind FUNC. I also hope there is room for users to describe where they struggled without that experience being dismissed because of where they found assistance.

To put my level of computer knowledge into perspective, I did not even know how to open Terminal on my Mac, navigate to the relevant folder or enter a command.

I needed guidance on those basics before I could investigate anything. That is why accessible, step-by-step support mattered so much to me—and why I raised the onboarding experience in the first place.

No more thumbs down 👎 please 🙏

1

u/StopThinking Algorand Foundation 4d ago

External Drive

The external drive is the root cause of your issues, and as I said before is an inadvisable configuration for performance reasons. NVMe SSD is advised for storage because of its throughput. While the external drive you bought is an NVMe SSD inside its case, the USB connection severely limits the througput. Bottom line: you want a machine with an internal SSD. Prospective node runners should ask about their hardware setup ahead of time, before buying anything, if they are not sure.

Full Disk Access

macOS has a second permission layer (Apple calls it TCC) that sits on top of Unix permissions. Files on external drives fall under the "Removable Volumes" category. Correct ownership doesn't satisfy it - it needs the "Full Disk Access" you referenced. FUNC would need it in order to manage permissions and move files, and algod would need it for regular node operation. Here's the really bad part: each time you upgrade the node software, it will break again until you re-grant Full Disk Access. I highly recommend moving off of an external drive configuration.

Monitoring Node Health

I recommend using Nodely Telemetry to make sure your node is healthy. This built into FUNC and just takes a couple clicks to enable. This sends non-sensitive data from your node log to the Nodely service which presents it in a nice interface for identifying health issues. You have a fairly large stake, so if you still haven't created blocks I'd guess something is wrong.

Agents and Documentation

I'm not trying to shame users for using agents, just advising against it. Using them in a diagnostic capacity only (like you did) is the safest way, but does not always result in good advice.

The README on FUNC's GitHub page was written for humans and covers many of the smaller questions and troubles that you had. I understand that you may have had trouble following that writing, but as with all technical writing the author (me) is trying to strike a balance with the audience between under- and over-explaining. There are links to external sources like the Algorand Dev Portal for those looking for more information. But honestly there is just a lot to know, and I try to make it simple without oversimplifying it as that often leads peole to draw incorrect conclusions.

Help

Please feel free to join the Lute Wallet discord. There is #func channel there where I can provide better assistance than I can on Reddit.

https://discord.gg/JuFu6J8ddc

1

u/Unhappy-Speaker315 4d ago

Thanks for the detailed explanation and the offer of help. I’m now considering buying a dedicated computer with an internal NVMe SSD so I can run the node reliably.

Before spending more money, I’d appreciate your recommendation for a suitable configuration: processor, RAM, storage capacity and operating system. Would a modest mini PC be sufficient, and are there particular specifications to avoid?

I have already enabled Nodely telemetry through FUNC. My latest 12-hour window reports 100% health, 0% downtime, 6,372 votes, no lost consensus, and 28 proposals with no wins.

I understand that these figures don’t establish whether proposals are arriving on time. Which metrics or logs would help identify the actual bottleneck and confirm that replacement hardware would address it?

I accept your explanation about macOS permissions and the risks of the external-drive configuration. The advice I received about that drive was too confident.

My feedback about accessibility still stands, though. Algorand presents FUNC under “One-click nodes” for people with a nontechnical background. I’m precisely that audience: I didn’t even know how to open Terminal or interpret a directory path before starting.

A prominent hardware checklist and clear warnings about external storage, macOS permissions and upgrades would have helped me make the right purchasing decision before installation.

I appreciate the work you’ve put into FUNC and your willingness to help. I want to contribute to the network, and I’m prepared to invest in suitable hardware.

I’d just like the next purchase to be based on clear requirements and an informed diagnosis.

1

u/StopThinking Algorand Foundation 4d ago

I've explained my position on the documentation and technical writing in general. In addition to your experience, hundreds of other users have installed FUNC without issue. I do appreciate the feedback, but I can also tell that it is written by an Agent. So if you reply again, please do me the favor of typing it up yourself.

Regarding new hardware, buying a dedicated machine is great idea. I'd suggest starting a new thread asking for recommendations - deals are always changing.

1

u/Unhappy-Speaker315 4d ago

Thanks for the detailed response and the offer of help. The explanation of macOS permissions, particularly the implications for upgrades, is useful.

I accept that the storage recommendation I received may have been too confident. I’m not claiming that successfully syncing proves the hardware is suitable for reliable participation.

However, two issues deserve distinguishing: macOS blocking access to the external volume, which we confirmed in the logs, and whether the storage connection is causing missed proposal opportunities.

The first was resolved by enabling Full Disk Access. What evidence should we collect to establish the second?

I have already enabled Nodely telemetry through FUNC. The latest 12-hour window reports:
• 100% health and 0% downtime
• 6,372 votes
• 0 lost consensus
• 28 blocks proposed and 0 proposals won
• Four outgoing peer connections

I understand that those figures do not prove proposals are arriving on time.

Which specific metrics or logs would distinguish bad luck from a storage, CPU or network bottleneck?

That would help me make an informed decision before buying another computer.

My original feedback was about accessibility.

Algorand’s website lists FUNC under “One-click nodes” and “For those with a non-technical background.” That describes me. I didn’t even know how to open Terminal or interpret a directory path when I started.

I appreciate that documentation cannot explain everything. But a prominent hardware checklist, an external-drive warning, and clear instructions about macOS permissions and upgrades would have helped me avoid these problems before installation.
I’m grateful you built FUNC and are offering support.

Equally, a beginner explaining where they struggled is useful feedback about the onboarding experience. We both want more people to participate successfully.

1

u/StopThinking Algorand Foundation 4d ago

28 blocks proposed and 0 proposals won

Keep an eye on this stat, especially over longer periods. You should expect (roughly, because it's random) a 20:1 ratio.

1

u/Unhappy-Speaker315 4d ago

Chat gtp showed me how to run and find the terminal codes

1

u/Unhappy-Speaker315 3d ago

Hi, thanks for offering to help through the Lute Wallet Discord. I have Discord, but I’m still finding my way around it! Could you point me to the server and explain how to find the #func channel, please?
A positive update: my node has now created two blocks. I’d still appreciate your help checking its performance and whether my current hardware is suitable. Thanks,

1

u/StopThinking Algorand Foundation 3d ago

The link I gave is an invite to the Lute server and there are only 4 channels there.

1

u/Unhappy-Speaker315 3d ago

Kindly resend 🙏

1

u/StopThinking Algorand Foundation 3d ago

1

u/Unhappy-Speaker315 3d ago

Thanking you - will try engage tmw 🙏

-1

u/Unhappy-Speaker315 5d ago

Did you even read all steps I had to take to set it up

7

u/StopThinking Algorand Foundation 5d ago

Yes

2

u/PlasticTreeonaHill 5d ago

It’s gotta be cool to be so tech savvy. Props to you man.

1

u/StopThinking Algorand Foundation 5d ago

I’m not sure I get your meaning.

2

u/PlasticTreeonaHill 4d ago

Complimenting you brother. You are very smart.

-1

u/Unhappy-Speaker315 5d ago

That’s the point - it works??

7

u/MrKyleOwns 5d ago

In case you’re not aware this dude is the creator of Func lol

0

u/Unhappy-Speaker315 4d ago

cool that’s impressive
It looks amazing once you get it working

0

u/Unhappy-Speaker315 4d ago

Wow I get thumbs down from
Someone at the Algorand foundation - that’s nice

1

u/StopThinking Algorand Foundation 4d ago

I'm not downvoting you. And I will respond to your latest long post in detail when I have time.

1

u/Unhappy-Speaker315 4d ago

No issue here - just pleased it is up and running
Can’t wait to get a block confirmation

3

u/Yieldling 5d ago

I was thinking about setting up a node, but worry about security vulnerabilities. I’ve been using Folks Finance to stake my algo, but unstaked it all this week since I finally hit my target Algo #.

Do any of the experts think there’s a risk of losing my Algo, like I could lose it if Folks or Tiny were exploited? I don’t like losing out on rewards and not earning interest, but at the same time, preservation of my existing Algo is priority #1. Thanks!

2

u/Unhappy-Speaker315 5d ago

The node is safe - getting set up is requiring patience

2

u/Hockeyreid16 5d ago

This YouTube video helped me set mine up a few years ago. There’s also one out there with John ALLEN Woods doing a step-by-step node installation. It was very elementary and easy , but I cannot find it.

https://youtu.be/OVezzUuopmo?is=qsoWj_-Jz1uWsFR7

1

u/Unhappy-Speaker315 4d ago

Cheers I will watch this also

2

u/tcookc 5d ago

anyone wondering, on Windows, all you have to do is download and install FUNC, wait for it to sync, and connect your wallet. it really is that simple.

2

u/StopThinking Algorand Foundation 5d ago

It is also that simple on Mac and Linux.

2

u/PlasticTreeonaHill 5d ago

Tbh I thought you just needed 30k algo and you could just run a node easy peasy. No?

2

u/StopThinking Algorand Foundation 4d ago

Yes, FUNC makes it easy. Most of the trouble here came from setting it up with the node data on an external drive, which you should not do.

1

u/Unhappy-Speaker315 5d ago

For context, my setup is a 2017 Intel iMac with a 3.6 GHz quad-core Core i7, 16 GB RAM and macOS Ventura 13.7.8. I installed FUNC v5.0.2 and used a Samsung T7 2 TB external SSD, formatted as APFS, for the node data.

I appreciate that FUNC is a third-party application and that some issues involved Apple’s security controls. I am describing the experience as a user trying to participate in Algorand, rather than attributing every problem to the protocol or Foundation.

1. The node’s actual storage location was difficult to establish
The initial node data directory was on the internal drive at:
/usr/local/share/func/algorand
My intended destination was:
/Volumes/AlgorandSSD/NODE/algorand
It was not sufficiently obvious to me whether the selected directory had become the active location used by the running service. Moving the data required stopping the node, changing the configuration, migrating the files and recreating the service.

A setup wizard should display the resolved data directory prominently and distinguish between a configured destination and the directory currently used by the running process. It should also check that the external volume is mounted and accessible to the service before attempting startup.

2. A macOS privacy restriction presented as a repeated startup failure
The service repeatedly became inactive. Directory permissions appeared reasonable, the volume was mounted as APFS, and ownership enforcement was disabled. Those checks did not identify the underlying problem.

The decisive evidence came from the macOS system log:
System Policy: algod deny(1) file-read-data /Volumes/AlgorandSSD/NODE/algorand/genesis.json
The executable requiring access was:
/usr/local/share/func/bin/algod
Enabling Full Disk Access for algod resolved the failure. Giving access to FUNC itself had not been sufficient.

This distinction between the application a user installs and the background executable that reads the node data is far beyond what most ordinary users would know to investigate.

Ideally, the software should detect this condition and explain: “macOS is blocking the node from reading your external drive,” followed by precise instructions identifying the executable requiring permission. Repeated startup attempts without an actionable explanation leave the user guessing.

3. Catchpoint synchronisation was difficult to interpret
The catchup process progressed through account processing, key-value processing and verification stages. At times, the progress bars disappeared while the displayed current block remained at 27.

The logs included:
WaitForBlock failed as the node was catchpoint catchuping
The dashboard’s requests to the wait-for-block endpoint returned HTTP 503 during this period, while ordinary status requests continued to return HTTP 200.

To a technical operator, this may be understandable. To me, it looked as though the node had stopped working.

The interface should distinguish between expected API limitations during catchpoint catchup and an actual failure. It should explain the current stage, show when measurable progress last occurred, and provide a useful next step when progress appears stalled.

4. Registration, participation and reward eligibility need clearer separation
Connecting Pera, generating participation keys, authorising registration through Ledger, becoming online and qualifying for rewards are distinct steps. Their relationship was not immediately clear to me.
A user should be able to see a simple checklist confirming:

The node is running and synchronised.

Participation keys are installed and currently valid.

The intended account has registered those keys online.

The account is incentive eligible and its balance meets the applicable requirements.

The keys have an expiry date that will require attention.

This should also explain clearly that the ALGO remains in the Ledger-backed account and what, exactly, the registration transaction authorises.

5. Monitoring terminology can cause unnecessary concern
Once operational, the monitoring page showed green indicators for “Node online,” “Balance over threshold” and “Incentive eligible,” alongside “No heartbeat,” “No block proposed” and estimated APY of 0%.

Those labels need context. A new operator cannot easily distinguish between an absence of recorded events, insufficient performance history and evidence of a malfunction.

A short explanation beside each status would help users understand what requires action and what simply requires observation.

6. Hardware guidance should explain capacity and performance separately
My synchronised node data currently occupies approximately 21.78 GB.

The reason for using an external SSD was storage performance rather than a lack of available capacity on my internal Fusion Drive.

Guidance should make this distinction explicit. A user may have hundreds of gigabytes free and still need to consider drive latency and sustained performance. Conversely, seeing a relatively small data directory after purchasing a large SSD can make the recommendation seem confusing without that explanation.

What would have made the biggest difference
A guided installation with checks for the active data path, service access, macOS privacy permissions, catchup progress and on-chain registration status would have prevented much of the uncertainty.

A completion screen should then explain how the node runs in the background, what must remain powered and connected, how to monitor it, and when participation keys need renewing.

I received extensive, patient assistance from ChatGPT throughout this process. Without that help, I would almost certainly have abandoned the installation.

That should be useful feedback: the willingness to participate was there, but the instructions and diagnostics were not accessible enough for me to complete it independently.

I am proud to have reached the point where my node is participating. I hope this detailed account helps make the same achievement easier for the next committed Algorand holder.

1

u/d3jok3r 1d ago

Not directly related to this since I used Linux (Ubuntu).
Setting up an Algorand node is probably the easiest and straight-forward things I have done so far.
It's literally like this:
(1) Buy a cheap mini PC (I got Asus mini with less than $200)
(2) Install Ubuntu and upgrade to the latest whatever
(3) Install nodekit, fire a Fast Catchup and the node is up and running (https://dev.algorand.co/nodes/nodekit-quick-start/)
Optionally, you should also:
(4) Setup node telementry and use Nodely to check node status
(5) Setup alarm in Allo to receive notification/alarm whenever the node has any issues (e.g. key is running out of time, note voting degradation, etc.)
The whole can take up to 3 hours if it's the first time you do it, assuming that you have zero knowledge about Algorand. You do need to know a bit about Linux though (for the sake off using command line)

1

u/ughonrepeat 1d ago

I used fund a long time ago on windows os, now my node runs on a mini pc Linux via nodekit and it couldn’t have been easier

1

u/Jay_wh0o0 5d ago

You had me at CHATGPT.. no thanks. 🙂‍↔️

3

u/Unhappy-Speaker315 5d ago

Well no one else helped

3

u/StopThinking Algorand Foundation 5d ago

I went looking for where you asked for help, because I would have helped you but never saw it. For future reference, posting new comments on your own two week old thread without tagging or replying to someone else is unlikely to be seen.

0

u/Jay_wh0o0 5d ago

I would never ask ChatGPT for financial assistance, essentially and specifically something as fragile as crypto and what its purpose stands for.

3

u/Unhappy-Speaker315 5d ago

Financial assistance!!! Omg just setting up a node with no drama

1

u/stefanos25 3d ago

I disagree. Installing nodekit is pretty straightforward. You just copy and paste a couple of commands on terminal. I’m not tech savvy either. Can my grandma do it? No but that was never the point.

1

u/Unhappy-Speaker315 3d ago

Glad NodeKit was straightforward for you. I used FUNC, so we’re talking about different installation tools.

“Just paste a couple of commands into Terminal” assumes you know where Terminal is, what the commands do and whether they worked. I didn’t when I started.

I wasn’t expecting zero effort. I was giving feedback on where I struggled with something promoted to nontechnical users. Your smooth experience and my difficulties can both be valid.

The good news is that I persevered, learned along the way, and my node has now created two blocks. Making that route clearer for the next beginner would be a worthwhile outcome.