mirror of
https://github.com/myronblair/ai-context
synced 2026-06-30 17:50:08 -05:00
Update all files - JARVIS migrated to PVE1 VM 211
This commit is contained in:
@@ -17,19 +17,22 @@
|
|||||||
No local codebase. Work happens via SSH to remote servers and git push to GitHub (auto-deploy active).
|
No local codebase. Work happens via SSH to remote servers and git push to GitHub (auto-deploy active).
|
||||||
|
|
||||||
### Infrastructure
|
### Infrastructure
|
||||||
- **DO (165.22.1.228)** — DigitalOcean VPS. CyberPanel/OpenLiteSpeed. Hosts all websites + JARVIS AI.
|
- **DO (165.22.1.228)** — DigitalOcean VPS. CyberPanel/OpenLiteSpeed. Hosts all websites (NOT JARVIS anymore).
|
||||||
- **PVE1 (orbisne.fortiddns.com / 10.48.200.90)** — Proxmox primary hypervisor. 9 VMs.
|
- **JARVIS VM (10.48.200.211)** — PVE1 VM 211. nginx/PHP8.3/MariaDB/Redis/Arc Reactor. JARVIS AI lives here.
|
||||||
|
- **NPM (10.48.200.200)** — Nginx Proxy Manager. Routes jarvis.orbishosting.com + hoa.orbishosting.com → local VMs.
|
||||||
|
- **PVE1 (orbisne.fortiddns.com / 10.48.200.90)** — Proxmox primary hypervisor. 10+ VMs.
|
||||||
- **PVE2 (10.48.200.91)** — Proxmox secondary hypervisor. 2 VMs.
|
- **PVE2 (10.48.200.91)** — Proxmox secondary hypervisor. 2 VMs.
|
||||||
- **FusionPBX (134.209.72.226)** — FreeSWITCH PBX server.
|
- **FusionPBX (134.209.72.226)** — FreeSWITCH PBX server.
|
||||||
- **Local VMs** — HA (10.48.200.97), Ollama (10.48.200.95), Homebridge (10.48.200.18), Jellyfin (10.48.200.33), alien-pc (10.48.200.66, Windows).
|
- **Local VMs** — HA (10.48.200.97), Ollama (10.48.200.210), Homebridge (10.48.200.18), Jellyfin (10.48.200.33), NovaCPX (10.48.200.110), MediaStack (10.48.200.35).
|
||||||
|
|
||||||
### Key Systems
|
### Key Systems
|
||||||
- **JARVIS** — Iron Man AI dashboard at `https://jarvis.orbishosting.com` — agent monitoring, chat, network scan, admin portal
|
- **JARVIS** — Iron Man AI dashboard at `https://jarvis.orbishosting.com` — agent monitoring, chat, network scan, admin portal
|
||||||
- **Admin portal** — `https://jarvis.orbishosting.com/admin` — full CRUD for all JARVIS data
|
- **Admin portal** — `https://jarvis.orbishosting.com/admin/` — full CRUD for all JARVIS data
|
||||||
- **Auto-deploy** — push to GitHub `main` → webhook → server pulls within 1 minute
|
- **Auto-deploy** — push to GitHub `main` → webhook → server pulls within 1 minute
|
||||||
|
|
||||||
### Current Status (as of 2026-05-31)
|
### Current Status (as of 2026-06-26)
|
||||||
- JARVIS agents online: DO, PVE1, PVE2, NetworkBackup, HA, Homebridge, alien-pc (Windows)
|
- JARVIS fully migrated to PVE1 VM 211 (10.48.200.211) — not on DO anymore
|
||||||
- Agents still needed: jellyfin (10.48.200.33), ollama-ai (10.48.200.95)
|
- JARVIS agents online: DO, PVE1, PVE2, NetworkBackup, HA, Homebridge, Jellyfin, MediaStack, NovaCPX, FortiGate, Yealink T48S
|
||||||
- Daily backups running at 2AM to `/var/backups/jarvis/`, downloadable from admin panel
|
- Daily backups running at 7am UTC to `/var/backups/jarvis/`, downloadable from admin panel
|
||||||
- Network auto-scan: PVE1 cron every 3 min → pushes to `/api/netscan`
|
- Network auto-scan: PVE1 cron every 3 min → pushes to `/api/netscan`
|
||||||
|
- Ollama at 10.48.200.210:11434 (listening on 0.0.0.0 — fixed 2026-06-24)
|
||||||
|
|||||||
@@ -2,12 +2,19 @@
|
|||||||
|
|
||||||
## Access
|
## Access
|
||||||
- **Dashboard:** https://jarvis.orbishosting.com (login: myron / Joker1974!!!)
|
- **Dashboard:** https://jarvis.orbishosting.com (login: myron / Joker1974!!!)
|
||||||
- **Admin portal:** https://jarvis.orbishosting.com/admin (same login)
|
- **Admin portal:** https://jarvis.orbishosting.com/admin/ (same login)
|
||||||
- **DB:** `jarvis_db` on DO localhost — user: `jarvis_user` / `J4rv1s_Pr0t0c0l_2026!`
|
- **DB:** `jarvis_db` on VM 211 localhost — user: `jarvis_user` / `J4rv1s_Pr0t0c0l_2026!`
|
||||||
- **phpMyAdmin:** https://jarvis.orbishosting.com/phpmyadmin (myron / Joker1974!!!)
|
- **phpMyAdmin:** https://jarvis.orbishosting.com/phpmyadmin (myron / Joker1974!!!)
|
||||||
- **GitHub repo:** myronblair/jarvis (auto-deploy on push to main)
|
- **GitHub repo:** myronblair/jarvis (auto-deploy on push to main)
|
||||||
|
|
||||||
## File Structure (on DO at /home/jarvis.orbishosting.com/)
|
## Server Location
|
||||||
|
JARVIS runs on **PVE1 VM 211** at `10.48.200.211` (migrated from DO 2026-06-18).
|
||||||
|
- **SSH:** `sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.211`
|
||||||
|
- **Stack:** nginx / PHP 8.3 / MariaDB / Redis / Arc Reactor
|
||||||
|
- **Web root:** `/var/www/jarvis/`
|
||||||
|
- Traffic routed via NPM (10.48.200.200) → VM 211
|
||||||
|
|
||||||
|
## File Structure (on VM 211 at /var/www/jarvis/)
|
||||||
```
|
```
|
||||||
public_html/
|
public_html/
|
||||||
index.html — main Iron Man HUD (all UI)
|
index.html — main Iron Man HUD (all UI)
|
||||||
@@ -26,75 +33,88 @@ api/
|
|||||||
do_server.php — reads /proc directly (no SSH loopback)
|
do_server.php — reads /proc directly (no SSH loopback)
|
||||||
stats_cache.php — every 5min cron: Proxmox cluster API, HA, weather, news
|
stats_cache.php — every 5min cron: Proxmox cluster API, HA, weather, news
|
||||||
facts_collector.php — every 3min cron: system stats, site health
|
facts_collector.php — every 3min cron: system stats, site health
|
||||||
system.php — local system metrics (services: lshttpd,mysql,redis,memcached,postfix,dovecot,jarvis-agent)
|
system.php — local system metrics
|
||||||
alerts.php — alert CRUD + auto-generate
|
alerts.php — alert CRUD + auto-generate
|
||||||
news.php — serves api_cache['news'] + custom kb_facts(category='custom_news')
|
news.php — serves api_cache['news'] + custom kb_facts(category='custom_news')
|
||||||
|
deploy/
|
||||||
|
reactor.py — Arc Reactor source (copy to /opt/jarvis-arc/reactor.py + restart)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Arc Reactor (AI Routing Daemon)
|
||||||
|
- **Daemon:** `/opt/jarvis-arc/reactor.py` (Python, port 7474), service: `jarvis-arc`
|
||||||
|
- **Deploy:** copy `deploy/reactor.py` → `/opt/jarvis-arc/reactor.py` + `systemctl restart jarvis-arc`
|
||||||
|
- Vision with actual screenshot → Claude `claude-opus-4-8-20251101`
|
||||||
|
- Guardian/SITREP/Vision text-only → Groq `llama-3.3-70b-versatile`
|
||||||
|
- Email drafting / research → Claude
|
||||||
|
|
||||||
## Agent System
|
## Agent System
|
||||||
- **Registration key:** `f846a9aaf7ce9a61742c63c87c4186052a71d2a580c65518`
|
- **Registration key:** `f846a9aaf7ce9a61742c63c87c4186052a71d2a580c65518`
|
||||||
- **Install one-liner (Linux):** `curl -sk https://jarvis.orbishosting.com/install-agent.sh | bash -s <hostname> <linux|proxmox>`
|
- **Install one-liner (Linux):** `curl -sk https://jarvis.orbishosting.com/install-agent.sh | bash -s <hostname> <linux|proxmox>`
|
||||||
- **For VMs (need sudo):** `curl -sk https://jarvis.orbishosting.com/install-agent.sh > /tmp/i.sh && echo "Joker1974!" | sudo -S bash /tmp/i.sh <hostname> linux`
|
- **Agent config:** `/etc/jarvis-agent/config.json` (key: `jarvis_url`) — runtime state at `/var/lib/jarvis-agent/state.json`
|
||||||
- **Agent config:** `/etc/jarvis-agent/config.json` — runtime state at `/var/lib/jarvis-agent/state.json`
|
|
||||||
- **If agent gets 401 "Invalid agent key":** state.json has stale key — overwrite with correct agent_id + api_key from DB
|
- **If agent gets 401 "Invalid agent key":** state.json has stale key — overwrite with correct agent_id + api_key from DB
|
||||||
- **Heartbeat:** every 10s | **Metrics:** every 30s | **Commands:** polled on heartbeat
|
- **Heartbeat:** every 10s | **Metrics:** every 30s
|
||||||
- **Shell commands:** send via agent_commands table with `{"command":"/path/to/script","allowed":true}`
|
|
||||||
|
|
||||||
## Currently Online Agents
|
## Currently Online Agents
|
||||||
| agent_id | hostname | IP | type |
|
| agent_id | hostname | IP | type |
|
||||||
|----------|----------|----|------|
|
|----------|----------|----|------|
|
||||||
| jarvis-do_orbis.or | jarvis-do | 165.22.1.228 | linux |
|
| jarvis-do_orbis.or | jarvis-do | 165.22.1.228 | linux |
|
||||||
| claude_pve | claude | 10.48.200.90 | proxmox |
|
| claude_pve | pve1 | 10.48.200.90 | proxmox |
|
||||||
| pve2_e147a8bc | pve2 | 10.48.200.91 | proxmox |
|
| pve2_pve2 | pve2 | 10.48.200.91 | proxmox |
|
||||||
| networkbackup_NetworkB | networkbackup | 10.48.200.99 | linux |
|
| networkbackup_NetworkB | networkbackup | 10.48.200.99 | linux |
|
||||||
| homeassistant_ha | homeassistant | 10.48.200.97 | homeassistant |
|
| homeassistant_ha | homeassistant | 10.48.200.97 | homeassistant |
|
||||||
| homebridge_b57cbaea | homebridge | 10.48.200.18 | linux |
|
| homebridge_b57cbaea | homebridge | 10.48.200.18 | linux |
|
||||||
| alien-pc_windows | alien-pc | 10.48.200.66 | linux |
|
| novacpx_e3b07264 | novacpx | 10.48.200.110 | linux |
|
||||||
|
| jellyfin_7e386833 | jellyfin | 10.48.200.33 | linux |
|
||||||
**Pending:** jellyfin (10.48.200.33), ollama-ai (10.48.200.95)
|
| MediaStack_2c00b1b8 | mediastack | 10.48.200.35 | linux |
|
||||||
|
| fortigate_gw | fortigate | 10.48.200.1 | linux |
|
||||||
|
| yealink_t48s | yealink | 10.48.200.43 | linux |
|
||||||
|
|
||||||
## Network Scanning
|
## Network Scanning
|
||||||
- PVE1 cron: `*/3 * * * * /usr/local/bin/jarvis-netscan.sh`
|
- PVE1 cron: `*/3 * * * * /usr/local/bin/jarvis-netscan.sh`
|
||||||
- Script runs nmap, parses output, POSTs JSON to `https://165.22.1.228/api/netscan` with `X-Registration-Key` header
|
- Script runs nmap, parses output, POSTs JSON to `https://jarvis.orbishosting.com/api/netscan` with `X-Registration-Key` header
|
||||||
- Scan Now button in admin queues shell command to PVE1 agent (picks up within 10s)
|
- Scan Now button queues shell command to PVE1 agent (picks up within 10s)
|
||||||
|
|
||||||
## Chat Architecture
|
## Chat Architecture
|
||||||
```
|
```
|
||||||
Tier 0: HA entity control (fuzzy match → call HA API)
|
Tier 0: HA entity control (fuzzy match → call HA API)
|
||||||
Tier 0.5: Network device management
|
Tier 0.5: Network device management
|
||||||
|
Tier 0.7: Planner intents (add task, my tasks, schedule, daily briefing)
|
||||||
Tier 1: KB intent engine (response type → instant reply)
|
Tier 1: KB intent engine (response type → instant reply)
|
||||||
Tier 1b: Action intents (network_scan → DB data + queue PVE1 scan)
|
Tier 1b: Action intents (network_scan → DB data + queue PVE1 scan)
|
||||||
Tier 2: Ollama llama3.2 at http://10.48.200.95:11434 (5s timeout)
|
Tier 2: Ollama llama3.2 at http://10.48.200.210:11434 (5s timeout)
|
||||||
Tier 3: Groq compound-beta-mini (cloud, fast)
|
Tier 3: Groq compound-beta-mini (cloud, fast)
|
||||||
Tier 4: Claude API fallback
|
Tier 4: Claude API fallback
|
||||||
```
|
```
|
||||||
- Groq model name: `compound-beta-mini` (NOT `groq/compound-beta-mini`)
|
- Groq model name: `compound-beta-mini` (NOT `groq/compound-beta-mini`)
|
||||||
- network_scan intent: action type — must be handled in Tier 1b or Groq will fabricate
|
- HA_URL = `http://orbisne.fortiddns.com:8123`
|
||||||
|
|
||||||
## DB Key Tables
|
## DB Key Tables
|
||||||
```sql
|
```sql
|
||||||
registered_agents — agent_id, hostname, agent_type, ip_address, api_key, status, last_seen
|
registered_agents — agent_id, hostname, agent_type, ip_address, api_key, status, last_seen, version
|
||||||
agent_metrics — agent_id, metric_type, metric_data(JSON), recorded_at
|
agent_metrics — agent_id, metric_type, metric_data(JSON), recorded_at
|
||||||
-- Extract: JSON_EXTRACT(metric_data,'$.cpu_percent'), JSON_EXTRACT(metric_data,'$.memory.percent')
|
-- Extract: JSON_EXTRACT(metric_data,'$.cpu_percent'), JSON_EXTRACT(metric_data,'$.memory.percent')
|
||||||
-- NO cpu_pct/mem_pct columns — always use JSON_EXTRACT
|
-- NO cpu_pct/mem_pct columns — always use JSON_EXTRACT
|
||||||
agent_commands — agent_id, command_type, command_data(JSON), status(pending/delivered)
|
agent_commands — agent_id, command_type, command_data(JSON), status(pending/delivered)
|
||||||
network_devices — ip, mac, hostname, alias, device_type, status, last_seen
|
network_devices — ip, mac, hostname, alias, device_type, status, last_seen
|
||||||
alerts — alert_type, title, message, severity, resolved
|
alerts — alert_type, title, message, severity, resolved
|
||||||
kb_facts — category, fact_key, fact_value (custom_news category for pinned news)
|
kb_facts — category, fact_key, fact_value
|
||||||
kb_intents — intent_name, pattern(regex), response_template, action_type, priority, active
|
kb_intents — intent_name, pattern(regex), response_template, action_type, priority, active
|
||||||
api_cache — cache_key(proxmox/news/weather/ha_entities), data(JSON), updated_at
|
api_cache — cache_key(proxmox/news/weather/ha_entities), data(JSON), updated_at
|
||||||
|
tasks — title, notes, category, priority, status, due_date, due_time, completed_at
|
||||||
|
appointments — title, description, category, start_at, end_at, location, all_day, reminder_min
|
||||||
|
ha_entities — real-time HA entity states (updated by HA custom component)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Proxmox Cache
|
## Proxmox API
|
||||||
- `stats_cache.php` uses cluster API at `orbisne.fortiddns.com:8006` (NOT PROXMOX_HOST local IP)
|
- `stats_cache.php` uses cluster API at `orbisne.fortiddns.com:8006`
|
||||||
- Returns all VMs from both PVE1 and PVE2 via `/cluster/resources?type=vm`
|
- Returns all VMs from both PVE1 and PVE2 via `/cluster/resources?type=vm`
|
||||||
- Cache key: `proxmox` in api_cache table
|
- Token: `root@pam!jarvis=c45b5feb-f9a9-445d-a626-14fbb959f78b`
|
||||||
|
|
||||||
## Cron Jobs (on DO)
|
## Cron Jobs (on VM 211)
|
||||||
```
|
```
|
||||||
*/3 * * * * /usr/local/lsws/lsphp85/bin/lsphp .../facts_collector.php
|
*/3 * * * * php /var/www/jarvis/api/endpoints/facts_collector.php
|
||||||
*/5 * * * * /usr/local/lsws/lsphp85/bin/lsphp .../stats_cache.php
|
*/5 * * * * php /var/www/jarvis/api/endpoints/stats_cache.php
|
||||||
0 2 * * * /usr/local/bin/jarvis-backup.sh
|
0 7 * * * /usr/local/bin/jarvis-backup.sh
|
||||||
```
|
```
|
||||||
**Cron on PVE1:**
|
**Cron on PVE1:**
|
||||||
```
|
```
|
||||||
@@ -104,9 +124,8 @@ api_cache — cache_key(proxmox/news/weather/ha_entities), data(JSON)
|
|||||||
## Backups
|
## Backups
|
||||||
- Script: `/usr/local/bin/jarvis-backup.sh`
|
- Script: `/usr/local/bin/jarvis-backup.sh`
|
||||||
- Output: `/var/backups/jarvis/jarvis_backup_YYYY-MM-DD_HH-MM-SS.tar.gz`
|
- Output: `/var/backups/jarvis/jarvis_backup_YYYY-MM-DD_HH-MM-SS.tar.gz`
|
||||||
- Contains: all public_html dirs + SQL dumps of 6 DBs
|
- Daily at 7am UTC (2am CDT), 7-day retention
|
||||||
- Downloadable from: admin portal → BACKUPS tab
|
- Downloadable from admin portal → BACKUPS tab
|
||||||
- Retention: 7 days
|
|
||||||
|
|
||||||
## API Auth
|
## API Auth
|
||||||
- Main JARVIS API: session token via `X-Session-Token` header (or PHP session)
|
- Main JARVIS API: session token via `X-Session-Token` header (or PHP session)
|
||||||
|
|||||||
+44
-19
@@ -3,9 +3,12 @@
|
|||||||
## SSH Patterns
|
## SSH Patterns
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# DigitalOcean (all websites + JARVIS)
|
# DigitalOcean (websites only — JARVIS no longer here)
|
||||||
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 'cmd'
|
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 'cmd'
|
||||||
|
|
||||||
|
# JARVIS VM (PVE1 VM 211)
|
||||||
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.211 'cmd'
|
||||||
|
|
||||||
# PVE1 via FortiGate DDNS (survives IP changes)
|
# PVE1 via FortiGate DDNS (survives IP changes)
|
||||||
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@orbisne.fortiddns.com 'cmd'
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@orbisne.fortiddns.com 'cmd'
|
||||||
|
|
||||||
@@ -15,8 +18,15 @@ sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.90 'cmd
|
|||||||
# PVE2 (local only)
|
# PVE2 (local only)
|
||||||
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.91 'cmd'
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.91 'cmd'
|
||||||
|
|
||||||
# FusionPBX
|
# FusionPBX (must relay via DO — port 22 firewalled from internet)
|
||||||
sshpass -p 'Joker1974!@#' ssh -o StrictHostKeyChecking=no root@134.209.72.226 'cmd'
|
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
||||||
|
'sshpass -p "Joker1974!@#" ssh -o StrictHostKeyChecking=no root@134.209.72.226 "cmd"'
|
||||||
|
|
||||||
|
# NovaCPX (direct — PVE1 hop broken)
|
||||||
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.110 'cmd'
|
||||||
|
|
||||||
|
# MediaStack (SSH key auth)
|
||||||
|
ssh -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa root@10.48.200.35 'cmd'
|
||||||
|
|
||||||
# Local VMs (myron user + sudo, password Joker1974!)
|
# Local VMs (myron user + sudo, password Joker1974!)
|
||||||
sshpass -p 'Joker1974!' ssh -o StrictHostKeyChecking=no myron@10.48.200.18 'sudo cmd'
|
sshpass -p 'Joker1974!' ssh -o StrictHostKeyChecking=no myron@10.48.200.18 'sudo cmd'
|
||||||
@@ -32,20 +42,24 @@ sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.90 \
|
|||||||
|
|
||||||
| Host | IP | User | Password | Purpose |
|
| Host | IP | User | Password | Purpose |
|
||||||
|------|----|------|----------|---------|
|
|------|----|------|----------|---------|
|
||||||
| DO | 165.22.1.228 | root | Gonewalk1974!@# | Websites + JARVIS |
|
| DO | 165.22.1.228 | root | Gonewalk1974!@# | Websites (CyberPanel/OLS) |
|
||||||
|
| JARVIS VM | 10.48.200.211 | root | Joker1974!!! | JARVIS AI — PVE1 VM 211 |
|
||||||
|
| NPM | 10.48.200.200 | — | — | Nginx Proxy Manager (Docker) |
|
||||||
| PVE1 | orbisne.fortiddns.com (10.48.200.90) | root | Joker1974!!! | Primary hypervisor |
|
| PVE1 | orbisne.fortiddns.com (10.48.200.90) | root | Joker1974!!! | Primary hypervisor |
|
||||||
| PVE2 | 10.48.200.91 | root | Joker1974!!! | Secondary hypervisor |
|
| PVE2 | 10.48.200.91 | root | Joker1974!!! | Secondary hypervisor |
|
||||||
| FusionPBX | 134.209.72.226 | root | Joker1974!@# | FreeSWITCH PBX |
|
| FusionPBX | 134.209.72.226 | root | Joker1974!@# | FreeSWITCH PBX |
|
||||||
| HomeAssistant | 10.48.200.97 | myron | Joker1974!!! | HA VM (PVE1 VM 101) |
|
| NovaCPX | 10.48.200.110 | root | Joker1974!!! | Hosting panel — PVE1 VM 120 |
|
||||||
| Homebridge | 10.48.200.18 | myron | Joker1974! | Homebridge VM (PVE1 VM 118) |
|
| MediaStack | 10.48.200.35 | root | (SSH key) | Sonarr/Radarr/qBit — PVE1 VM 103 |
|
||||||
| Jellyfin | 10.48.200.33 | myron | Joker1974! | Jellyfin VM (PVE1 VM 112) |
|
| HomeAssistant | 10.48.200.97 | — | — | HA VM 109 (web terminal only) |
|
||||||
| Ollama | 10.48.200.95 | myron | Joker1974! | LLM VM (PVE1 VM 210) |
|
| Homebridge | 10.48.200.18 | myron | Joker1974! | PVE1 VM 118 |
|
||||||
| alien-pc | 10.48.200.66 | — | — | Windows PC (JARVIS agent only) |
|
| Jellyfin | 10.48.200.33 | myron | Joker1974! | PVE1 VM 112 |
|
||||||
| NetworkBackup | 10.48.200.99 | myron | Joker1974! | Backup VM (PVE2 VM 302) |
|
| Ollama | 10.48.200.210 | myron | Joker1974! | LLM VM 106, port 11434 |
|
||||||
|
| NetworkBackup | 10.48.200.99 | myron | Joker1974! | PVE2 VM 302 |
|
||||||
|
| WireGuard CT110 | 10.48.200.67 | — | — | VPN kill-switch for MediaStack |
|
||||||
|
|
||||||
## Proxmox API
|
## Proxmox API
|
||||||
```bash
|
```bash
|
||||||
# Accessible from DO via FortiGate DDNS (port 8006 forwarded)
|
# Accessible from anywhere via FortiGate DDNS (port 8006 forwarded)
|
||||||
curl -sk "https://orbisne.fortiddns.com:8006/api2/json/..." \
|
curl -sk "https://orbisne.fortiddns.com:8006/api2/json/..." \
|
||||||
-H "Authorization: PVEAPIToken=root@pam!jarvis=c45b5feb-f9a9-445d-a626-14fbb959f78b"
|
-H "Authorization: PVEAPIToken=root@pam!jarvis=c45b5feb-f9a9-445d-a626-14fbb959f78b"
|
||||||
|
|
||||||
@@ -53,17 +67,28 @@ curl -sk "https://orbisne.fortiddns.com:8006/api2/json/..." \
|
|||||||
GET /api2/json/cluster/resources?type=vm
|
GET /api2/json/cluster/resources?type=vm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Key DO Server Paths
|
## Key Paths on JARVIS VM (10.48.200.211)
|
||||||
```
|
```
|
||||||
/home/jarvis.orbishosting.com/ — JARVIS app root
|
/var/www/jarvis/ — JARVIS app root
|
||||||
/home/jarvis.orbishosting.com/public_html/ — web root (index.html, api.php, admin/)
|
/var/www/jarvis/public_html/ — web root (index.html, api.php, admin/)
|
||||||
/home/jarvis.orbishosting.com/api/ — backend (config.php, endpoints/, lib/)
|
/var/www/jarvis/api/ — backend (config.php, endpoints/, lib/)
|
||||||
/var/backups/jarvis/ — daily backups (tar.gz, up to 7 days)
|
/var/www/jarvis/deploy/ — Arc Reactor source (reactor.py)
|
||||||
/usr/local/bin/jarvis-backup.sh — backup script
|
/opt/jarvis-arc/reactor.py — Arc Reactor daemon
|
||||||
/usr/local/lsws/lsphp85/bin/lsphp — PHP runtime for CLI scripts
|
/var/backups/jarvis/ — daily backups (tar.gz, 7-day retention)
|
||||||
|
/usr/local/bin/jarvis-backup.sh — backup script
|
||||||
```
|
```
|
||||||
|
|
||||||
## PHP / OLS Notes
|
## Key Paths on DO (165.22.1.228)
|
||||||
|
```
|
||||||
|
/home/tomsjavajive.com/public_html/ — Tom's Java Jive
|
||||||
|
/home/epictravelexpeditions.com/public_html/ — Epic Travel
|
||||||
|
/home/parkerslingshotrentals.com/public_html/ — Parker Slingshot
|
||||||
|
/home/orbishosting.com/public_html/ — Orbis Hosting
|
||||||
|
/home/orbis.orbishosting.com/public_html/ — Orbis Portal
|
||||||
|
/home/tomtomgames.com/public_html/ — TomTom Games
|
||||||
|
```
|
||||||
|
|
||||||
|
## PHP / OLS Notes (DO server)
|
||||||
- Run scripts: `/usr/local/lsws/lsphp85/bin/lsphp /path/to/script.php`
|
- Run scripts: `/usr/local/lsws/lsphp85/bin/lsphp /path/to/script.php`
|
||||||
- Syntax check: `php8.3 -l file.php` (lsphp segfaults on -l)
|
- Syntax check: `php8.3 -l file.php` (lsphp segfaults on -l)
|
||||||
- Web server: OpenLiteSpeed (`lshttpd`), NOT apache/nginx
|
- Web server: OpenLiteSpeed (`lshttpd`), NOT apache/nginx
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
| Site | Path | GitHub Repo | DB |
|
| Site | Path | GitHub Repo | DB |
|
||||||
|------|------|-------------|-----|
|
|------|------|-------------|-----|
|
||||||
| jarvis.orbishosting.com | /home/jarvis.orbishosting.com/ | myronblair/jarvis | jarvis_db |
|
|
||||||
| tomsjavajive.com | /home/tomsjavajive.com/public_html/ | myronblair/tomsjavajive | toms_tjj_db |
|
| tomsjavajive.com | /home/tomsjavajive.com/public_html/ | myronblair/tomsjavajive | toms_tjj_db |
|
||||||
| epictravelexpeditions.com | /home/epictravelexpeditions.com/public_html/ | myronblair/epictravelexpeditions | epic_epic_db |
|
| epictravelexpeditions.com | /home/epictravelexpeditions.com/public_html/ | myronblair/epictravelexpeditions | epic_epic_db |
|
||||||
| parkerslingshot (subdomain) | /home/epictravelexpeditions.com/parkerslingshot/ | myronblair/parkerslingshot | epic_parkersling |
|
| parkerslingshot (subdomain) | /home/epictravelexpeditions.com/parkerslingshot/ | myronblair/parkerslingshot | epic_parkersling |
|
||||||
@@ -13,6 +12,11 @@
|
|||||||
| orbis.orbishosting.com | /home/orbis.orbishosting.com/public_html/ | myronblair/orbis-hosting-portal | — |
|
| orbis.orbishosting.com | /home/orbis.orbishosting.com/public_html/ | myronblair/orbis-hosting-portal | — |
|
||||||
| tomtomgames.com | /home/tomtomgames.com/public_html/ | myronblair/tomtomgames | tomt_ttg_db |
|
| tomtomgames.com | /home/tomtomgames.com/public_html/ | myronblair/tomtomgames | tomt_ttg_db |
|
||||||
|
|
||||||
|
## JARVIS (on PVE1 VM 211, NOT DO)
|
||||||
|
| Site | Path | GitHub Repo | DB |
|
||||||
|
|------|------|-------------|-----|
|
||||||
|
| jarvis.orbishosting.com | /var/www/jarvis/ on 10.48.200.211 | myronblair/jarvis | jarvis_db |
|
||||||
|
|
||||||
## Deploy Workflow
|
## Deploy Workflow
|
||||||
```bash
|
```bash
|
||||||
# 1. Edit files on server via SSH (for quick hotfixes)
|
# 1. Edit files on server via SSH (for quick hotfixes)
|
||||||
@@ -23,8 +27,8 @@ sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
|||||||
cd /home/site.com && git add -A && git commit -m "message" && git push
|
cd /home/site.com && git add -A && git commit -m "message" && git push
|
||||||
|
|
||||||
# Auto-deploy triggers within 1 minute via webhook
|
# Auto-deploy triggers within 1 minute via webhook
|
||||||
# Webhook: https://jarvis.orbishosting.com/webhook.php
|
# Webhook handler: tomtomgames.com/webhook.php (DO sites)
|
||||||
# Deploy log: /home/jarvis.orbishosting.com/logs/deploy.log
|
# JARVIS webhook: port 1972 on VM 211
|
||||||
|
|
||||||
# For immediate deploy (skip 1-min wait):
|
# For immediate deploy (skip 1-min wait):
|
||||||
sshpass -p 'Gonewalk1974!@#' scp -o StrictHostKeyChecking=no \
|
sshpass -p 'Gonewalk1974!@#' scp -o StrictHostKeyChecking=no \
|
||||||
@@ -43,11 +47,15 @@ sshpass -p 'Gonewalk1974!@#' scp -o StrictHostKeyChecking=no \
|
|||||||
| epic_epic_db | epic_epic | (check config.php) |
|
| epic_epic_db | epic_epic | (check config.php) |
|
||||||
| epic_parkersling | epic_parkersling | Joker1974!!! |
|
| epic_parkersling | epic_parkersling | Joker1974!!! |
|
||||||
| parker_db | parker_db | (check config.php) |
|
| parker_db | parker_db | (check config.php) |
|
||||||
| MySQL root | root | b71e5c1a8c7457541b9c1db822de37adfa271926a38b6c20 |
|
| MySQL root (DO) | root | b71e5c1a8c7457541b9c1db822de37adfa271926a38b6c20 |
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Quick DB access
|
# Quick DB access on DO
|
||||||
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
||||||
|
'mysql -u toms_tjj_user -p"+60wlPc+55e@gFq4" toms_tjj_db -e "SELECT ..."'
|
||||||
|
|
||||||
|
# Quick DB access on JARVIS VM
|
||||||
|
sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.211 \
|
||||||
'mysql -u jarvis_user -pJ4rv1s_Pr0t0c0l_2026! jarvis_db -e "SELECT ..."'
|
'mysql -u jarvis_user -pJ4rv1s_Pr0t0c0l_2026! jarvis_db -e "SELECT ..."'
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -60,6 +68,7 @@ sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
|||||||
- No `slug` column on products — URLs use `?id=product_id`
|
- No `slug` column on products — URLs use `?id=product_id`
|
||||||
- All tables must be `utf8mb4_unicode_ci` — mixed collation breaks JOINs (error 1267)
|
- All tables must be `utf8mb4_unicode_ci` — mixed collation breaks JOINs (error 1267)
|
||||||
- `wallet_transactions.type` and `loyalty_transactions.type` have strict enums
|
- `wallet_transactions.type` and `loyalty_transactions.type` have strict enums
|
||||||
|
- Admin login: `admin@tomsjavajive.com / Joker1974!!!`
|
||||||
|
|
||||||
## Parker Slingshot Admin
|
## Parker Slingshot Admin
|
||||||
- URL: `/admin/index.php`
|
- URL: `/admin/index.php`
|
||||||
@@ -67,14 +76,14 @@ sshpass -p 'Gonewalk1974!@#' ssh -o StrictHostKeyChecking=no root@165.22.1.228 \
|
|||||||
- Login: `admin / Parker2026!`
|
- Login: `admin / Parker2026!`
|
||||||
|
|
||||||
## Email / SMTP
|
## Email / SMTP
|
||||||
- TJJ + TomTomGames: CyberMail (CyberPersons) — API key in config.php as `CYBERMAIL_API_KEY`
|
- All sites: CyberMail (CyberPersons) — API key `sk_live_7f9b0f9a29f6de31a0d229d4af75d56b094ad724fc58a57d`
|
||||||
- Manage at: platform.cyberpersons.com
|
- Manage at: platform.cyberpersons.com
|
||||||
- Other sites: not yet configured (see myronblair/smtp-for-websites)
|
- DO blocks SMTP port 587 — use CyberMail API over HTTPS (port 443)
|
||||||
|
|
||||||
## FusionPBX
|
## FusionPBX
|
||||||
- URL: https://fusion.orbishosting.com (admin / fY7XP5swgtpbzrYLhkeVYkA4744)
|
- URL: https://fusion.orbishosting.com (admin / fY7XP5swgtpbzrYLhkeVYkA4744)
|
||||||
- Server: 134.209.72.226 (SSH: root / Joker1974!@#)
|
- Server: 134.209.72.226 (SSH: relay via DO → root / Joker1974!@#)
|
||||||
- Timezone: America/Chicago
|
- Timezone: America/Chicago
|
||||||
- SIP profiles via Lua XML handler — config changes need cache delete:
|
- SIP profiles via Lua XML handler — config changes need cache delete:
|
||||||
`rm /var/cache/fusionpbx/FusionPBX.configuration.sofia.conf`
|
`rm /var/cache/fusionpbx/FusionPBX.configuration.sofia.conf`
|
||||||
- Ext 1000 (Yealink T48S at 10.48.200.43), Ext 1001 (Tommy at 10.48.200.2)
|
- Ext 1000 (Myron T48S), Ext 1001 (Tommy T48S), Ext 1002 (Myron AX86R), Ext 1003 (Kitchen T57W), Ext 1004 (Bedroom T57W)
|
||||||
|
|||||||
Reference in New Issue
Block a user