Files
infra/ai-memory/project_novacpx_tools.md
myron 52f6073593 Add Claude Code AI memory files
AI context/memory from Claude Code sessions covering all
infrastructure: JARVIS, NovaCPX, DO sites, Proxmox, FusionPBX,
MediaStack, and project feedback/preferences.
2026-06-26 03:06:26 +00:00

3.4 KiB

name, description, metadata
name description metadata
project-novacpx-tools NovaCPX development tools and session-start checklist — load at start of every NovaCPX session
node_type type originSessionId
memory project 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):
    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)

# 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
# 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.