Skip to main content

Distributed encrypted storage on a mesh VPN network

Project description

RedundaNet - Distributed Encrypted Storage Network

CI PyPI License

RedundaNet is a distributed, encrypted storage system built on a secure mesh VPN network. It enables users to contribute storage resources to a collective grid while maintaining privacy through end-to-end encryption.

Website: https://redundanet.com

Features

  • Decentralized Architecture: No central authority or single point of failure
  • End-to-End Encryption: Data is encrypted before leaving your device using Tahoe-LAFS
  • GPG-Based Authentication: Secure node identity verification via public keyservers
  • Private Networking: Secure Tinc mesh VPN isolates the storage network
  • Erasure Coding: Data is split and distributed across multiple nodes (3-of-10 scheme)
  • Open Membership: Anyone can apply to join the network
  • Containerized Deployment: Easy setup with Docker Compose
  • Raspberry Pi Ready: Pre-built images for ARM devices

How It Works

┌─────────────────────────────────────────────────────────────────────────┐
│                         RedundaNet Network                              │
│                                                                         │
│    Your File                                                            │
│        │                                                                │
│        ▼                                                                │
│   ┌─────────┐     Encrypted      ┌─────────┐                           │
│   │ Encrypt │ ──────────────────►│  Split  │                           │
│   │  (AES)  │                    │(Erasure)│                           │
│   └─────────┘                    └────┬────┘                           │
│                                       │                                 │
│              ┌────────────────────────┼────────────────────────┐       │
│              ▼            ▼           ▼           ▼            ▼       │
│         ┌───────┐    ┌───────┐   ┌───────┐   ┌───────┐    ┌───────┐   │
│         │Share 1│    │Share 2│   │Share 3│   │  ...  │    │Share10│   │
│         └───┬───┘    └───┬───┘   └───┬───┘   └───┬───┘    └───┬───┘   │
│             │            │           │           │            │        │
│             ▼            ▼           ▼           ▼            ▼        │
│         ┌───────┐    ┌───────┐   ┌───────┐   ┌───────┐    ┌───────┐   │
│         │Node A │    │Node B │   │Node C │   │Node D │    │Node E │   │
│         │ (VPN) │◄──►│ (VPN) │◄─►│ (VPN) │◄─►│ (VPN) │◄──►│ (VPN) │   │
│         └───────┘    └───────┘   └───────┘   └───────┘    └───────┘   │
│                                                                         │
│         Only 3 of 10 shares needed to reconstruct your file            │
└─────────────────────────────────────────────────────────────────────────┘

Key Concepts:

  • Your data is encrypted on your device before upload - nodes cannot read your files
  • Erasure coding splits data across nodes - any 3 of 10 nodes can reconstruct your file
  • Mesh VPN connects all nodes securely - no central server required
  • GPG keys verify node identity - published to public keyservers

Join the Network

Want to contribute storage and join RedundaNet? Here's how:

1. Generate and Publish Your GPG Key

# Install the CLI
pip install redundanet

# Generate a GPG key for your node
redundanet node keys generate --name my-node --email you@example.com

# Publish your key to public keyservers
redundanet node keys publish --key-id YOUR_KEY_ID

2. Submit Your Application

Visit redundanet.com/join.html and fill out the application form with:

  • Your GPG Key ID
  • Storage contribution (how much space you'll share)
  • Your region
  • Device type

This creates a GitHub issue that's automatically processed.

3. Wait for Approval

A maintainer will review your application and merge the PR that adds your node to the network manifest.

4. Set Up Your Node

Once approved:

# Clone the repository
git clone https://github.com/adefilippo83/redundanet.git
cd redundanet

# Initialize your node (use the name assigned to you)
redundanet init --name node-XXXXXXXX

# Sync the manifest
redundanet sync

# Start services
docker compose up -d

# Check status
redundanet status

Quick Start (Existing Network Members)

Prerequisites

  • Python 3.11+
  • Docker and Docker Compose
  • GPG (for key management)

Installation

pip install redundanet

Start Services

# As a storage node (contributes storage)
docker compose --profile storage up -d

# As a client only (uses storage)
docker compose --profile client up -d

Upload and Download Files

# Upload a file
redundanet storage upload /path/to/file.txt
# Returns: URI:CHK:abc123...

# Download a file
redundanet storage download URI:CHK:abc123... /path/to/output.txt

CLI Commands

redundanet --help

Commands:
  init        Initialize a new node
  status      Show node and network status
  sync        Sync manifest from repository
  validate    Validate manifest file

  node        Node management commands
    list      List all nodes in the network
    info      Show detailed node information
    add       Add a new node to manifest
    remove    Remove a node from manifest
    keys      Manage GPG keys (generate, export, import, publish, fetch, list)

  network     Network management
    join      Join an existing network
    leave     Leave the network
    peers     Show connected peers
    vpn       VPN management (start/stop/status)

  storage     Storage management
    status    Show storage status
    mount     Mount Tahoe filesystem
    unmount   Unmount filesystem
    upload    Upload a file
    download  Download a file

Raspberry Pi

Pre-built images are available for Raspberry Pi:

  1. Download from GitHub Releases
  2. Flash to SD card using Raspberry Pi Imager
  3. Boot and SSH in: ssh redundanet@redundanet.local (password: redundanet)
  4. Run redundanet init to configure

Architecture

graph TD
    subgraph "Your Device"
        A[redundanet CLI] --> B[Tahoe Client]
        B --> C[Tinc VPN]
    end

    subgraph "Network Nodes"
        D[Tinc VPN] --> E[Tahoe Storage]
        F[Tinc VPN] --> G[Tahoe Storage]
        H[Tinc VPN] --> I[Tahoe Introducer]
    end

    C -->|Encrypted Mesh| D
    C -->|Encrypted Mesh| F
    C -->|Encrypted Mesh| H

Components:

  • Tinc VPN: Creates encrypted mesh network between all nodes
  • Tahoe-LAFS: Handles encryption, erasure coding, and distributed storage
  • GPG: Authenticates node identity via public keyservers
  • Manifest: YAML file in Git defining network configuration

Documentation

Development

# Clone repository
git clone https://github.com/adefilippo83/redundanet.git
cd redundanet

# Install dependencies
make install

# Run tests
make test

# Run linting
make lint

# Run type checking
make type-check

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (make test) and linting (make lint)
  5. Commit your changes
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redundanet-2.0.4.tar.gz (55.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

redundanet-2.0.4-py3-none-any.whl (68.2 kB view details)

Uploaded Python 3

File details

Details for the file redundanet-2.0.4.tar.gz.

File metadata

  • Download URL: redundanet-2.0.4.tar.gz
  • Upload date:
  • Size: 55.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for redundanet-2.0.4.tar.gz
Algorithm Hash digest
SHA256 2b60bafade66c28e0e01d9c31be0fc556fcff617a7a0000afe84945194e3e8a1
MD5 9885854753194e7709d046947ed438ca
BLAKE2b-256 638cdf9ec6e803674dd27813904bcc92d9fd936c16170fc7d5920f029864b1d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for redundanet-2.0.4.tar.gz:

Publisher: release.yml on adefilippo83/redundanet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file redundanet-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: redundanet-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 68.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for redundanet-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4558fd5756f3afc7a0c753707c054fbc7331e1c9a36482220f43a67ab833370d
MD5 34fa41b53e5a26ab06d80545e4e9b1bd
BLAKE2b-256 ac388f918af158567490f3200d765a5665972f57aff4bb816f4e14336e792ee5

See more details on using hashes here.

Provenance

The following attestation bundles were made for redundanet-2.0.4-py3-none-any.whl:

Publisher: release.yml on adefilippo83/redundanet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page