redundanet 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,265 @@
1
+ Metadata-Version: 2.1
2
+ Name: redundanet
3
+ Version: 2.0.0
4
+ Summary: Distributed encrypted storage on a mesh VPN network
5
+ Home-page: https://github.com/alessandrodefilippo/redundanet
6
+ License: MIT
7
+ Keywords: distributed-storage,vpn,encryption,mesh-network,tahoe-lafs
8
+ Author: Alessandro De Filippo
9
+ Author-email: alessandro@example.com
10
+ Requires-Python: >=3.11,<4.0
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Security :: Cryptography
21
+ Classifier: Topic :: System :: Distributed Computing
22
+ Classifier: Topic :: System :: Networking
23
+ Requires-Dist: gitpython (>=3.1,<4.0)
24
+ Requires-Dist: httpx (>=0.26,<0.27)
25
+ Requires-Dist: jinja2 (>=3.1,<4.0)
26
+ Requires-Dist: jsonschema (>=4.21,<5.0)
27
+ Requires-Dist: psutil (>=5.9,<6.0)
28
+ Requires-Dist: pydantic (>=2.5,<3.0)
29
+ Requires-Dist: pydantic-settings (>=2.1,<3.0)
30
+ Requires-Dist: python-gnupg (>=0.5,<0.6)
31
+ Requires-Dist: pyyaml (>=6.0,<7.0)
32
+ Requires-Dist: rich (>=13.7,<14.0)
33
+ Requires-Dist: structlog (>=24.1,<25.0)
34
+ Requires-Dist: typer[all] (>=0.9.0,<0.10.0)
35
+ Requires-Dist: watchdog (>=4.0,<5.0)
36
+ Project-URL: Documentation, https://redundanet.readthedocs.io
37
+ Project-URL: Repository, https://github.com/alessandrodefilippo/redundanet
38
+ Description-Content-Type: text/markdown
39
+
40
+ # RedundaNet - Distributed Encrypted Storage Network
41
+
42
+ 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.
43
+
44
+ ## Features
45
+
46
+ - **Decentralized Architecture**: No central authority or single point of failure
47
+ - **End-to-End Encryption**: Data is encrypted before leaving the user's device using Tahoe-LAFS
48
+ - **GPG-Based Authentication**: Secure node identity verification
49
+ - **Private Networking**: Secure Tinc mesh VPN isolates the storage network from the public internet
50
+ - **Erasure Coding**: Data is split and distributed across multiple nodes (3-of-10 scheme by default)
51
+ - **Resource Sharing**: Users contribute resources and benefit from the collective capacity
52
+ - **Containerized Deployment**: Easy setup with Docker Compose
53
+ - **Python-Based CLI**: Modern CLI with Typer for easy management
54
+
55
+ ## Architecture
56
+
57
+ ```mermaid
58
+ graph TD
59
+ subgraph "User Node"
60
+ A[redundanet CLI] --> B[Tahoe Client]
61
+ B --> C[Tinc VPN]
62
+ end
63
+
64
+ subgraph "Storage Node 1"
65
+ D[Tinc VPN] --> E[Tahoe Storage]
66
+ E --> F[Local Storage]
67
+ end
68
+
69
+ subgraph "Storage Node 2"
70
+ G[Tinc VPN] --> H[Tahoe Storage]
71
+ H --> I[Local Storage]
72
+ end
73
+
74
+ subgraph "Introducer Node"
75
+ J[Tinc VPN] --> K[Tahoe Introducer]
76
+ end
77
+
78
+ C -->|Encrypted VPN| D
79
+ C -->|Encrypted VPN| G
80
+ C -->|Encrypted VPN| J
81
+
82
+ K -.->|Introduction Services| B
83
+ K -.->|Introduction Services| E
84
+ K -.->|Introduction Services| H
85
+ ```
86
+
87
+ ## Quick Start
88
+
89
+ ### Prerequisites
90
+
91
+ - Python 3.11+
92
+ - Docker and Docker Compose
93
+ - GPG (for key management)
94
+
95
+ ### Installation
96
+
97
+ #### Using pip (recommended)
98
+
99
+ ```bash
100
+ pip install redundanet
101
+ ```
102
+
103
+ #### Using Poetry (for development)
104
+
105
+ ```bash
106
+ git clone https://github.com/adefilippo83/project-earthgrid.git
107
+ cd project-earthgrid
108
+ poetry install
109
+ ```
110
+
111
+ ### Initialize a Node
112
+
113
+ ```bash
114
+ # Interactive setup
115
+ redundanet init
116
+
117
+ # Or with options
118
+ redundanet init --node-name my-node --vpn-ip 10.100.0.10
119
+ ```
120
+
121
+ ### Start Services with Docker
122
+
123
+ ```bash
124
+ # Start as a storage node
125
+ docker compose -f docker/docker-compose.yml --profile storage up -d
126
+
127
+ # Start as a client only
128
+ docker compose -f docker/docker-compose.yml --profile client up -d
129
+
130
+ # Start as an introducer (network coordinator)
131
+ docker compose -f docker/docker-compose.yml --profile introducer up -d
132
+ ```
133
+
134
+ ### Check Status
135
+
136
+ ```bash
137
+ redundanet status
138
+ ```
139
+
140
+ ## CLI Commands
141
+
142
+ ```
143
+ redundanet --help
144
+
145
+ Commands:
146
+ init Initialize a new node
147
+ status Show node and network status
148
+ sync Sync manifest from repository
149
+ validate Validate manifest file
150
+
151
+ node Node management commands
152
+ list List all nodes in the network
153
+ info Show detailed node information
154
+ add Add a new node to manifest
155
+ remove Remove a node from manifest
156
+
157
+ network Network management
158
+ join Join an existing network
159
+ leave Leave the network
160
+ peers Show connected peers
161
+ vpn VPN management (start/stop/status)
162
+
163
+ storage Storage management
164
+ status Show storage status
165
+ mount Mount Tahoe filesystem
166
+ unmount Unmount filesystem
167
+ upload Upload a file
168
+ download Download a file
169
+ ```
170
+
171
+ ## Configuration
172
+
173
+ RedundaNet uses a YAML manifest file to define network configuration:
174
+
175
+ ```yaml
176
+ network:
177
+ name: my-network
178
+ version: "1.0.0"
179
+ domain: redundanet.local
180
+ vpn_network: 10.100.0.0/16
181
+
182
+ tahoe:
183
+ shares_needed: 3
184
+ shares_happy: 7
185
+ shares_total: 10
186
+ introducer_furl: pb://...
187
+
188
+ nodes:
189
+ - name: node1
190
+ internal_ip: 192.168.1.10
191
+ vpn_ip: 10.100.0.1
192
+ public_ip: 1.2.3.4
193
+ gpg_key_id: ABCD1234
194
+ roles: [introducer, storage]
195
+ storage_contribution: 500GB
196
+ ```
197
+
198
+ ## Development
199
+
200
+ ### Setup Development Environment
201
+
202
+ ```bash
203
+ # Clone repository
204
+ git clone https://github.com/adefilippo83/project-earthgrid.git
205
+ cd project-earthgrid
206
+
207
+ # Install dependencies
208
+ make install
209
+
210
+ # Run tests
211
+ make test
212
+
213
+ # Run linting
214
+ make lint
215
+
216
+ # Run type checking
217
+ make type-check
218
+ ```
219
+
220
+ ### Project Structure
221
+
222
+ ```
223
+ redundanet/
224
+ ├── src/redundanet/ # Main Python package
225
+ │ ├── cli/ # Typer CLI commands
226
+ │ ├── core/ # Core business logic
227
+ │ ├── vpn/ # Tinc VPN management
228
+ │ ├── storage/ # Tahoe-LAFS integration
229
+ │ ├── auth/ # GPG authentication
230
+ │ ├── network/ # Network utilities
231
+ │ └── utils/ # Shared utilities
232
+ ├── docker/ # Docker configurations
233
+ ├── tests/ # Test suite
234
+ ├── docs/ # Documentation
235
+ └── manifests/ # Example manifests
236
+ ```
237
+
238
+ ## Documentation
239
+
240
+ - [Installation Guide](docs/installation.md)
241
+ - [Quick Start Guide](docs/quickstart.md)
242
+ - [Configuration Reference](docs/configuration.md)
243
+ - [Architecture Overview](docs/architecture.md)
244
+
245
+ ## Contributing
246
+
247
+ 1. Fork the repository
248
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
249
+ 3. Make your changes
250
+ 4. Run tests (`make test`)
251
+ 5. Run linting (`make lint`)
252
+ 6. Commit your changes (`git commit -m 'Add amazing feature'`)
253
+ 7. Push to the branch (`git push origin feature/amazing-feature`)
254
+ 8. Open a Pull Request
255
+
256
+ ## License
257
+
258
+ This project is licensed under the GPL License - see the [LICENSE](LICENSE) file for details.
259
+
260
+ ## Acknowledgments
261
+
262
+ - [Tahoe-LAFS](https://tahoe-lafs.org/) - Distributed storage system
263
+ - [Tinc VPN](https://www.tinc-vpn.org/) - Mesh VPN daemon
264
+ - [Typer](https://typer.tiangolo.com/) - CLI framework
265
+
@@ -0,0 +1,37 @@
1
+ redundanet/__init__.py,sha256=alb0XFwGxNY-c3R7wZtFBRluszSmqROQ-Vo7Um1F7Xc,398
2
+ redundanet/__main__.py,sha256=sI1D-Mn0JeICtGPuNLp-uthhIQxOB_6_9Avf1-iOXLQ,151
3
+ redundanet/auth/__init__.py,sha256=BlmLa620gKsRdiD3d8tsDDweA9kI_fTBY9bxM6jtiyU,202
4
+ redundanet/auth/gpg.py,sha256=OG6Gdo19TYzVsyfp9-a8BLxV79gX_P3GcyMe8H_rmh4,9098
5
+ redundanet/auth/keyserver.py,sha256=1zNIOIY62JaAPNWVjZaBHlx2fSN601WsGsR_KizdiAo,6502
6
+ redundanet/cli/__init__.py,sha256=4XqFI3iyLQO6ko2bcSq_OoMvlrk8voMK8twcsHgUziY,89
7
+ redundanet/cli/main.py,sha256=teFau_SP_rb5aDIBNH7vgwcOa8wjXoLW3SoL36kLQZ0,8129
8
+ redundanet/cli/network.py,sha256=K5d03q4t3CBJXEreAQ8WFAsWv2qBhQUIfCE1_1lQcY4,5796
9
+ redundanet/cli/node.py,sha256=z9JyrBdJfpqA7s65_TnyXI_70-7WpH1GlBhG13NfZyM,10161
10
+ redundanet/cli/storage.py,sha256=I-n8NO_x_v7vKp3bx3yxfYNLNHNyOOuXMpl0T4mmZzs,8054
11
+ redundanet/core/__init__.py,sha256=fOx3CxtyI4s2wPmBzAuqkcGq5JLKKS3BvebuUandNBQ,673
12
+ redundanet/core/config.py,sha256=ZlEaR9i1aVHtnWcTE-BHvu3vwpYxd5q0rhlwT6hKh3g,6328
13
+ redundanet/core/exceptions.py,sha256=sCeMw0YU7FFdpZkav5PW64-PTuGUPd2_7TaGlsJh9lY,1835
14
+ redundanet/core/manifest.py,sha256=nW0BEtKEwlh5QQPUCeR8Anya1a8CWJ5-JwBYNW18JBA,12257
15
+ redundanet/core/node.py,sha256=gMtsDVLz1gSZjttoU7jBUQfuQrHV3yDY2ts1yvZL780,4140
16
+ redundanet/network/__init__.py,sha256=8t1sNA9P7xOC_IHN_Tbo0qFakQBTmrriuh-M2fzB41Y,286
17
+ redundanet/network/discovery.py,sha256=37bu-EL5IKnYHxuup1wBJo3498q9stER-yRX3_6TKlk,6261
18
+ redundanet/network/dns.py,sha256=CneCQldM_QmRaJQJKx3YjygRKktfLjT6y3qJFb48tVc,5305
19
+ redundanet/network/validation.py,sha256=DhjnyknkiCd-FYDz30GcewYC-7lMZCfPGGrBm_DpnPg,8952
20
+ redundanet/storage/__init__.py,sha256=a3e4hfWqY-Gczpi-aMlXEKgQIXAO67K5xc3uBn8I1bI,353
21
+ redundanet/storage/client.py,sha256=FIrgpyZe2ovirvGApk73mtVycZDohuk6Dnnc0KxuCCo,9312
22
+ redundanet/storage/furl.py,sha256=z5s_5344JN6lYRxdt35d7PFL0wtLvBaWdG3Pw4ztLbo,5560
23
+ redundanet/storage/introducer.py,sha256=qhGI3lUOrxCYdx3anF8hFd5efSvDu_JKFPQFBcJI3yM,5483
24
+ redundanet/storage/storage.py,sha256=eedGkr4nr6wUHf4UxMOiI9iyhcq-QEba9qLwEL7kJyY,6495
25
+ redundanet/utils/__init__.py,sha256=gGWh6jgJZLZuRUBKXmIxbMMxsy0B6oU5p63UxUHFcO0,392
26
+ redundanet/utils/files.py,sha256=Mo-_TevoDgVpYo_qMvSLx8CBYXWltz66AOMtIJM6sQA,3761
27
+ redundanet/utils/logging.py,sha256=wvun1z7C2doOCDZHZGYLyW63h5V07TrfS9lH0nOeKOg,2779
28
+ redundanet/utils/process.py,sha256=TZQO9bfwKYOu4OApBEFypiQLyWAenowIu-6HVREACw0,6157
29
+ redundanet/vpn/__init__.py,sha256=MB3Bh4xrCCZUoj1d2BkfbbSbmwL7652lMO76Re6dEjk,283
30
+ redundanet/vpn/keys.py,sha256=yTfLpqguTNOZlsvgzMS4vq9WTgVL9AUVTcZbftY6a3w,5326
31
+ redundanet/vpn/mesh.py,sha256=EVdYcQY2reV_UESXRHEUKEIhhSSwaG7u1vvPtV6PDZI,6041
32
+ redundanet/vpn/tinc.py,sha256=u5j2ZMPOjTfXM4LPHjg7NZmYdTF51kg58qTuA7CDtTw,10288
33
+ redundanet-2.0.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
34
+ redundanet-2.0.0.dist-info/METADATA,sha256=x9hHnnwtCPaRwVWw2bGB0SHyUFs2IK6A6huPCpVH7pc,7252
35
+ redundanet-2.0.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
36
+ redundanet-2.0.0.dist-info/entry_points.txt,sha256=-0cdQEyYsTHavFdq-k_uws2bxnQrD2Ud0FfllcHGrcw,54
37
+ redundanet-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: poetry-core 1.8.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ redundanet=redundanet.cli.main:app
3
+