Skip to content

Repository files navigation

icon Funk's Ultimate Node Controller (FUNC)

FUNC is a Cross-platform Service that makes it easy to spin up a node for Algorand or Voi and start participating in consensus.

screenshot

Installation

The easiest way to install is with the one-line script for your OS. It detects your OS/architecture, downloads the latest release, and installs it for you.

Mac / Linux

curl -fsSL https://raw.githubusercontent.com/GalaxyPay/func/main/install.sh | sudo sh

Windows

Open PowerShell and run:

irm https://raw.githubusercontent.com/GalaxyPay/func/main/install.ps1 | iex

That's it. Once installed, visit the locally hosted webpage and bookmark it for easy access.

The installer does not include the node software. It is automatically downloaded from this open-source repo (Windows) or the official Algorand repo (Mac/Linux) the first time you open the app. This separation allows the node software to be updated without needing to update this app.

The scripts are open-source (install.sh, install.ps1) so you can review them yourself or have a trusted friend do so.

Manual Installation

If you'd rather not use the script, head over to the releases page and download the install file for your OS.

Windows (Manual)

In order to run it, you'll need to click "More info" on the "Windows protected your PC" dialog. Then click the "Run Anyway" button.

When updating a previous installation, the installer will recommend to let it automatically close applications and restart them after install. You should allow it to do this.

MacOS (Manual)

After downloading the .pkg file to your machine, run

sudo installer -target / -pkg <path to .pkg file>

If instead you wish to install the package by double-clicking the .pkg file , you will have to follow these instructions for bypassing unsigned packages:

  1. On your Mac, choose Apple menu > System Settings, then click Privacy & Security in the sidebar. (You may need to scroll down.)
  2. Go to Security, then click Open.
  3. Click Open Anyway. (This button is available for about an hour after you try to open the app.)
  4. Enter your login password, then click OK.

Linux (Manual)

After downloading the .deb file to your machine, run

sudo dpkg -i <path to .deb file>

Alternatively, some distros (like modern Ubuntu) allow for installation by simply double-clicking the .deb file.

Then visit the locally hosted webpage at http://localhost:3536 (for remote access see notes below)

Uninstall

The app is a Node Service Manager - uninstalling it will not remove node data by default. To also remove your node data (participation and KMD keys), use the "purge" option noted for your OS below.

Windows (Uninstall)

  • To purge everything, use the app to Remove Services and even Delete Node Data before the next step
  • Settings > Apps > Installed apps > Search: FUNC > Uninstall

Mac (Uninstall)

An uninstall script is bundled with the app:

sudo /opt/func/uninstall.sh           # remove the app, keep node data
sudo /opt/func/uninstall.sh --purge   # also remove node data and service accounts

Linux (Uninstall)

The .deb is a standard package, so use your package manager:

sudo apt remove func    # remove the app, keep node data
sudo apt purge func     # also remove node data and service accounts

Manage Node Menu Options

Create Service

  • Creates and starts a new Service to run the Node
  • Only available when Service does not exist

Start Node

  • Starts Service that runs the Node
  • Only available when Node is stopped

Stop Node

  • Stops Service that runs the Node
  • Only available when Node is running

Remove Service

  • Removes Service that runs the Node
  • Only available when Node is stopped

Configure

  • Change your node's Port, DNS Bootstrap, BaseLoggerDebugLevel, and P2P Setting

Enable/Disable Telemetry

  • Link your node to Nodely Telemetry Service
  • Once enabled, you'll get a link to your node's dashboard on Nodely
  • Only available on Algorand network when Node is running

Node Data Directory

  • Configure the directory for your node data
  • You will need write permission to the new path
  • Only available when Service does not exist

Delete Node Data

  • Deletes all node data, including any participation and KMD keys
  • Only available when Service does not exist

Participating in Consensus

If you want to participate in consensus, you'll need to generate a Participation Key for your account and register that key with account to bring it "online".

Read more about how Participation Keys function in the Algorand Consensus Protocol

Self-Custody

  1. Wait for your node to sync.
  2. Connect your wallet.
  3. Click the "Generate Key..." button in the Participation Keys section.
  4. Click Generate and wait. It takes a few minutes for your node to generate the Participation Key.
  5. Once the key is generated, click on the Status dot to Register the key.
  6. Your account should now be Online, and your Participating in Consensus light should be green.

Escrow Account

  1. Wait for your node to sync.
  2. Click the "Generate Key..." button in the Participation Keys section.
  3. Enter your escrow account in the Address field.
  4. Click Generate and wait. It takes a few minutes for your node to generate the Participation Key.
  5. Copy and paste the key info into escrow site and follow their instructions.
  6. Your account should now be Online, and your Participating in Consensus light should be green.

Notes

  • The app is a locally hosted webpage, http://localhost:3536. After install, bookmark it for easy access.

Password

The FUNC service runs with administrator privileges and manages services on your computer, so it asks you to choose a password the first time you open the app. This stops websites you visit and other machines on your network from controlling your node. Choose the password right after installing: until you do, anyone who can reach the app could choose it for you. You can change it later from Settings.

The app can be opened from any device that can reach the computer (see Remote Access below), so a headless machine is set up by opening http://<its address>:3536 from another computer. Signing in keeps you signed in on that browser for 30 days. Changing the password signs out every other browser and device.

Sign-in attempts are rate limited: after five failures from one address, that address must wait 30 seconds, doubling with each further failure, and the whole network is limited to ten failures per ten minutes. Attempts made on the computer itself are never limited by the network-wide cap, so you can always sign in there.

If you forget the password, delete the file below and restart the FUNC service (or reboot). The app then asks you to choose a new password.

OS Password file
Windows C:\ProgramData\func\auth.json
macOS /usr/local/share/func/auth.json
Linux /usr/share/func/auth.json

Anyone with the password can control the node services on your machine, so pick a strong one and do not share it.

  • The node will restart automatically if your computer reboots, but you will need to configure your computer to not go into Sleep mode in order to keep the node running 24/7.

  • If you Stop a node and restart your computer, the node will restart automatically. You must remove the service if you want the node to not restart. Removing the service preserves the node data; deleting the data is a separate step.

Remote Access (Advanced)

  • The app can be used from your phone or another computer on your network with the same password. To reach it, you will need to open the following ports:

    • 3536 AND 3537 - FUNC UI and API
    • 8081 - Algorand algod
    • 8082 AND 3538 - Voi algod
  • The algod ports are configurable through the UI, and you only need to open the ones for the networks you use

  • This should ONLY be done on a local network - DO NOT open these ports to the internet

  • Prefer port 3537 when accessing the site remotely: it serves the site with a self-signed cert over HTTPS, so your password is not sent in the clear. It is also required for WalletConnect wallets (e.g. Defly, Pera) and the "copy to clipboard" buttons.

Build (for Developers)

You can fork the repo and let Github Actions do the build for you, or you can run:

To run the web UI from the Vite dev server against an installed FUNC service, point it at that service in webui/.env.development.local:

VITE_ORIGIN=http://localhost:3536

The UI talks to algod on the same host, so if the service runs on another machine just use its address (for example http://192.168.1.100:3536). The API sends no CORS headers by default, so you also need to allow the dev server's origin on the machine running the service: create a file named func.json in the same folder as auth.json, with the following contents, then restart the FUNC service:

{ "Cors": { "Origins": ["http://localhost:3000"] } }

This file is only needed for development; a normal install never has one.

Note the create-package scripts take arguments of version and architecure (amd64 or arm64). For example:

./create-package-deb.sh 5.0.0 amd64

Dependencies include .NET Core 8, Node.js, pnpm, and Inno Setup.

About

Simplifying Algorand Node Running

Topics

Resources

Stars

66 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages