Skip to content

🌀 NeXuS Multi-Network Stack - Final Implementation

Date: February 14, 2026 Philosophy: Sane • Simple • Secure

What We Built

The Right Way (Container Orchestration)

Instead of rebuilding everything, we orchestrate existing working containers:

Your Working Medusa (Tor)
    +
Official I2P Container
    +
Official Yggdrasil Container
    +
HAProxy Smart Router
    =
NeXuS Multi-Network Stack

Files Created

1. nexus-compose.yaml (Container Orchestration)

  • Uses your existing working medusa-proxy
  • Adds official I2P container (purplei2p/i2pd)
  • Adds official Yggdrasil container
  • HAProxy routes between them
  • Everything isolated, nothing breaks

2. haproxy-nexus.cfg (Smart Routing)

  • Routes *.i2p domains → I2P network
  • Routes everything else → Tor (your medusa)
  • Stats page on port 9090
  • Simple, understandable config

3. nexus-start.sh (One Command Startup)

  • Starts all containers with one command
  • Shows all proxy endpoints
  • Gives test commands
  • Shows how to stop

Usage

cd /home/user/git/medusa-proxy

# Start the NeXuS stack
./nexus-start.sh

# Proxy endpoints:
# - Main Router: localhost:9080 (SOCKS) - smart routing
# - HTTP Router: localhost:9443 (HTTP) - domain-based routing
# - Tor Direct:  localhost:1080 (your existing medusa)
# - I2P Direct:  localhost:4447 (I2P SOCKS)
# - Stats:       http://localhost:9090 (admin/nexus)

# Test Tor routing
curl --socks5 localhost:9080 http://check.torproject.org/api/ip

# Test I2P access
curl --socks5 localhost:4447 http://example.i2p

# Stop everything
podman-compose -f nexus-compose.yaml down

What This Gives You

Multi-Network Access

  • Tor - Your existing working medusa (5 instances, load balanced)
  • I2P - Anonymous .i2p access, P2P optimized
  • Yggdrasil - Encrypted IPv6 mesh network

Smart Routing

  • Automatic *.i2p → I2P routing
  • Everything else → Tor
  • Easy to add more routing rules

Production Ready

  • Uses official containers (well-maintained)
  • Each network isolated (secure)
  • Easy to update (just pull new images)
  • Your original medusa untouched (still works)

Architecture

Client Application
HAProxy Router (localhost:9080)
    ┌──┴──┐
    ↓     ↓
  Tor    I2P    Yggdrasil
(medusa) ↓      ↓
 1080   4447   9001

Adding More Networks

Want to add more? Just edit nexus-compose.yaml:

  reticulum:
    image: reticulum/rnsd:latest
    container_name: nexus-reticulum
    ports:
      - "4965:4965"
    networks:
      - nexus-net

Then update haproxy-nexus.cfg to route to it.

Troubleshooting

Containers won't start

# Check if ports are in use
podman ps
netstat -tlnp | grep -E "(9080|1080|4447)"

# View logs
podman-compose -f nexus-compose.yaml logs

Routing not working

# Check HAProxy stats
open http://localhost:9090
# User: admin, Pass: nexus

# Test each backend directly
curl --socks5 localhost:1080 http://check.torproject.org/api/ip  # Tor
curl --socks5 localhost:4447 http://example.i2p  # I2P

Philosophy

Sane

  • Use what works (existing containers)
  • Don't rebuild what exists
  • Simple architecture, easy to understand

Simple

  • 3 files total
  • 1 command to start
  • Clear documentation

Secure

  • Container isolation
  • Official images (maintained)
  • No custom builds breaking things
  • Original medusa untouched

What We Learned

Don't Over-Engineer

  • Started by trying to build everything from scratch ❌
  • Ended by orchestrating existing containers ✅

Use Existing Tools

  • Official containers > custom builds
  • Podman-compose > complex Dockerfiles
  • Configuration > code changes

Keep It Working

  • Don't break what already works
  • Add around, not into
  • Test before replacing

🌀 Together Everyone Achieves More 🌀

Three files. One command. Multi-network anonymity.