chore: remove obsolete files and add Solidity build artifacts to .gitignore

- Add ignore patterns for Solidity build artifacts (typechain-types, artifacts, cache)
- Remove unused exchange mock API server (api/exchange_mock_api.py)
- Remove obsolete client-web README placeholder
- Remove deprecated marketplace-ui HTML implementation
```
This commit is contained in:
oib
2026-01-24 15:46:23 +01:00
parent 9b9c5beb23
commit 55ced77928
195 changed files with 951 additions and 30090 deletions

View File

@@ -0,0 +1,73 @@
# AITBC Container Deployment Guide
## Prerequisites
Your user needs to be in the `incus` group to manage containers.
## Setup Steps
1. **Add your user to the incus group:**
```bash
sudo usermod -aG incus $USER
```
2. **Log out and log back in** for the group changes to take effect.
3. **Verify access:**
```bash
incus list
```
## Deploy AITBC Services
Once you have incus access, run the deployment script:
```bash
python /home/oib/windsurf/aitbc/container-deploy.py
```
## Service URLs (after deployment)
- **Marketplace UI**: http://10.1.223.93:3001
- **Trade Exchange**: http://10.1.223.93:3002
- **Coordinator API**: http://10.1.223.93:8000
- **Blockchain RPC**: http://10.1.223.93:9080
## Managing Services
### Check running services in container:
```bash
incus exec aitbc -- ps aux | grep python
```
### View logs:
```bash
incus exec aitbc -- journalctl -u aitbc-coordinator -f
```
### Restart services:
```bash
incus exec aitbc -- pkill -f uvicorn
incus exec aitbc -- /home/oib/start_aitbc.sh
```
### Stop all services:
```bash
incus exec aitbc -- pkill -f "uvicorn\|server.py"
```
## Configuration Files
Services are started from `/home/oib/aitbc/start_aitbc.sh` inside the container.
## Firewall
Make sure the following ports are open on the container host:
- 3001 (Marketplace UI)
- 3002 (Trade Exchange)
- 8000 (Coordinator API)
- 9080 (Blockchain RPC)
## Public Access
To make services publicly accessible, configure your router or firewall to forward these ports to the container IP (10.1.223.93).

View File

@@ -0,0 +1,142 @@
# AITBC Domain Deployment Guide
## Overview
Deploy AITBC services to your existing domain: **https://aitbc.bubuit.net**
## Service URLs
- **Marketplace**: https://aitbc.bubuit.net/Marketplace
- **Trade Exchange**: https://aitbc.bubuit.net/Exchange
- **API**: https://aitbc.bubuit.net/api
- **Blockchain RPC**: https://aitbc.bubuit.net/rpc
- **Admin**: https://aitbc.bubuit.net/admin
## Prerequisites
1. Incus access (add user to incus group):
```bash
sudo usermod -aG incus $USER
# Log out and back in
```
2. Domain pointing to your server
## Deployment Steps
### 1. Deploy Services
```bash
./deploy-domain.sh
```
### 2. Configure Port Forwarding
Forward these ports to the container IP (10.1.223.93):
- Port 80 → 10.1.223.93:80
- Port 443 → 10.1.223.93:443
### 3. Install SSL Certificate
```bash
incus exec aitbc -- certbot --nginx -d aitbc.bubuit.net
```
### 4. Verify Services
Visit the URLs to ensure everything is working.
## Nginx Configuration
The nginx configuration handles:
- HTTPS redirection
- SSL termination
- Path-based routing
- API proxying
- Security headers
Configuration file: `/home/oib/windsurf/aitbc/nginx-aitbc.conf`
## Service Management
### Check running services:
```bash
incus exec aitbc -- ps aux | grep python
```
### View logs:
```bash
incus exec aitbc -- journalctl -u aitbc-coordinator -f
```
### Restart services:
```bash
incus exec aitbc -- pkill -f uvicorn
incus exec aitbc -- /home/oib/start_aitbc.sh
```
### Update nginx config:
```bash
incus file push nginx-aitbc.conf aitbc/etc/nginx/sites-available/aitbc
incus exec aitbc -- nginx -t && incus exec aitbc -- systemctl reload nginx
```
## API Endpoints
### Coordinator API
- GET `/api/marketplace/offers` - List GPU offers
- POST `/api/miners/register` - Register miner
- POST `/api/marketplace/bids` - Create bid
- GET `/api/marketplace/stats` - Marketplace stats
### Blockchain RPC
- GET `/rpc/head` - Get latest block
- GET `/rpc/getBalance/{address}` - Get balance
- POST `/rpc/admin/mintFaucet` - Mint tokens
## Security Considerations
1. **Firewall**: Only open necessary ports (80, 443)
2. **SSL**: Always use HTTPS
3. **API Keys**: Use environment variables for sensitive keys
4. **Rate Limiting**: Configure nginx rate limiting if needed
## Monitoring
### Health checks:
- https://aitbc.bubuit.net/health
### Metrics:
- https://aitbc.bubuit.net/metrics (if configured)
## Troubleshooting
### Services not accessible:
1. Check port forwarding
2. Verify nginx configuration
3. Check container services
### SSL issues:
1. Renew certificate: `incus exec aitbc -- certbot renew`
2. Check nginx SSL config
### API errors:
1. Check service logs
2. Verify API endpoints
3. Check CORS settings
## Customization
### Add new service:
1. Update nginx-aitbc.conf
2. Add service to start_aitbc.sh
3. Restart services
### Update UI:
1. Modify HTML files in apps/
2. Update base href if needed
3. Restart web servers
## Production Tips
1. Set up monitoring alerts
2. Configure backups
3. Use environment variables for config
4. Set up log rotation
5. Monitor resource usage

View File

@@ -0,0 +1,143 @@
# Nginx Domain Setup for AITBC
## Problem
The admin endpoint at `https://aitbc.bubuit.net/admin` returns 404 because nginx isn't properly routing to the backend services.
## Solution
### 1. Make sure services are running in the container
```bash
# Access the container
incus exec aitbc -- bash
# Inside container, start services
cd /home/oib/aitbc
./start_aitbc.sh
# Check if running
ps aux | grep uvicorn
```
### 2. Update nginx configuration in container
The nginx config needs to be inside the container at `/etc/nginx/sites-available/aitbc`:
```nginx
server {
listen 80;
server_name aitbc.bubuit.net;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name aitbc.bubuit.net;
# SSL certs (already configured)
ssl_certificate /etc/letsencrypt/live/aitbc.bubuit.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/aitbc.bubuit.net/privkey.pem;
# API routes - MUST include /v1
location /api/ {
proxy_pass http://127.0.0.1:8000/v1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Admin routes
location /admin/ {
proxy_pass http://127.0.0.1:8000/admin/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Blockchain RPC
location /rpc/ {
proxy_pass http://127.0.0.1:9080/rpc/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Marketplace UI
location /Marketplace {
proxy_pass http://127.0.0.1:3001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Trade Exchange
location /Exchange {
proxy_pass http://127.0.0.1:3002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Health endpoint
location /health {
proxy_pass http://127.0.0.1:8000/v1/health;
proxy_set_header Host $host;
}
# Default redirect
location / {
return 301 /Marketplace;
}
}
```
### 3. Apply the configuration
```bash
# Copy config to container
incus file push nginx-aitbc.conf aitbc/etc/nginx/sites-available/aitbc
# Enable site
incus exec aitbc -- ln -sf /etc/nginx/sites-available/aitbc /etc/nginx/sites-enabled/
# Test config
incus exec aitbc -- nginx -t
# Reload nginx
incus exec aitbc -- systemctl reload nginx
```
### 4. Verify services are running
```bash
# Check each service
curl -k https://aitbc.bubuit.net/api/health
curl -k https://aitbc.bubuit.net/admin/stats -H "X-Api-Key: REDACTED_ADMIN_KEY"
curl -k https://aitbc.bubuit.net/rpc/head
```
## Quick Fix
If you need immediate access, you can access the API directly:
- **API**: https://aitbc.bubuit.net/api/health
- **Admin**: https://aitbc.bubuit.net/admin/stats (with API key)
- **Marketplace**: https://aitbc.bubuit.net/Marketplace
- **Exchange**: https://aitbc.bubuit.net/Exchange
The issue is likely that:
1. Services aren't running in the container
2. Nginx config isn't properly routing /admin to the backend
3. Port forwarding isn't configured correctly
## Debug Steps
1. Check container services: `incus exec aitbc -- ps aux | grep uvicorn`
2. Check nginx logs: `incus exec aitbc -- journalctl -u nginx -f`
3. Check nginx config: `incus exec aitbc -- nginx -T`
4. Test backend directly: `incus exec aitbc -- curl http://127.0.0.1:8000/v1/health`

View File

@@ -0,0 +1,120 @@
# Simple Domain Solution for AITBC
## Problem
- Incus container exists but you don't have access
- Services need to run locally
- Domain https://aitbc.bubuit.net needs to access local services
## Solution Options
### Option 1: SSH Tunnel (Recommended)
Create SSH tunnels from your server to your local machine:
```bash
# On your server (aitbc.bubuit.net):
ssh -R 8000:localhost:8000 -R 9080:localhost:9080 -R 3001:localhost:3001 -R 3002:localhost:3002 user@your-local-ip
# Then update nginx on server to proxy to localhost ports
```
### Option 2: Run Services Directly on Server
Copy the AITBC project to your server and run there:
```bash
# On server:
git clone https://gitea.bubuit.net/oib/aitbc.git
cd aitbc
./run-local-services.sh
```
### Option 3: Use Local Nginx
Run nginx locally and edit your hosts file:
```bash
# 1. Install nginx locally if not installed
sudo apt install nginx
# 2. Copy config
sudo cp nginx-local.conf /etc/nginx/sites-available/aitbc
sudo ln -s /etc/nginx/sites-available/aitbc /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
# 3. Test and reload
sudo nginx -t
sudo systemctl reload nginx
# 4. Edit hosts file
echo "127.0.0.1 aitbc.bubuit.net" | sudo tee -a /etc/hosts
# 5. Access at http://aitbc.bubuit.net
```
### Option 4: Cloudflare Tunnel (Easiest)
Use Cloudflare tunnel to expose local services:
```bash
# 1. Install cloudflared
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# 2. Login
cloudflared tunnel login
# 3. Create tunnel
cloudflared tunnel create aitbc
# 4. Create config file ~/.cloudflared/config.yml:
tunnel: aitbc
ingress:
- hostname: aitbc.bubuit.net
service: http://localhost:3001
- path: /api
service: http://localhost:8000
- path: /admin
service: http://localhost:8000
- path: /rpc
service: http://localhost:9080
- path: /Exchange
service: http://localhost:3002
- service: http_status:404
# 5. Run tunnel
cloudflared tunnel run aitbc
```
## Current Status
✅ Services running locally:
- API: http://127.0.0.1:8000/v1
- Admin: http://127.0.0.1:8000/admin
- Blockchain: http://127.0.0.1:9080/rpc
- Marketplace: http://127.0.0.1:3001
- Exchange: http://127.0.0.1:3002
❌ Domain access not configured
## Quick Test
To test if the domain routing would work, you can:
1. Edit your local hosts file:
```bash
echo "127.0.0.1 aitbc.bubuit.net" | sudo tee -a /etc/hosts
```
2. Install and configure nginx locally (see Option 3)
3. Access http://aitbc.bubuit.net in your browser
## Recommendation
Use **Option 4 (Cloudflare Tunnel)** as it's:
- Free
- Secure (HTTPS)
- No port forwarding needed
- Works with dynamic IPs
- Easy to set up

View File

@@ -0,0 +1,129 @@
# AITBC Systemd Services
All AITBC services are now managed by systemd for automatic startup, monitoring, and logging.
## Services Overview
| Service | Port | Description | Status |
|---------|------|-------------|--------|
| `aitbc-coordinator-api` | 8000 | Main Coordinator API for blockchain operations | Active |
| `aitbc-exchange-api` | 3003 | Exchange API for trading operations | Active |
| `aitbc-exchange-frontend` | 3002 | Exchange web frontend | Active |
| `aitbc-wallet` | 8001 | Wallet daemon service | Pending |
| `aitbc-node` | 8545 | Blockchain node service | Pending |
## Service Management
### Check Status
```bash
/root/aitbc/scripts/manage_services.sh status
```
### Start All Services
```bash
/root/aitbc/scripts/manage_services.sh start
```
### Stop All Services
```bash
/root/aitbc/scripts/manage_services.sh stop
```
### Restart All Services
```bash
/root/aitbc/scripts/manage_services.sh restart
```
### View Logs
```bash
# View specific service logs
/root/aitbc/scripts/manage_services.sh logs coordinator-api
/root/aitbc/scripts/manage_services.sh logs exchange-api
/root/aitbc/scripts/manage_services.sh logs exchange-frontend
/root/aitbc/scripts/manage_services.sh logs wallet
/root/aitbc/scripts/manage_services.sh logs node
# Or use systemctl directly
sudo journalctl -u aitbc-coordinator-api -f
sudo journalctl -u aitbc-exchange-api -f
sudo journalctl -u aitbc-exchange-frontend -f
```
### Enable/Disable Autostart
```bash
# Enable services to start on boot
/root/aitbc/scripts/manage_services.sh enable
# Disable services from starting on boot
/root/aitbc/scripts/manage_services.sh disable
```
## Individual Service Control
You can also control services individually using systemctl:
```bash
# Start a specific service
sudo systemctl start aitbc-coordinator-api
# Stop a specific service
sudo systemctl stop aitbc-coordinator-api
# Restart a specific service
sudo systemctl restart aitbc-coordinator-api
# Check if service is enabled
sudo systemctl is-enabled aitbc-coordinator-api
# Enable service on boot
sudo systemctl enable aitbc-coordinator-api
# Disable service on boot
sudo systemctl disable aitbc-coordinator-api
```
## Service Files Location
Service definition files are located at:
- `/etc/systemd/system/aitbc-coordinator-api.service`
- `/etc/systemd/system/aitbc-exchange-api.service`
- `/etc/systemd/system/aitbc-exchange-frontend.service`
- `/etc/systemd/system/aitbc-wallet.service`
- `/etc/systemd/system/aitbc-node.service`
## Troubleshooting
### Service Not Starting
1. Check the service status: `sudo systemctl status aitbc-service-name`
2. View the logs: `sudo journalctl -u aitbc-service-name -n 50`
3. Check if port is already in use: `netstat -tlnp | grep :port`
### Service Keeps Restarting
1. The service is configured to auto-restart on failure
2. Check logs for the error causing failures
3. Temporarily disable auto-restart for debugging: `sudo systemctl stop aitbc-service-name`
### Manual Override
If systemd services are not working, you can run services manually:
```bash
# Coordinator API
cd /root/aitbc/apps/coordinator-api
/root/aitbc/.venv/bin/python -m uvicorn src.app.main:app --host 0.0.0.0 --port 8000
# Exchange API
cd /root/aitbc/apps/trade-exchange
/root/aitbc/.venv/bin/python simple_exchange_api.py
# Exchange Frontend
cd /root/aitbc/apps/trade-exchange
/root/aitbc/.venv/bin/python server.py --port 3002
```
## Benefits of Systemd
1. **Automatic Startup**: Services start automatically on boot
2. **Automatic Restart**: Services restart on failure
3. **Centralized Logging**: All logs go to journald
4. **Resource Management**: Systemd manages service resources
5. **Dependency Management**: Services can depend on each other
6. **Security**: Services run with specified user/group permissions