- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore) - Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md) - Remove executable permissions from web assets (HTML, CSS, JS files) - Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt) - Remove executable permissions from source code files across all apps - Add executable permissions to Python
204 lines
5.5 KiB
Markdown
204 lines
5.5 KiB
Markdown
# AITBC Development Environment Scripts
|
|
|
|
This directory contains scripts for managing the AITBC development environment, including incus containers and systemd services.
|
|
|
|
## 📋 Available Scripts
|
|
|
|
### 🔧 `start-aitbc-dev.sh`
|
|
Starts incus containers and AITBC systemd services on localhost.
|
|
|
|
**Features:**
|
|
- Starts incus containers: `aitbc` and `aitbc1`
|
|
- Starts all local systemd services matching `aitbc-*`
|
|
- Checks service health and port status
|
|
- Tests health endpoints
|
|
- Provides colored output and status reporting
|
|
|
|
**Usage:**
|
|
```bash
|
|
./scripts/start-aitbc-dev.sh
|
|
```
|
|
|
|
### 🛑 `stop-aitbc-dev.sh`
|
|
Stops incus containers and AITBC systemd services on localhost.
|
|
|
|
**Features:**
|
|
- Stops incus containers: `aitbc` and `aitbc1`
|
|
- Stops all local systemd services matching `aitbc-*`
|
|
- Verifies services are stopped
|
|
- Provides colored output and status reporting
|
|
|
|
**Usage:**
|
|
```bash
|
|
./scripts/stop-aitbc-dev.sh
|
|
```
|
|
|
|
### 🚀 `start-aitbc-full.sh`
|
|
Comprehensive startup script for the complete AITBC development environment.
|
|
|
|
**Features:**
|
|
- Starts incus containers: `aitbc` and `aitbc1`
|
|
- Starts services inside containers
|
|
- Starts all local systemd services matching `aitbc-*`
|
|
- Tests connectivity to container services
|
|
- Provides detailed status reporting
|
|
- Shows container IP addresses
|
|
- Tests health endpoints
|
|
|
|
**Services Started:**
|
|
- **Local Services:** All `aitbc-*` systemd services
|
|
- **Container Services:**
|
|
- `aitbc-coordinator-api`
|
|
- `aitbc-wallet-daemon`
|
|
- `aitbc-blockchain-node`
|
|
|
|
**Usage:**
|
|
```bash
|
|
./scripts/start-aitbc-full.sh
|
|
```
|
|
|
|
## 🎯 Prerequisites
|
|
|
|
### Required Commands:
|
|
- `incus` - Container management
|
|
- `systemctl` - Systemd service management
|
|
- `curl` - Health endpoint testing
|
|
- `netstat` - Port checking
|
|
|
|
### Required Containers:
|
|
The scripts expect these incus containers to exist:
|
|
- `aitbc`
|
|
- `aitbc1`
|
|
|
|
### Required Services:
|
|
The scripts look for systemd services matching the pattern `aitbc-*`.
|
|
|
|
## 📊 Service Ports
|
|
|
|
| Port | Service | Description |
|
|
|------|---------|-------------|
|
|
| 8001 | Coordinator API | Main API service |
|
|
| 8002 | Wallet Daemon | Wallet management |
|
|
| 8003 | Blockchain RPC | Blockchain node RPC |
|
|
| 8000 | Coordinator API (alt) | Alternative API |
|
|
| 8081 | Blockchain Node 1 | Blockchain instance |
|
|
| 8082 | Blockchain Node 2 | Blockchain instance |
|
|
| 8006 | Coordinator API (dev) | Development API |
|
|
|
|
## 🔍 Health Endpoints
|
|
|
|
The scripts test these health endpoints:
|
|
- `http://localhost:8001/health` - Coordinator API
|
|
- `http://localhost:8002/health` - Wallet Daemon
|
|
- `http://localhost:8003/health` - Blockchain RPC
|
|
|
|
## 📝 Output Examples
|
|
|
|
### Success Output:
|
|
```
|
|
[INFO] Starting AITBC Development Environment...
|
|
[INFO] Starting incus containers...
|
|
[SUCCESS] Container aitbc started successfully
|
|
[SUCCESS] Container aitbc1 started successfully
|
|
[INFO] Starting AITBC systemd services on localhost...
|
|
[SUCCESS] Service aitbc-coordinator-api started successfully
|
|
[SUCCESS] Service aitbc-wallet-daemon started successfully
|
|
[INFO] Checking service status...
|
|
[SUCCESS] aitbc-coordinator-api: RUNNING
|
|
[SUCCESS] aitbc-wallet-daemon: RUNNING
|
|
[SUCCESS] AITBC Development Environment startup complete!
|
|
```
|
|
|
|
### Service Status:
|
|
```
|
|
[INFO] Checking AITBC service ports...
|
|
[SUCCESS] Coordinator API (port 8001): RUNNING
|
|
[SUCCESS] Wallet Daemon (port 8002): RUNNING
|
|
[WARNING] Blockchain RPC (port 8003): NOT RUNNING
|
|
```
|
|
|
|
## 🛠️ Troubleshooting
|
|
|
|
### Common Issues:
|
|
|
|
1. **Container not found:**
|
|
```
|
|
[ERROR] Container aitbc not found. Please create it first.
|
|
```
|
|
**Solution:** Create the incus containers first:
|
|
```bash
|
|
incus launch images:ubuntu/22.04 aitbc
|
|
incus launch images:ubuntu/22.04 aitbc1
|
|
```
|
|
|
|
2. **Service not found:**
|
|
```
|
|
[WARNING] No AITBC services found on localhost
|
|
```
|
|
**Solution:** Install AITBC services or check if they're named correctly.
|
|
|
|
3. **Port already in use:**
|
|
```
|
|
[WARNING] Service aitbc-coordinator-api is already running
|
|
```
|
|
**Solution:** This is normal - the script detects already running services.
|
|
|
|
4. **Permission denied:**
|
|
```
|
|
[ERROR] Failed to start service aitbc-coordinator-api
|
|
```
|
|
**Solution:** Run with sudo or check user permissions.
|
|
|
|
### Debug Commands:
|
|
|
|
```bash
|
|
# Check all AITBC services
|
|
systemctl list-units | grep aitbc-
|
|
|
|
# Check container status
|
|
incus list
|
|
|
|
# View service logs
|
|
journalctl -f -u aitbc-coordinator-api
|
|
|
|
# View container logs
|
|
incus exec aitbc -- journalctl -f -u aitbc-coordinator-api
|
|
|
|
# Check port usage
|
|
netstat -tlnp | grep :800
|
|
```
|
|
|
|
## 🔄 Workflow
|
|
|
|
### Development Setup:
|
|
1. Create incus containers (if not exists)
|
|
2. Install AITBC services in containers
|
|
3. Install AITBC systemd services locally
|
|
4. Run `./scripts/start-aitbc-full.sh`
|
|
|
|
### Daily Development:
|
|
1. `./scripts/start-aitbc-full.sh` - Start everything
|
|
2. Work on AITBC development
|
|
3. `./scripts/stop-aitbc-dev.sh` - Stop when done
|
|
|
|
### Testing:
|
|
1. Start services with scripts
|
|
2. Test health endpoints
|
|
3. Check logs for issues
|
|
4. Stop services when finished
|
|
|
|
## 📚 Additional Information
|
|
|
|
- **Container IPs:** Scripts show container IP addresses for direct access
|
|
- **Health Checks:** Automatic health endpoint testing
|
|
- **Service Status:** Real-time status reporting
|
|
- **Error Handling:** Graceful error handling with informative messages
|
|
|
|
## 🎯 Best Practices
|
|
|
|
1. **Use the full script** for complete environment setup
|
|
2. **Check the output** for any warnings or errors
|
|
3. **Monitor logs** when troubleshooting issues
|
|
4. **Stop services** when not in use to conserve resources
|
|
5. **Run scripts from the project root** for proper path resolution
|