mirror of
https://github.com/myronblair/infra
synced 2026-06-30 17:50:10 -05:00
52f6073593
AI context/memory from Claude Code sessions covering all infrastructure: JARVIS, NovaCPX, DO sites, Proxmox, FusionPBX, MediaStack, and project feedback/preferences.
73 lines
3.4 KiB
Markdown
73 lines
3.4 KiB
Markdown
---
|
|
name: project-novacpx-tools
|
|
description: NovaCPX development tools and session-start checklist — load at start of every NovaCPX session
|
|
metadata:
|
|
node_type: memory
|
|
type: project
|
|
originSessionId: c454fc50-f93d-4ddd-b9f3-f3f442e89fb9
|
|
---
|
|
|
|
## Session-start checklist (run at start of every NovaCPX session)
|
|
|
|
1. **Verify working directory**: `ls /tmp/novacpx/` — if missing, repo needs re-cloning
|
|
2. **Test VM reachability** (direct — PVE1 hop NOT needed):
|
|
```bash
|
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no -o ConnectTimeout=8 root@10.48.200.110 'echo vm-ok'
|
|
```
|
|
> PVE1 (orbisne.fortiddns.com) SSH is currently broken (permission denied). Direct to 10.48.200.110 works fine.
|
|
3. **Load TODO**: read `/root/.claude/projects/-home-myron/memory/project_novacpx_todo.md`
|
|
4. **Check panel live**: `curl -sk -o /dev/null -w "%{http_code}" https://10.48.200.110:8882/`
|
|
|
|
## Direct SSH / SCP (preferred method)
|
|
```bash
|
|
# Run command on VM
|
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.110 'command here'
|
|
|
|
# Copy file to VM
|
|
sshpass -p 'Joker1974!!!' scp -o StrictHostKeyChecking=no /tmp/novacpx/panel/api/endpoints/foo.php \
|
|
root@10.48.200.110:/srv/novacpx/public/api/endpoints/foo.php
|
|
```
|
|
|
|
## API auth pattern (session cookie)
|
|
```bash
|
|
# Login and get token
|
|
TOKEN=$(curl -sk -X POST "https://10.48.200.110:8882/api/auth/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username":"admin","password":"Admin2026!"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['token'])")
|
|
|
|
# Use token as ncpx_session cookie
|
|
curl -sk "https://10.48.200.110:8882/api/system/version" -H "Cookie: ncpx_session=$TOKEN"
|
|
```
|
|
|
|
## Tools in /tmp/novacpx/tools/
|
|
|
|
| Script | Purpose | Usage |
|
|
|--------|---------|-------|
|
|
| `nova-ssh.sh` | SSH into VM (double-hop via PVE1 — currently broken) | Use direct SSH instead |
|
|
| `nova-push.sh` | Push single file via base64/double-hop (broken) | Use direct scp instead |
|
|
| `nova-deploy.sh` | Full panel rsync (PVE1 hop — broken) | Use direct scp or git push |
|
|
| `nova-status.sh` | Check SSH + port health | `bash tools/nova-status.sh [--full]` |
|
|
| `nova-logs.sh` | Stream VM logs | `bash tools/nova-logs.sh [apache\|access\|install\|fail2ban\|all]` |
|
|
| `nova-db.sh` | Run queries on VM DB | `bash tools/nova-db.sh [--tables\|--users\|--reset-admin pw\|"SQL"]` |
|
|
|
|
## Key VM paths
|
|
- Panel web root: `/srv/novacpx/public/`
|
|
- Git repo (source): `/opt/novacpx-src/` (what gets pulled by webhook/deploy-runner.sh)
|
|
- Config: `/etc/novacpx/config.ini` (root:www-data 640)
|
|
- DB: `/var/lib/novacpx/panel.db` (SQLite)
|
|
- Deploy runner: `/opt/novacpx-src/deploy/deploy-runner.sh` (cron runs every min)
|
|
- Webhook: `/opt/novacpx-src/deploy/webhook.php` (linked at /srv/novacpx/public/deploy/webhook.php)
|
|
- Logs: `/var/log/apache2/error.log`, `/var/log/novacpx/access.log`, `/var/log/novacpx/deploy.log`
|
|
- JARVIS agent: `/opt/jarvis-agent/`
|
|
- Cron scripts: `/srv/novacpx/public/bin/` (cache-update-check.php, collect-stats.php, notify-checks.php)
|
|
|
|
## VM credentials
|
|
- VM IP: 10.48.200.110 (PVE1 VM 120)
|
|
- Root: `root / Joker1974!!!`
|
|
- Admin panel: `admin / Admin2026!`
|
|
- MySQL (customer sites): `novacpx_user / 6fyWj6vYnJDKEQvNANzj`
|
|
- Ports: 8880 (user), 8881 (reseller), 8882 (admin), 8883 (webmail)
|
|
|
|
**Why:** [[project-novacpx-todo]]
|
|
**How to apply:** Start every NovaCPX session by running the session-start checklist so you know immediately if the VM is reachable before writing code.
|