diff --git a/data b/data new file mode 120000 index 00000000..7fe6b710 --- /dev/null +++ b/data @@ -0,0 +1 @@ +/var/lib/aitbc/data \ No newline at end of file diff --git a/production/services/blockchain.py b/production/services/blockchain.py index 82ba31e2..377f06b4 100755 --- a/production/services/blockchain.py +++ b/production/services/blockchain.py @@ -34,7 +34,7 @@ class ProductionBlockchain: def __init__(self, node_id: str): self.node_id = node_id - self.data_dir = Path(f'/opt/aitbc/production/data/blockchain/{node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/blockchain/{node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize blockchain diff --git a/production/services/blockchain_simple.py b/production/services/blockchain_simple.py index 1f8401be..0f1cf376 100644 --- a/production/services/blockchain_simple.py +++ b/production/services/blockchain_simple.py @@ -81,7 +81,7 @@ class ProductionBlockchain: def __init__(self, node_id: str): self.node_id = node_id - self.data_dir = Path(f'/opt/aitbc/production/data/blockchain/{node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/blockchain/{node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize blockchain diff --git a/production/services/marketplace.py b/production/services/marketplace.py index b8569146..6aa96a46 100755 --- a/production/services/marketplace.py +++ b/production/services/marketplace.py @@ -54,7 +54,7 @@ class ProductionMarketplace: """Production-grade marketplace with persistence""" def __init__(self): - self.data_dir = Path('/opt/aitbc/production/data/marketplace') + self.data_dir = Path("/var/lib/aitbc/data/marketplace") self.data_dir.mkdir(parents=True, exist_ok=True) # Load existing data diff --git a/production/services/marketplace_original.py b/production/services/marketplace_original.py index a2df1ae0..6f689f09 100755 --- a/production/services/marketplace_original.py +++ b/production/services/marketplace_original.py @@ -54,7 +54,7 @@ class ProductionMarketplace: """Production-grade marketplace with persistence""" def __init__(self): - self.data_dir = Path('/opt/aitbc/production/data/marketplace') + self.data_dir = Path('/var/lib/aitbc/data/marketplace') self.data_dir.mkdir(parents=True, exist_ok=True) # Load existing data diff --git a/production/services/mining_blockchain.py b/production/services/mining_blockchain.py index bffaf957..6f04b202 100755 --- a/production/services/mining_blockchain.py +++ b/production/services/mining_blockchain.py @@ -61,7 +61,7 @@ class MultiChainManager: self.chains = {} self.miners = {} self.node_id = os.getenv('NODE_ID', 'aitbc') - self.data_dir = Path(f'/opt/aitbc/production/data/blockchain/{self.node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/blockchain/{self.node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize multiple chains diff --git a/production/services/openclaw_ai.py b/production/services/openclaw_ai.py index d8501ac3..3263ddff 100755 --- a/production/services/openclaw_ai.py +++ b/production/services/openclaw_ai.py @@ -30,7 +30,7 @@ class OpenClawAIService: def __init__(self): self.node_id = os.getenv('NODE_ID', 'aitbc') - self.data_dir = Path(f'/opt/aitbc/production/data/openclaw/{self.node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/openclaw/{self.node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize OpenClaw agents diff --git a/production/services/real_marketplace.py b/production/services/real_marketplace.py index 3b57d6b5..0e2e5e41 100755 --- a/production/services/real_marketplace.py +++ b/production/services/real_marketplace.py @@ -35,7 +35,7 @@ class RealMarketplace: def __init__(self): self.node_id = os.getenv('NODE_ID', 'aitbc') - self.data_dir = Path(f'/opt/aitbc/production/data/marketplace/{self.node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/marketplace/{self.node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize services diff --git a/production/services/unified_marketplace.py b/production/services/unified_marketplace.py index 474ea30a..409979cf 100644 --- a/production/services/unified_marketplace.py +++ b/production/services/unified_marketplace.py @@ -86,7 +86,7 @@ class UnifiedMarketplace: def __init__(self): self.node_id = os.getenv('NODE_ID', 'aitbc') - self.data_dir = Path(f'/opt/aitbc/production/data/marketplace/{self.node_id}') + self.data_dir = Path(f'/var/lib/aitbc/data/marketplace/{self.node_id}') self.data_dir.mkdir(parents=True, exist_ok=True) # Initialize OpenClaw service if available diff --git a/systemd/aitbc-blockchain-http.service b/systemd/aitbc-blockchain-http.service index 00eec9c5..b6305c8b 100644 --- a/systemd/aitbc-blockchain-http.service +++ b/systemd/aitbc-blockchain-http.service @@ -34,7 +34,7 @@ SyslogIdentifier=aitbc-blockchain-http NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/blockchain /opt/aitbc/production/logs/blockchain +ReadWritePaths=/var/lib/aitbc/data/blockchain /opt/aitbc/production/logs/blockchain # Production performance LimitNOFILE=65536 diff --git a/systemd/aitbc-blockchain-node.service b/systemd/aitbc-blockchain-node.service index db015b05..8685b800 100644 --- a/systemd/aitbc-blockchain-node.service +++ b/systemd/aitbc-blockchain-node.service @@ -34,7 +34,7 @@ SyslogIdentifier=aitbc-blockchain-production NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/blockchain /opt/aitbc/production/logs/blockchain +ReadWritePaths=/var/lib/aitbc/data/blockchain /opt/aitbc/production/logs/blockchain # Production performance LimitNOFILE=65536 diff --git a/systemd/aitbc-gpu.service b/systemd/aitbc-gpu.service index c2d6cede..5a2fd006 100644 --- a/systemd/aitbc-gpu.service +++ b/systemd/aitbc-gpu.service @@ -34,7 +34,7 @@ SyslogIdentifier=aitbc-gpu-marketplace-production NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/marketplace /opt/aitbc/production/logs/marketplace +ReadWritePaths=/var/lib/aitbc/data/marketplace /opt/aitbc/production/logs/marketplace # Production performance LimitNOFILE=65536 diff --git a/systemd/aitbc-marketplace.service b/systemd/aitbc-marketplace.service index 5e046024..d7a4d0ed 100644 --- a/systemd/aitbc-marketplace.service +++ b/systemd/aitbc-marketplace.service @@ -16,7 +16,7 @@ Environment=PYTHONPATH=/opt/aitbc/production/services EnvironmentFile=/opt/aitbc/production/.env # Production execution -ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/production/services/unified_marketplace_launcher.py +ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/production/services/marketplace.py ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed TimeoutStopSec=10 @@ -36,7 +36,7 @@ SyslogIdentifier=aitbc-marketplace-production NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/marketplace /opt/aitbc/production/logs/marketplace +ReadWritePaths=/var/lib/aitbc/data/marketplace /opt/aitbc/production/logs/marketplace # Production performance LimitNOFILE=65536 diff --git a/systemd/aitbc-mining-blockchain.service b/systemd/aitbc-mining-blockchain.service index 79cb09d6..fff2219e 100644 --- a/systemd/aitbc-mining-blockchain.service +++ b/systemd/aitbc-mining-blockchain.service @@ -33,7 +33,7 @@ SyslogIdentifier=aitbc-mining-blockchain NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/blockchain /opt/aitbc/production/logs/blockchain +ReadWritePaths=/var/lib/aitbc/data/blockchain /opt/aitbc/production/logs/blockchain # Mining performance LimitNOFILE=65536 diff --git a/systemd/aitbc-openclaw-ai.service b/systemd/aitbc-openclaw-ai.service index de66904b..b6118351 100644 --- a/systemd/aitbc-openclaw-ai.service +++ b/systemd/aitbc-openclaw-ai.service @@ -33,7 +33,7 @@ SyslogIdentifier=aitbc-openclaw-ai NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/openclaw /opt/aitbc/production/logs/openclaw +ReadWritePaths=/var/lib/aitbc/data/openclaw /opt/aitbc/production/logs/openclaw # AI performance LimitNOFILE=65536 diff --git a/systemd/aitbc-production-monitor.service b/systemd/aitbc-production-monitor.service index 3244692c..13b37e6f 100644 --- a/systemd/aitbc-production-monitor.service +++ b/systemd/aitbc-production-monitor.service @@ -13,7 +13,7 @@ Environment=PYTHONPATH=/opt/aitbc/production/services EnvironmentFile=/opt/aitbc/production/.env # Production monitoring -ExecStart=/opt/aitbc/venv/bin/python -c "import time; import logging; import json; from pathlib import Path; logging.basicConfig(level=logging.INFO); logger = logging.getLogger('production-monitor'); while True: try: blockchain_file = Path('/opt/aitbc/production/data/blockchain/aitbc/blockchain.json'); if blockchain_file.exists(): with open(blockchain_file, 'r') as f: data = json.load(f); logger.info(f'Blockchain: {len(data.get(\"blocks\", []))} blocks'); marketplace_dir = Path('/opt/aitbc/production/data/marketplace'); if marketplace_dir.exists(): listings_file = marketplace_dir / 'gpu_listings.json'; if listings_file.exists(): with open(listings_file, 'r') as f: listings = json.load(f); logger.info(f'Marketplace: {len(listings)} GPU listings'); import psutil; cpu_percent = psutil.cpu_percent(); memory_percent = psutil.virtual_memory().percent; logger.info(f'System: CPU {cpu_percent}%, Memory {memory_percent}%'); time.sleep(30); except Exception as e: logger.error(f'Monitoring error: {e}'); time.sleep(60)" +ExecStart=/opt/aitbc/venv/bin/python -c "import time; import logging; import json; from pathlib import Path; logging.basicConfig(level=logging.INFO); logger = logging.getLogger('production-monitor'); while True: try: blockchain_file = Path('/var/lib/aitbc/data/blockchain/aitbc/blockchain.json'); if blockchain_file.exists(): with open(blockchain_file, 'r') as f: data = json.load(f); logger.info(f'Blockchain: {len(data.get(\"blocks\", []))} blocks'); marketplace_dir = Path('/var/lib/aitbc/data/marketplace'); if marketplace_dir.exists(): listings_file = marketplace_dir / 'gpu_listings.json'; if listings_file.exists(): with open(listings_file, 'r') as f: listings = json.load(f); logger.info(f'Marketplace: {len(listings)} GPU listings'); import psutil; cpu_percent = psutil.cpu_percent(); memory_percent = psutil.virtual_memory().percent; logger.info(f'System: CPU {cpu_percent}%, Memory {memory_percent}%'); time.sleep(30); except Exception as e: logger.error(f'Monitoring error: {e}'); time.sleep(60)" # Production reliability Restart=always @@ -28,7 +28,7 @@ SyslogIdentifier=aitbc-production-monitor NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data /opt/aitbc/production/logs +ReadWritePaths=/var/lib/aitbc/data /opt/aitbc/production/logs [Install] WantedBy=multi-user.target diff --git a/systemd/aitbc-real-marketplace.service b/systemd/aitbc-real-marketplace.service index 8b0ef2d9..0a610198 100644 --- a/systemd/aitbc-real-marketplace.service +++ b/systemd/aitbc-real-marketplace.service @@ -34,7 +34,7 @@ SyslogIdentifier=aitbc-real-marketplace NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/opt/aitbc/production/data/marketplace /opt/aitbc/production/logs/marketplace +ReadWritePaths=/var/lib/aitbc/data/marketplace /opt/aitbc/production/logs/marketplace # Marketplace performance LimitNOFILE=65536