Update ISO installer tiers and backend deployment

This commit is contained in:
Jino Jose committed 2026-06-30 08:54:01 +05:30
1 parent 79784a6743
commit 56668f7bdc
38 files changed
+7206 -175

No files matched your search

+23 -18
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Cezen AI Suite — First Boot Web Setup Server
Nexus One AI — First Boot Web Setup Server
Serves on port 80. Access from any browser on the same network.
"""
import os, json, subprocess, threading, time, socket, ipaddress
@@ -123,7 +123,7 @@ HTML = r"""<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cezen AI Suite — Server Setup</title>
<title>Nexus One AI — Server Setup</title>
<style>
:root {
--navy: #1B2A4A;
@@ -317,19 +317,24 @@ HTML = r"""<!DOCTYPE html>
<h2>Select AI Package Tier</h2>
<p class="desc">Choose the tier that matches your GPU hardware.</p>
<div class="tier-grid">
<div class="tier-card" id="tier-entry" onclick="selectTier('entry')">
<div class="tier-card" id="tier-starter" onclick="selectTier('starter')">
<div class="tier-name">Starter</div>
<div class="tier-gpu">1× RTX 5090 / 32GB VRAM</div>
<div class="tier-users">Small team deployment</div>
</div>
<div class="tier-card" id="tier-basic" onclick="selectTier('basic')">
<div class="tier-name">Entry</div>
<div class="tier-gpu">3× NVIDIA L40S</div>
<div class="tier-gpu">1× NVIDIA RTX Pro 6000 (96GB)</div>
<div class="tier-users">Up to 20 concurrent users</div>
</div>
<div class="tier-card" id="tier-mid" onclick="selectTier('mid')">
<div class="tier-name">Mid</div>
<div class="tier-gpu">3× RTX Pro 6000</div>
<div class="tier-users">Up to 50 concurrent users</div>
<div class="tier-card" id="tier-pro" onclick="selectTier('pro')">
<div class="tier-name">Pro</div>
<div class="tier-gpu">2× RTX 5090 / RTX Pro class</div>
<div class="tier-users">Up to 100 concurrent users</div>
</div>
<div class="tier-card" id="tier-advanced" onclick="selectTier('advanced')">
<div class="tier-name">Advanced</div>
<div class="tier-gpu">8× HGX H200</div>
<div class="tier-card" id="tier-max" onclick="selectTier('max')">
<div class="tier-name">Max</div>
<div class="tier-gpu">4–8× H100/H200/A100 class</div>
<div class="tier-users">200+ concurrent users</div>
</div>
</div>
@@ -369,7 +374,7 @@ HTML = r"""<!DOCTYPE html>
<div class="progress-wrap" id="progress-wrap">
<div class="card">
<h2>Installing Cezen AI Suite...</h2>
<h2>Installing Nexus One AI...</h2>
<div class="progress-bar-bg"><div class="progress-bar" id="progress-bar"></div></div>
<p id="progress-label" style="font-size:13px;color:var(--muted);margin-bottom:12px">Starting...</p>
<div class="log-box" id="log-box"></div>
@@ -379,7 +384,7 @@ HTML = r"""<!DOCTYPE html>
<div id="done-screen" class="hidden">
<div class="done-icon">✅</div>
<h2>Installation Complete!</h2>
<p>Your Cezen AI Suite is ready.</p>
<p>Your Nexus One AI is ready.</p>
<div class="services card" style="margin-top:24px;text-align:left">
<div class="summary-row"><span class="key">Open WebUI</span><span class="val badge">:3001</span></div>
<div class="summary-row"><span class="key">JupyterLab</span><span class="val badge">:8888</span></div>
@@ -400,7 +405,7 @@ HTML = r"""<!DOCTYPE html>
<script>
// ── State ──────────────────────────────────────────────────
let netMode = 'dhcp';
let selectedTier = 'entry';
let selectedTier = 'basic';
let tools = {
ollama: { name: 'Ollama + Open WebUI', desc: 'LLM inference & chat', icon: '🤖', on: true },
jupyterlab: { name: 'JupyterLab', desc: 'Notebook environment', icon: '📓', on: true },
@@ -418,7 +423,7 @@ window.onload = () => {
document.getElementById('current-ip').textContent = d.ip || 'unknown';
});
renderTools();
selectTier('entry');
selectTier('basic');
};
// ── Navigation ─────────────────────────────────────────────
@@ -467,7 +472,7 @@ function applyStaticIP() {
// ── Tier ───────────────────────────────────────────────────
function selectTier(t) {
selectedTier = t;
['entry','mid','advanced'].forEach(x =>
['starter','basic','pro','max'].forEach(x =>
document.getElementById('tier-'+x).classList.toggle('selected', x===t));
}
@@ -707,7 +712,7 @@ class Handler(BaseHTTPRequestHandler):
elif path == "/api/install":
global install_proc
tier = body.get("tier", "entry")
tier = body.get("tier", "basic")
skip = body.get("skip_tools", [])
if not install_status["running"]:
t = threading.Thread(target=run_install, args=(tier, skip), daemon=True)
@@ -752,7 +757,7 @@ def show_console_banner(ip):
try:
with open("/etc/issue", "w") as f:
f.write(f"Ubuntu 22.04.5 LTS \\n \\l\n\n")
f.write(f" \033[1;36mCezen AI Suite Setup:\033[0m http://{ip} | http://cezenai.local\n\n")
f.write(f" \033[1;36mNexus One AI Setup:\033[0m http://{ip} | http://cezenai.local\n\n")
except Exception:
pass