init
This commit is contained in:
+358
@@ -0,0 +1,358 @@
|
||||
# Personal Internet Cell - Quick Start Guide
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
This guide will help you get your Personal Internet Cell up and running with the new production-grade architecture in minutes.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- **Docker and Docker Compose** installed
|
||||
- **Python 3.10+** (for CLI and development)
|
||||
- **Ports available**: 53, 80, 443, 3000, 51820
|
||||
- **Administrative access** (for WireGuard and network services)
|
||||
- **2GB+ RAM, 10GB+ disk space**
|
||||
|
||||
### Step 1: Initial Setup
|
||||
|
||||
```bash
|
||||
# Clone or download the project
|
||||
git clone https://github.com/yourusername/PersonalInternetCell.git
|
||||
cd PersonalInternetCell
|
||||
|
||||
# Start all services with Docker (Recommended)
|
||||
docker-compose up --build
|
||||
|
||||
# Or run locally
|
||||
pip install -r api/requirements.txt
|
||||
python api/app.py
|
||||
```
|
||||
|
||||
### Step 2: Verify Installation
|
||||
|
||||
```bash
|
||||
# Check if API is responding
|
||||
curl http://localhost:3000/health
|
||||
|
||||
# Check service status
|
||||
curl http://localhost:3000/api/services/status
|
||||
|
||||
# Use the enhanced CLI
|
||||
python api/enhanced_cli.py --status
|
||||
```
|
||||
|
||||
### Step 3: Explore Services
|
||||
|
||||
```bash
|
||||
# Show all services
|
||||
python api/enhanced_cli.py --services
|
||||
|
||||
# Check health data
|
||||
python api/enhanced_cli.py --health
|
||||
|
||||
# Interactive mode
|
||||
python api/enhanced_cli.py --interactive
|
||||
```
|
||||
|
||||
## 📋 Enhanced CLI Commands
|
||||
|
||||
### Basic Management
|
||||
```bash
|
||||
# Service status
|
||||
python api/enhanced_cli.py --status
|
||||
python api/enhanced_cli.py --services
|
||||
|
||||
# Health monitoring
|
||||
python api/enhanced_cli.py --health
|
||||
|
||||
# Service logs
|
||||
python api/enhanced_cli.py --logs network
|
||||
python api/enhanced_cli.py --logs wireguard
|
||||
```
|
||||
|
||||
### Configuration Management
|
||||
```bash
|
||||
# Export configuration
|
||||
python api/enhanced_cli.py --export-config json
|
||||
python api/enhanced_cli.py --export-config yaml
|
||||
|
||||
# Import configuration
|
||||
python api/enhanced_cli.py --import-config config.json
|
||||
|
||||
# Configuration wizard
|
||||
python api/enhanced_cli.py --wizard network
|
||||
python api/enhanced_cli.py --wizard email
|
||||
```
|
||||
|
||||
### Batch Operations
|
||||
```bash
|
||||
# Execute multiple commands
|
||||
python api/enhanced_cli.py --batch "status" "services" "health"
|
||||
|
||||
# Interactive mode with tab completion
|
||||
python api/enhanced_cli.py --interactive
|
||||
```
|
||||
|
||||
## 🌐 Accessing Services
|
||||
|
||||
Once running, you can access:
|
||||
|
||||
- **API Server**: http://localhost:3000
|
||||
- **API Health**: http://localhost:3000/health
|
||||
- **Service Status**: http://localhost:3000/api/services/status
|
||||
- **Configuration**: http://localhost:3000/api/config
|
||||
- **Service Bus**: http://localhost:3000/api/services/bus/status
|
||||
- **Logs**: http://localhost:3000/api/logs/services/network
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Cell Configuration
|
||||
|
||||
The cell uses a centralized configuration system with schema validation:
|
||||
|
||||
```bash
|
||||
# View current configuration
|
||||
curl http://localhost:3000/api/config
|
||||
|
||||
# Update configuration
|
||||
curl -X PUT http://localhost:3000/api/config \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"cell_name": "mycell",
|
||||
"domain": "mycell.cell",
|
||||
"ip_range": "10.0.0.0/24",
|
||||
"wireguard_port": 51820
|
||||
}'
|
||||
```
|
||||
|
||||
### Service Configuration
|
||||
|
||||
Each service has its own configuration schema:
|
||||
|
||||
```bash
|
||||
# Network configuration
|
||||
python api/enhanced_cli.py --wizard network
|
||||
|
||||
# Email configuration
|
||||
python api/enhanced_cli.py --wizard email
|
||||
|
||||
# WireGuard configuration
|
||||
python api/enhanced_cli.py --wizard wireguard
|
||||
```
|
||||
|
||||
### Network Configuration
|
||||
The cell uses the following network ranges:
|
||||
- **Cell Network**: 10.0.0.0/24 (configurable)
|
||||
- **DHCP Range**: 10.0.0.100-10.0.0.200 (configurable)
|
||||
- **WireGuard Port**: 51820/UDP (configurable)
|
||||
- **API Port**: 3000 (configurable)
|
||||
|
||||
## 🔗 Adding Peers
|
||||
|
||||
### 1. Generate WireGuard Keys (on peer cell)
|
||||
```bash
|
||||
wg genkey | tee private.key | wg pubkey > public.key
|
||||
```
|
||||
|
||||
### 2. Add Peer to Your Cell
|
||||
```bash
|
||||
# Using the enhanced CLI
|
||||
python api/enhanced_cli.py --batch "add-peer bob 203.0.113.22 $(cat public.key)"
|
||||
|
||||
# Or via API
|
||||
curl -X POST http://localhost:3000/api/wireguard/peers \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "bob",
|
||||
"ip": "203.0.113.22",
|
||||
"public_key": "your_public_key_here"
|
||||
}'
|
||||
```
|
||||
|
||||
### 3. Configure Routing Rules
|
||||
```bash
|
||||
# Allow peer to access your LAN
|
||||
curl -X POST http://localhost:3000/api/routing/peers \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"peer_name": "bob",
|
||||
"peer_ip": "203.0.113.22",
|
||||
"allowed_networks": ["10.0.0.0/24"],
|
||||
"route_type": "lan"
|
||||
}'
|
||||
|
||||
# Allow peer to use your cell as exit node
|
||||
curl -X POST http://localhost:3000/api/routing/exit-nodes \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"peer_name": "bob",
|
||||
"peer_ip": "203.0.113.22",
|
||||
"allowed_domains": ["google.com", "github.com"]
|
||||
}'
|
||||
```
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### Services Not Starting
|
||||
```bash
|
||||
# Check Docker logs
|
||||
docker-compose logs
|
||||
|
||||
# Check individual service
|
||||
docker-compose logs api
|
||||
docker-compose logs wireguard
|
||||
|
||||
# Check service status via API
|
||||
curl http://localhost:3000/api/services/status
|
||||
```
|
||||
|
||||
### API Issues
|
||||
```bash
|
||||
# Test API health
|
||||
curl http://localhost:3000/health
|
||||
|
||||
# Check service connectivity
|
||||
curl http://localhost:3000/api/services/connectivity
|
||||
|
||||
# View API logs
|
||||
python api/enhanced_cli.py --logs api
|
||||
```
|
||||
|
||||
### Network Issues
|
||||
```bash
|
||||
# Test DNS resolution
|
||||
nslookup google.com 127.0.0.1
|
||||
|
||||
# Check network service status
|
||||
curl http://localhost:3000/api/dns/status
|
||||
curl http://localhost:3000/api/network/info
|
||||
|
||||
# Test network connectivity
|
||||
curl -X POST http://localhost:3000/api/network/test \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"target": "8.8.8.8"}'
|
||||
```
|
||||
|
||||
### WireGuard Issues
|
||||
```bash
|
||||
# Check WireGuard status
|
||||
curl http://localhost:3000/api/wireguard/status
|
||||
|
||||
# Test WireGuard connectivity
|
||||
curl -X POST http://localhost:3000/api/wireguard/connectivity \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"target_ip": "203.0.113.22"}'
|
||||
|
||||
# View WireGuard logs
|
||||
python api/enhanced_cli.py --logs wireguard
|
||||
```
|
||||
|
||||
### Configuration Issues
|
||||
```bash
|
||||
# Validate configuration
|
||||
curl http://localhost:3000/api/config
|
||||
|
||||
# Backup and restore
|
||||
curl -X POST http://localhost:3000/api/config/backup
|
||||
curl -X POST http://localhost:3000/api/config/restore/backup_id
|
||||
|
||||
# Export/import configuration
|
||||
python api/enhanced_cli.py --export-config json
|
||||
python api/enhanced_cli.py --import-config config.json
|
||||
```
|
||||
|
||||
## 📁 File Structure
|
||||
|
||||
```
|
||||
PersonalInternetCell/
|
||||
├── docker-compose.yml # Main orchestration
|
||||
├── api/ # API server and service managers
|
||||
│ ├── base_service_manager.py # Base class for all services
|
||||
│ ├── config_manager.py # Configuration management
|
||||
│ ├── service_bus.py # Event-driven service bus
|
||||
│ ├── log_manager.py # Comprehensive logging
|
||||
│ ├── enhanced_cli.py # Enhanced CLI tool
|
||||
│ ├── network_manager.py # DNS, DHCP, NTP
|
||||
│ ├── wireguard_manager.py # VPN and peer management
|
||||
│ ├── email_manager.py # Email services
|
||||
│ ├── calendar_manager.py # Calendar services
|
||||
│ ├── file_manager.py # File storage
|
||||
│ ├── routing_manager.py # Routing and NAT
|
||||
│ ├── vault_manager.py # Security and trust
|
||||
│ ├── container_manager.py # Container orchestration
|
||||
│ ├── cell_manager.py # Overall cell management
|
||||
│ ├── peer_registry.py # Peer registration
|
||||
│ ├── app.py # Main API server
|
||||
│ └── test_enhanced_api.py # Comprehensive test suite
|
||||
├── config/ # Configuration files
|
||||
│ ├── cell.json # Cell configuration
|
||||
│ ├── network.json # Network service config
|
||||
│ ├── wireguard.json # WireGuard config
|
||||
│ └── ...
|
||||
├── data/ # Persistent data
|
||||
│ ├── api/ # API data
|
||||
│ ├── dns/ # DNS zones
|
||||
│ ├── email/ # Email data
|
||||
│ ├── calendar/ # Calendar data
|
||||
│ ├── files/ # File storage
|
||||
│ ├── vault/ # Certificates and keys
|
||||
│ └── logs/ # Service logs
|
||||
└── webui/ # React frontend (if available)
|
||||
```
|
||||
|
||||
## 🔒 Security Notes
|
||||
|
||||
- **Self-hosted CA**: The cell generates and manages its own certificates
|
||||
- **WireGuard keys**: Generated automatically with secure key management
|
||||
- **Service isolation**: All services run in isolated Docker containers
|
||||
- **Encrypted storage**: Sensitive data encrypted using Age/Fernet
|
||||
- **Trust management**: Peer trust relationships with cryptographic verification
|
||||
- **Configuration validation**: All configuration validated against schemas
|
||||
|
||||
## 🆘 Getting Help
|
||||
|
||||
### Diagnostic Commands
|
||||
```bash
|
||||
# Comprehensive status check
|
||||
python api/enhanced_cli.py --status
|
||||
|
||||
# Service health check
|
||||
python api/enhanced_cli.py --health
|
||||
|
||||
# Service logs
|
||||
python api/enhanced_cli.py --logs network
|
||||
|
||||
# Configuration validation
|
||||
curl http://localhost:3000/api/config
|
||||
|
||||
# Service connectivity test
|
||||
curl http://localhost:3000/api/services/connectivity
|
||||
```
|
||||
|
||||
### Common Issues
|
||||
1. **Port conflicts**: Ensure ports 53, 3000, 51820 are available
|
||||
2. **Permission issues**: Run with appropriate privileges for network services
|
||||
3. **Configuration errors**: Use the configuration wizard for guided setup
|
||||
4. **Service dependencies**: Check service bus status for dependency issues
|
||||
|
||||
## 🚀 Next Steps
|
||||
|
||||
After basic setup, consider:
|
||||
|
||||
1. **Customizing your cell name** and domain configuration
|
||||
2. **Adding trusted peers** for mesh networking
|
||||
3. **Configuring email services** with your domain
|
||||
4. **Setting up file storage** and user management
|
||||
5. **Implementing backup strategies** for configuration and data
|
||||
6. **Exploring advanced routing** features (exit nodes, bridge routing)
|
||||
7. **Setting up monitoring** and alerting for service health
|
||||
|
||||
## 📚 Additional Resources
|
||||
|
||||
- **[API Documentation](api/API_DOCUMENTATION.md)**: Complete API reference
|
||||
- **[Comprehensive Improvements](COMPREHENSIVE_IMPROVEMENTS_SUMMARY.md)**: Architecture overview
|
||||
- **[Enhanced API Improvements](ENHANCED_API_IMPROVEMENTS.md)**: Technical details
|
||||
- **[Project Wiki](Personal%20Internet%20Cell%20–%20Project%20Wiki.md)**: Detailed project information
|
||||
|
||||
---
|
||||
|
||||
**🌟 Happy networking with your Personal Internet Cell!**
|
||||
Reference in New Issue
Block a user