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
Docker and Docker Compose are required, if either of these are missing, the script will attempt to install them automatically for you.
To download or clone the latest release, open a bash terminal and launch the installation script:
curl -sL "https://install.banano.sh" | bashFollow the prompts, provide domain/email if using SSL, and the installer handles the rest.
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 -sFlag 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.1Fast sync downloads ledger files from trusted community sources:
- LMDB Source - lmdb.cutecat.party
- RocksDB Source - moonano.net/ledger
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 startThere are many reoccurring costs involved with maintaining free, open-source software. If you appreciate this project, consider supporting with Banano or Nano:
ban_1ehtttffyimud7izzbmyw3ey3nsxkpjzet4n9htmjcez8themr6ygr57ywr1
nano_3fikgf1bbnsd1g6jzjzgpquq748k3z65epctsr838w855xmccwekqbhdy4tc
We welcome everyone to contribute to issue reports, suggest new features, and create pull requests.
| 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)
| 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. |
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
HOSTto your domain name (e.g.,yourdomain.com) - Set
HOST_EMAILto your email for Let's Encrypt notifications
For Non-SSL Setup:
- Leave
HOSTempty or undefined - Services will be accessible via IP address
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 -dThe 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
The Makefile provides convenient commands for managing your node:
make init # Initialize project (copy .env.example to .env)
make config # Edit .env configuration
make start # Start all servicesmake 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 datamake 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 backupsmake 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 modemake 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 checkmake help # Show all available commandsBanano node runs inside the banano-node container. The installation creates convenient aliases for CLI access:
docker exec -it banano-node /usr/bin/bananode <command>| 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
View your landing page at the root domain/IP address.
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
- 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.
- 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)
To disable the Prometheus exporter, comment it out in your docker-compose file or remove it from the stack, then restart services:
make restartAfter installation, configure advanced node settings:
make post-install
# or
make configureThis 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
# 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-installNote: Most configuration changes require node restart: make restart
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
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
.envfile and node data are never overwritten - Rollback Capability: Easily revert to previous version if needed
This project is built thanks to the excellent work of:
- Banano - Banano, DAG based cryptocurrency
- Nanocurrency - The underlying technology
- Nano Node Monitor - Node monitoring interface
- lephleg/nano-node-docker - Nano Node Docker implementation
- Moonano - Fast sync RocksDB ledger
- nginxproxy/nginx-proxy - Reverse proxy automation
- nginxproxy/acme-companion - Let's Encrypt automation
- containrrr/watchtower - Automated container updates
- Very Cute Cat - Fast sync LMDB ledger
If you encounter any issues or have suggestions:
- Check the Issues tab on GitHub
- Join the Banano Discord - #frankensteins-lab channel
- Review this README and the Wiki
If you find this project helpful, please give it a star ⭐ on GitHub!
This project is released under the MIT License.
Made with 💛 and potassium.
