mirror of
https://github.com/myronblair/jarvis
synced 2026-07-28 08:43:00 -05:00
Fix reactor startup: auto-create venv, requirements.txt, SETUP button, self-install
- deploy/requirements.txt: explicit pip deps (fastapi, uvicorn, aiomysql, aiohttp, anthropic, trafilatura) - jarvis-deploy.sh: self-installs to /usr/local/bin/ on every run so updates propagate; auto-creates venv and installs packages if missing before restart attempt - admin/index.php: add SETUP button next to RESTART — runs full setup+start in one click (creates venv, installs deps, copies reactor.py, starts it) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X8tDRrQqgLjqXebMCBNcP3
This commit is contained in:
+14
-4
@@ -92,20 +92,30 @@ while IFS= read -r path; do
|
|||||||
log "Patched config.php: Ollama IP→.210, model→llama3.1:8b, Groq search→compound-beta-mini"
|
log "Patched config.php: Ollama IP→.210, model→llama3.1:8b, Groq search→compound-beta-mini"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Self-install the deploy script on every run
|
||||||
|
cp "$path/deploy/jarvis-deploy.sh" /usr/local/bin/jarvis-deploy.sh 2>/dev/null && chmod +x /usr/local/bin/jarvis-deploy.sh
|
||||||
|
|
||||||
# Sync reactor.py + service file to runtime location if they changed
|
# Sync reactor.py + service file to runtime location if they changed
|
||||||
if echo "$CHANGED" | grep -q 'deploy/reactor.py\|deploy/jarvis-arc.service'; then
|
if echo "$CHANGED" | grep -q 'deploy/reactor.py\|deploy/jarvis-arc.service\|deploy/requirements.txt'; then
|
||||||
mkdir -p /opt/jarvis-arc
|
mkdir -p /opt/jarvis-arc /home/jarvis.orbishosting.com/logs
|
||||||
cp "$path/deploy/reactor.py" /opt/jarvis-arc/reactor.py
|
cp "$path/deploy/reactor.py" /opt/jarvis-arc/reactor.py
|
||||||
|
cp "$path/deploy/requirements.txt" /opt/jarvis-arc/requirements.txt 2>/dev/null
|
||||||
|
# Bootstrap venv if it doesn't exist
|
||||||
|
if [ ! -f /opt/jarvis-arc/venv/bin/activate ]; then
|
||||||
|
log "Arc Reactor venv missing — creating and installing packages"
|
||||||
|
python3 -m venv /opt/jarvis-arc/venv
|
||||||
|
/opt/jarvis-arc/venv/bin/pip install -q -r /opt/jarvis-arc/requirements.txt
|
||||||
|
log "Arc Reactor venv ready"
|
||||||
|
fi
|
||||||
if echo "$CHANGED" | grep -q 'deploy/jarvis-arc.service'; then
|
if echo "$CHANGED" | grep -q 'deploy/jarvis-arc.service'; then
|
||||||
cp "$path/deploy/jarvis-arc.service" /etc/systemd/system/jarvis-arc.service
|
cp "$path/deploy/jarvis-arc.service" /etc/systemd/system/jarvis-arc.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable jarvis-arc
|
systemctl enable jarvis-arc
|
||||||
log "Arc Reactor service file installed and enabled"
|
log "Arc Reactor service file installed and enabled"
|
||||||
fi
|
fi
|
||||||
mkdir -p /home/jarvis.orbishosting.com/logs
|
|
||||||
systemctl restart jarvis-arc 2>/dev/null || \
|
systemctl restart jarvis-arc 2>/dev/null || \
|
||||||
bash -c "pkill -f reactor.py 2>/dev/null; sleep 1; cd /opt/jarvis-arc && source venv/bin/activate && nohup python3 reactor.py >> /home/jarvis.orbishosting.com/logs/arc_reactor.log 2>&1 &"
|
bash -c "pkill -f reactor.py 2>/dev/null; sleep 1; cd /opt/jarvis-arc && source venv/bin/activate && nohup python3 reactor.py >> /home/jarvis.orbishosting.com/logs/arc_reactor.log 2>&1 &"
|
||||||
log "Arc Reactor updated and restarted (reactor.py changed)"
|
log "Arc Reactor updated and restarted"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn[standard]
|
||||||
|
aiomysql
|
||||||
|
aiohttp
|
||||||
|
anthropic
|
||||||
|
trafilatura
|
||||||
@@ -552,6 +552,20 @@ if ($action) {
|
|||||||
} elseif ($wType === 'daemon' && $wId === 'arc_reactor' && $wAction === 'restart') {
|
} elseif ($wType === 'daemon' && $wId === 'arc_reactor' && $wAction === 'restart') {
|
||||||
shell_exec('bash -c "mkdir -p /home/jarvis.orbishosting.com/logs; systemctl restart jarvis-arc 2>/dev/null || (pkill -f reactor.py 2>/dev/null; sleep 1; cd /opt/jarvis-arc && source venv/bin/activate && nohup python3 reactor.py >> /home/jarvis.orbishosting.com/logs/arc_reactor.log 2>&1 &)"');
|
shell_exec('bash -c "mkdir -p /home/jarvis.orbishosting.com/logs; systemctl restart jarvis-arc 2>/dev/null || (pkill -f reactor.py 2>/dev/null; sleep 1; cd /opt/jarvis-arc && source venv/bin/activate && nohup python3 reactor.py >> /home/jarvis.orbishosting.com/logs/arc_reactor.log 2>&1 &)"');
|
||||||
j(['ok'=>true,'msg'=>'Arc Reactor restarting']);
|
j(['ok'=>true,'msg'=>'Arc Reactor restarting']);
|
||||||
|
} elseif ($wType === 'daemon' && $wId === 'arc_reactor' && $wAction === 'setup') {
|
||||||
|
$setupLog = '/home/jarvis.orbishosting.com/logs/arc_reactor.log';
|
||||||
|
$cmd = 'bash -c "'.
|
||||||
|
'mkdir -p /opt/jarvis-arc /home/jarvis.orbishosting.com/logs && '.
|
||||||
|
'cp /var/www/jarvis/deploy/reactor.py /opt/jarvis-arc/reactor.py && '.
|
||||||
|
'cp /var/www/jarvis/deploy/requirements.txt /opt/jarvis-arc/requirements.txt && '.
|
||||||
|
'if [ ! -d /opt/jarvis-arc/venv ]; then python3 -m venv /opt/jarvis-arc/venv; fi && '.
|
||||||
|
'/opt/jarvis-arc/venv/bin/pip install -q -r /opt/jarvis-arc/requirements.txt && '.
|
||||||
|
'pkill -f reactor.py 2>/dev/null; sleep 1 && '.
|
||||||
|
'cd /opt/jarvis-arc && source venv/bin/activate && '.
|
||||||
|
'nohup python3 reactor.py >> '.$setupLog.' 2>&1 &'.
|
||||||
|
'" >> '.$setupLog.' 2>&1';
|
||||||
|
shell_exec($cmd);
|
||||||
|
j(['ok'=>true,'msg'=>'Arc Reactor setup started — check log in ~30s then restart']);
|
||||||
} else { bad('Invalid worker action'); }
|
} else { bad('Invalid worker action'); }
|
||||||
break;
|
break;
|
||||||
case 'arc_status':
|
case 'arc_status':
|
||||||
@@ -2332,7 +2346,10 @@ async function loadWorkers() {
|
|||||||
<td class="ts">jarvis-do :7474</td>
|
<td class="ts">jarvis-do :7474</td>
|
||||||
<td>${rdot}${ron?'<span style="color:var(--green)">ONLINE</span>':'<span style="color:var(--red)">OFFLINE</span>'}</td>
|
<td>${rdot}${ron?'<span style="color:var(--green)">ONLINE</span>':'<span style="color:var(--red)">OFFLINE</span>'}</td>
|
||||||
<td class="ts">${rinfo}</td>
|
<td class="ts">${rinfo}</td>
|
||||||
<td><button onclick="workerAction('daemon','arc_reactor','restart')" style="${wBtn('red')}">↻ RESTART</button></td>
|
<td style="display:flex;gap:4px">
|
||||||
|
<button onclick="workerAction('daemon','arc_reactor','restart')" style="${wBtn('red')}">↻ RESTART</button>
|
||||||
|
<button onclick="workerAction('daemon','arc_reactor','setup')" style="${wBtn('orange')}">⚙ SETUP</button>
|
||||||
|
</td>
|
||||||
</tr>`;
|
</tr>`;
|
||||||
}
|
}
|
||||||
async function loadDashboard() {
|
async function loadDashboard() {
|
||||||
|
|||||||
Reference in New Issue
Block a user