No description
Find a file
2025-09-29 19:17:06 +02:00
script Added favorites system with star ratings, improved UI layout, fixed console errors 2025-09-18 21:58:55 +02:00
settings Major Update including Search Engine feature, other code fixes, update readme 2025-09-27 15:35:14 +02:00
templates Optimize UI for mobiles / tablets devices 2025-09-29 17:26:38 +02:00
.gitignore Add docker support 2025-09-28 20:12:44 +02:00
config Add docker support 2025-09-28 20:12:44 +02:00
docker-compose.yaml Add docker support 2025-09-28 20:12:44 +02:00
Dockerfile Add docker support 2025-09-28 20:12:44 +02:00
LICENSE Initial commit 2025-09-16 08:53:50 +02:00
rBrowser.py Fixed flask web server start 2025-09-28 20:52:52 +02:00
README.md Update docker build info 2025-09-29 19:17:06 +02:00
requirements.txt Implement Production Ready Web Servers (waitress for win, gunicorn for linux), update readme and requirements.txt 2025-09-20 10:22:21 +02:00

rBrowser v1.0 - Standalone Nomadnet Browser


lastv1

rBrowser: Standalone NomadNet Browser

A standalone web-based UI browser for exploring NomadNetwork Nodes and Pages over Reticulum Network.

This browser automatically discovers NomadNet nodes through network announces and provides a user-friendly interface for browsing distributed content with Micron markup support.

It includes some exclusive features like: Automatic listening for announce, Add nodes to favorites, browse and render any kind of NomadNet links, download files from remote nodes, unique local NomadNet Search Engine and more...


Some Features:

  • Real-time Node Discovery: Automatically detects and lists NomadNetwork nodes as they announce on the network
  • Web-based Interface: Modern, responsive browser interface accessible at localhost:5000
  • Micron Parser: Renders NomadNet's Micron markup language with proper formatting and styling
  • URL Navigation: Address bar with back/forward navigation and manual URL input
  • Dual View Modes: Toggle between rendered Micron content and raw text view (top-right Rendered / Raw button)
  • Link Navigation: Click on links within Micron content to navigate between pages
  • Connection Status: Real-time display of network status and discovered pages / announced nodes
  • File download support: Download files hosted on nomadnet nodes
  • NomadNet Search Endinge: Unique search engine system to search in local auto-cached pages if enabled
  • Add To Favorites: Favorite system with star button synched across the whole UI tabs
  • Node Info: Extended node info for remote node hosting page in the node list
  • Fingerprint: Allow to identify with identity and LXMF address to remote host with a button
  • Notifications & Logs: Comprehensive Notifications info box in the web ui + full operational log in the terminal
  • And more......: Download rBrowser and try it now!!

Requirements

System Requirements

  • Python: 3.7 or higher
  • Operating System: Linux, macOS, or Windows
  • Network: Access to a Reticulum network (radio interfaces, internet gateways, or local testnet)

Python Dependencies

  • reticulum >= rns 1.0.0 - Reticulum networking protocol stack for connection and NomadNetwork retrival
  • flask >= 2.0.0 - Base Web framework for the browser UI interface
  • waitress - Web Server Framework for windows os
  • gunicorn - Web Server Framework for Linux

Installation

Option 1: Run from terminal

  1. Clone the repository:

    git clone https://github.com/fr33n0w/rBrowser.git
    cd rBrowser
    
  2. Install Python dependencies:

    pip install -r requirements.txt
    
  3. Configure Reticulum:

    Before launching the script you need a full working instance of Reticulum, so you need to configure at least one TCPClientInterface in your ./reticulum/config file.

    You don't need to run rns manually, just make sure your instance is working and can connect to Reticulum Network!


Option 2: Docker & Docker Compose

This repository includes a Dockerfile and a docker-compose.yaml so you can run rBrowser in a container. The compose setup builds the image and exposes the web UI on port 5000.

Docker Setup Guide

Prerequisites

1. Install Docker and Docker Compose

Check if already installed:

docker --version
docker-compose --version


If not installed on Debian/Ubuntu:

# Install Docker
sudo apt-get update
sudo apt-get install docker.io

# Install Docker Compose (standalone)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Quick start with Docker installed:


Configure Docker User Permissions:

# add current user to docker group (if not already present):
sudo usermod -aG docker $USER 
Important: Log out and log back in for the group change to take effect.

# clone repo:
git clone https://github.com/fr33n0w/rBrowser

# enter root repo directory:
cd rBrowser

# build and start in background
docker compose up -d

# follow logs
docker compose logs -f rbrowser


Useful Commands
Rebuild image and restart:

# rebuild image and restart
docker compose build --no-cache rbrowser
docker compose up -d

# Stop the container:
docker compose down

# View running containers:
docker ps

FINALLY:

Open the UI at: http://localhost:5000

Notes:

  • The Dockerfile copies a repository config file into the container at /home/appuser/.reticulum/config. Ensure you have a valid Reticulum config file named config in the repo root before building, or mount your config at runtime:
    • Example volume override in docker-compose.yaml: volumes:
      • ./config:/home/appuser/.reticulum/config:ro
  • Use docker compose ps to check service and healthcheck status (compose file includes a basic HTTP healthcheck).
  • Stop and remove containers with:
docker compose down

Running the Browser

  1. Start the browser: (if using install Option 1)

    python3 rBrowser.py
    
  2. Open your web browser and navigate to: (both for install Option 1 and 2)

    http://localhost:5000
    
  3. Wait for node discovery:

    • The browser will start listening for NomadNetwork announces
    • Discovered nodes will appear in the left sidebar
    • Click on any node to browse its content and navigate pages
    • Manually paste address in the bar without waiting for announces
    • Check bottom-left Status Bar for connection status info

Usage

URL Formats Supported

  • hash:/page/index.mu - Direct hash with page path
  • nomadnetwork://hash/page/index.mu - Full protocol URL
  • hash - Hash only (defaults to /page/index.mu)
  • :page/index.mufieldcontent - Pages with input field in URL

Navigation

  • Address Bar: Enter NomadNet URLs manually
  • Back/Forward: Navigate through browsing history
  • Refresh: Reload the current page
  • Node Sidebar: Click any discovered node to browse
  • Link Clicking: Click links within Micron content to navigate
  • Add Favorites: Save your favorite nodes and recall them later
  • Search Page or Content: Use the included NomadNet Search Engine to discover content
  • Identify to remote nodes: Send fingerprint to identify to remote nodes (send identity and LXMF address)

Pages View Mode:

  • Rendered View: Displays Micron markup with proper formatting
  • Raw View: Shows the original Micron source code

Currently Implemented

  • Reticulum Network Integration: Full connection to Reticulum mesh network
  • NomadNet Node Discovery: Real-time announce monitoring and node listing
  • Page Fetching: Request and receive pages from remote nodes
  • Micron Rendering: Parse and display Micron markup language
  • Web Interface: Complete browser-style interface with navigation
  • URL Navigation: Address bar with manual URL input support
  • Navigation History: Back/forward button functionality
  • Link Detection: Automatic detection of NomadNet URLs in content
  • Click Navigation: Navigate by clicking links in rendered content
  • Notification System: Modern info box notifications when info are needed
  • Multiple URL Formats: Enhanced parsing for various NomadNet URL conventions
  • Page Title Extraction: Parse and display proper page titles in all UI info text
  • Navigation Breadcrumbs: Show current node name and url location path
  • Link Preview: Hover tooltips showing destination URLs
  • Dual View Modes: Toggle between rendered and raw text views
  • Error Handling: Robust error handling for network issues and timeouts
  • Complete Local Usage: incorporated scripts, css and js without external call to any CDN's
  • Bookmark System: Save frequently visited nodes and pages (Favorites Nodes Bar)
  • MultiTab Navigation: Open multiple links in new browser tabs
  • Navigation Shortcuts: Keyboards shortcuts for tab navigation / new / close / reload page
  • Web UI: Implemented waitress and gunicorn production ready web servers, fallback to flask if missing.
  • File Download: Support download for files hosted on nomadnet nodes with progress notification!
  • User inputs support: Form, URL, and input boxes sending user input are supported.
  • Fingerprint: Send identity and lxmf address to the host node
  • NomadNet Search Engine : Local NomadNet Nodes page-caching Search Engine
  • Optimized UI : Auto-adapt UI for small screen devices like mobiles and tablets
  • Docker Version: Dependencies-free installation on docker

Next Implementations:

The following features are planned for the next versions:

  • Windows , Linux and MacOs Executable App, probably.

Known Issues:

  • Sometimes Input box parameter sending is failing on some nodes with non-standard nomadnet micron link format, due to unique user fields customization (BTW >95% of the nodes page are perfectly working!)

Bug or issues report:

  • If you find bugs or any other issue, feel free to contact the developer on Reticulum at: LXMF Address: 0d051f3b6f844380c3e0c5d14e37fac8 or open a github issue

Development Notes

  • The browser creates an identity file (nomadnet_browser_identity) on first run
  • Reticulum configuration is stored in the default location (~/.reticulum/)
  • The application runs as a single-page application with AJAX content loading
  • Fallback Micron parser is included if the original parser fails to load
  • Detailed logs are printed by the python script in the terminal
  • If Search Engine is enabled (ON by default), Nomadnet pages will be chached locally in /cache/nodes folder

Troubleshooting

No nodes appearing:

  • Verify Reticulum network connectivity and configuration!
  • Check that NomadNetwork nodes are active on your network
  • Ensure firewall allows Reticulum traffic

Page loading failures:

  • Confirm the target node is online and reachable
  • Check network connectivity to the Reticulum network
  • Verify the page path exists on the target node

Micron rendering issues:

  • Ensure micron-parser_original.js is in the script/ directory
  • Check browser console for JavaScript errors
  • Try toggling to Raw View to see source content

In case of disconnections from network

  • Chech the bottom left status bar for connection info and status
  • If disconnected, verify that the python script is running
  • Verify your RNS config carefully before running the script
  • Check critical logs in terminal, logs are shown from the Reticulum instance log into the script terminal.

** Common Errors:**:

  • Failed to initialize: Attempt to reinitialise Reticulum when it was already running: make sure to close other running reticulum process or instances
  • Reticulum error logs in terminal: check your Reticulum settings and interfaces configuration in /youruser/.reticulum/config file.

Warning:

The included Search Engine generates network traffic when enabled, by requesting remote pages. It requests by default only the index.mu page but you can try to fetch more pages with "Cache additional pages" in the Search Engine settings.

IF YOU ARE USING LORA INTERFACE, DISABLE THE SEARCH ENGINE (TO AVOID CONSUMING ALL THE AIRTIME AND GENERATING UNWANTED NETWORK TRAFFIC.)


License

This project is open source. Use it and share freely. Please mention the official project link.

Please refer to the LICENSE file for details.


Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.


External dependencies:

This project includes local available versions of:

  • micronparser.js for NomadNet pages rendering
  • DOMPurify.min.js for html security

The Web UI is served by:

  • Flask (developer web server, default if others are missing)
  • waitress (Production web server for windows)
  • gunicorn (Production web server for linux)

External software and all their rights are owned by the respective developers.


rBrowser v1.0

##Screenshots:

lastv1_2

Example of Extended Node Informations:

lastv1_3

Example of the included Search Engine feature:

lastv1_4 search

❤️ Developed with love by Franky & Thomas ❤️