Skip to content

Setup a fully automated Banano cryptocurrency node as part of a dockerized stack with fast-syncing and easy SSL support.

Notifications You must be signed in to change notification settings

amamel/banano-node-docker

 
 

Repository files navigation

Banano Node Docker

Banano Node Docker Logo

The Banano Node Docker script automates the setup process for running a Banano node using Docker. It pulls the necessary Docker images, sets up the required configuration, and initializes the Banano node. This makes the process of setting up and configuring a Banano node more efficient and secure.

  • Automation: Easy to install with dialogs to walk you through the simple installation process.
  • Strong Ecosystem: Banano Node, Banano Node Monitor, Let's Encrypt, Nginx-proxy, Redis, Root Site, Spyglass API, Spyglass Client, Watchtower, robust logging,
  • Lightweight: Runs smoothly with minimal hardware and software requirements
  • Simple: By providing only a minimal API surface, banano.sh is easy to learn and simple to use.
  • Insightful: A beautiful responsive Web Interface dashboard to view your Banano node metrics
  • Scalable
  • Developer Documentation: Detailed documentation for each feature
  • Open Source: Free, open-source, community built software

Prerequisites

Docker and Docker Compose are required, if either of these are missing, the script will attempt to install them automatically for you.

Usage

To download or clone the latest release, open a bash terminal and launch the installation script:

❯ Quick Install

curl -sL "https://install.banano.sh" | bash

Follow the prompts, provide domain/email if using SSL, and the installer handles the rest.

❯ Manual Install: Direct Installation with Flags (Advanced)

For precise control with command-line flags:

Available Flags:

Flag Description Example
-d <domain> Enable SSL with your domain -d node.yourdomain.com
-e <email> Email for Let's Encrypt notifications -e admin@yourdomain.com
-f Fast-sync (download latest ledger) -f
-q Quiet mode (minimal output) -q
-s Display wallet seed after creation -s
-t <tag> Specify Banano node version (default: latest) -t V26.1
cd ~
git clone https://github.com/amamel/banano-node-docker.git
cd ~/banano-node-docker
sudo bash install/banano.sh -d yourdomain.com -e youremail@yourdomain.com -f -s

Flag Usage Examples:

# Basic installation with seed display
sudo bash install/banano.sh -s

# Production setup with SSL
sudo bash install/banano.sh -d yourdomain.com -e youremail@domain.com -s

# Fast-sync with SSL
sudo bash install/banano.sh -d yourdomain.com -e youremail@domain.com -s -f

# Specific version with SSL
sudo bash install/banano.sh -d yourdomain.com -e youremail@domain.com -s -t V26.1

Fast sync downloads ledger files from trusted community sources:

❯ Makefile Workflow

For users who want full manual control over configuration:

# 1. Clone the repository
git clone https://github.com/amamel/banano-node-docker.git
cd banano-node-docker

# 2. Check prerequisites (Docker, Docker Compose, Make)
make check-prereqs

# 3. Initialize environment file
make init

# 4. Configure your settings (opens in nano/your editor)
make config

# 5. Start the node
make start

Banano Node Docker is free but powered by your support

There are many reoccurring costs involved with maintaining free, open-source software. If you appreciate this project, consider supporting with Banano or Nano:

Donate

Banano

ban_1ehtttffyimud7izzbmyw3ey3nsxkpjzet4n9htmjcez8themr6ygr57ywr1

Nano

nano_3fikgf1bbnsd1g6jzjzgpquq748k3z65epctsr838w855xmccwekqbhdy4tc

Contributing via GitHub

We welcome everyone to contribute to issue reports, suggest new features, and create pull requests.

❯ Prerequisites

Recommended Hardware

Component Minimum Recommended for PR/Voting
CPU 2 cores @ 2.5GHz 4 cores
RAM 4 GB 8 GB+
Storage 50 GB SSD/NVMe 100 GB SSD/NVMe
Network 1 TB monthly bandwidth Unlimited with 24/7 uptime

Current ledger size (December, 2025): ~32 GB (LMDB)


Containers

Container name Description
banano node The core Banano node software. Maintains the distributed ledger and processes transactions on the Banano network.
banano-node-monitor Monitoring interface for the Banano node. Provides real-time status, statistics, and health information.
banano-prom-exporter Prometheus metrics exporter for Banano node. Exposes node metrics in Prometheus format for monitoring.
letsencrypt-nginx-proxy-companion A lightweight companion container for the nginx-proxy. Enables automatic creation/renewal of Let's Encrypt certificates.
nginx-proxy An instance of the popular Nginx web server running in a reverse proxy setup. Serves as a gateway to the host.
redis In-memory data structure store. Used for caching and session management to improve performance.
root-site Root website container. Serves the main landing page or portal for the host domain.
spyglass-api API backend for Spyglass, a Banano network explorer. Serves data about blocks, accounts, and network statistics.
spyglass-client Frontend web interface for Spyglass. Provides a user-friendly block explorer for browsing the Banano network.
watchtower Automated Docker container updater. Monitors for new images and automatically updates running containers.

⚙️ Docker Node Configuration

Environment Variables

The .env.example file contains all configuration variables that are referenced in the docker-compose files. There is no need to need to create a .env file, this will be generated from .env.example during the install. Edit the .env.example file to configure your Banano Node Docker, instance. Key variables include:

Variable Description Default
NETWORK Docker network name banano-node-network
HOST Your domain name (leave empty for non-SSL) (empty)
HOST_EMAIL Email for Let's Encrypt (required for SSL) (empty)
BANANO_TAG Banano node version latest
SPYGLASS_PORT Spyglass API port 3000
SPYGLASS_CLIENT_PORT Spyglass client port 8080

For SSL Setup:

  • Set HOST to your domain name (e.g., yourdomain.com)
  • Set HOST_EMAIL to your email for Let's Encrypt notifications

For Non-SSL Setup:

  • Leave HOST empty or undefined
  • Services will be accessible via IP address

SSL Configuration with Let's Encrypt

If you have a domain name, you can enable automatic SSL certificates:

# Edit .env and set:
HOST=yourdomain.com
HOST_EMAIL=youremail@yourdomain.com

# Then start with SSL compose file
docker compose -f docker/docker-compose.ssl.yml up -d

The SSL setup includes:

  • nginx-proxy: Reverse proxy for routing requests
  • letsencrypt-nginx-proxy-companion: Automatic SSL certificate management

Your services will be available at:

  • Root site: https://yourdomain.com
  • Banano Node monitor: https://node.yourdomain.com
  • API: https://api.yourdomain.com
  • API Client: https://api.yourdomain/client
  • Docs: https://docs.yourdomain.com

📋 Makefile Commands

The Makefile provides convenient commands for managing your node:

Quick Start

make init          # Initialize project (copy .env.example to .env)
make config        # Edit .env configuration
make start         # Start all services

Basic Operations

make stop          # Stop all services
make restart       # Restart all services
make logs          # View container logs (live)
make status        # Show container status
make update        # Pull updates and restart
make clean         # Prune unused Docker data

Self-Update Commands

make check-updates # Check for new versions
make self-update   # Update project files from GitHub
make rollback      # Rollback to previous version
make changelog     # View recent changes
make list-backups  # List available backups

SSL Mode Control

make check-mode    # Check current SSL mode
make use-ssl       # Switch to SSL mode (requires HOST in .env)
make use-no-ssl    # Switch to non-SSL mode

Spyglass API Management

make start-api     # Start Spyglass API
make stop-api      # Stop Spyglass API
make restart-api   # Restart Spyglass API
make build-api     # Build/rebuild Spyglass API container
make health-api    # Run comprehensive API health check
make health-api-quick  # Quick health check

Help

make help          # Show all available commands

🔧 Banano Node CLI Commands

Banano node runs inside the banano-node container. The installation creates convenient aliases for CLI access:

Direct Container Access

docker exec -it banano-node /usr/bin/bananode <command>

Using Aliases (Created by Installer)

Alias Description
benis Banano Node CLI
banano-node Banano Node CLI
banano-rpc Banano RPC commands
banano-wallet Wallet management
banano-status Node status
banano-restart Restart node
banano-update Update node
banano-logs View node logs
banano-account-create Create account
banano-account-list List accounts
banano-account-info Account information
banano-account-history Account history
banano-balance Wallet balance
banano-send Send Banano

See the full list of aliases in the installation output

🎨 Banano Node Public Frontend

View your landing page at the root domain/IP address.

📊 Banano Node Metrics Exporter

The project includes a Prometheus metrics exporter for advanced monitoring of your Banano node. This service collects and exports node statistics to a Prometheus push gateway for visualization with tools like Grafana.

Note: To use the metrics explorer Node RPC must be enabled: make enable-rpc

Features

  • Real-time Metrics: Block count, peer count, confirmation statistics, and more
  • Banano Compatible: Adapted from nano-prom-exporter with Banano-specific RPC port (7072)
  • Configurable: Adjustable collection interval and push gateway
  • Health Monitoring: Built-in healthcheck for service reliability

Then update PROM_PUSH_GATEWAY=http://pushgateway:9091 in your .env file.

Accessing Metrics

  • Push Gateway: http://localhost:9091 (or your configured URL)
  • Prometheus: http://localhost:9090 (if you set up Prometheus)
  • Grafana: http://localhost:3001 (if you set up Grafana)

Disabling the Exporter

To disable the Prometheus exporter, comment it out in your docker-compose file or remove it from the stack, then restart services:

make restart

🔒 Post-Installation Configuration

After installation, configure advanced node settings:

Interactive Configuration Wizard

make post-install
# or
make configure

This wizard helps you configure:

  • UFW Firewall Rules - Open required ports
  • RPC Commands - Enable/disable API access
  • Voting Mode - Principal Representative configuration
  • RocksDB Backend - Alternative database backend

Quick Commands

# Enable/disable RPC
make enable-rpc
make disable-rpc

# Enable/disable voting (PR mode)
make enable-voting
make disable-voting

# Full configuration wizard
make post-install

Note: Most configuration changes require node restart: make restart

📊 Logging and Monitoring

This project includes a comprehensive centralized logging system with:

  • Automatic Log Rotation: Logs rotate automatically at configurable size thresholds
  • Automatic Cleanup: Old log backups are removed automatically to save disk space
  • Multiple Log Levels: DEBUG, INFO, WARN, ERROR
  • Built-in Tools: View, search, and analyze logs easily

🔄 Self-Update System

Keep your installation up-to-date with the latest features and fixes:

  • Version Checking: Check if updates are available without downloading
  • Smart Merging: Automatically handles file updates while preserving your configuration
  • Automatic Backups: Creates backups before every update
  • Configuration Preservation: Your .env file and node data are never overwritten
  • Rollback Capability: Easily revert to previous version if needed

💛 Credits

This project is built thanks to the excellent work of:

🤝 Support

If you encounter any issues or have suggestions:

  1. Check the Issues tab on GitHub
  2. Join the Banano Discord - #frankensteins-lab channel
  3. Review this README and the Wiki

If you find this project helpful, please give it a star ⭐ on GitHub!

📄 License

This project is released under the MIT License.


Made with 💛 and potassium.

About

Setup a fully automated Banano cryptocurrency node as part of a dockerized stack with fast-syncing and easy SSL support.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 74.7%
  • Makefile 20.1%
  • HTML 3.8%
  • Other 1.4%