/ Server Handover
2026-05-30 16:11:43 AWST
⚠ Safe handoff files only. Passwords and secrets are redacted.
HANDOVER.md
# jfmsrv01 — Generic Web Hosting / AI / Transcription Server Handover

Last updated: 2026-05-30  
Server: jfmsrv01  
Internal IP: 192.168.100.197  
External IP: 103.138.201.66  
Timezone: Australia/Perth  

## Current workflow

Use the generic server workflow:

- /opt/jfmsrv01/scripts/HANDOVER.md
- /opt/jfmsrv01/scripts/CHANGELOG.md
- /opt/jfmsrv01/scripts/RULES.md
- /opt/jfmsrv01/scripts/publish_handoff.sh

Old /opt/legaltranscribe/scripts/ paths are stale historical references.

## Public handoff

- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/
- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/server/HANDOVER.html

Internal legacy handoff:

- http://192.168.100.197:9002/vqngx6j8dc9q1lvt7g2a7a646q2t/

## Projects

### Mainsite

- URL: http://192.168.100.197/
- App path: /var/www/mainsite
- Stack: Statamic / Laravel 13 / PHP 8.3-FPM
- Nginx: /etc/nginx/sites-available/mainsite

### Admin

- URL: http://192.168.100.197:8080/admin
- App path: /var/www/admin
- Stack: Filament / Laravel 13 / PHP 8.3-FPM
- Nginx: /etc/nginx/sites-available/admin

### GoSeek AI Workbench

- URL: http://192.168.100.197:8090/admin
- Chat: http://192.168.100.197:8090/admin/chat
- AI Providers: http://192.168.100.197:8090/admin/ai-providers
- App path: /var/www/goseek
- Stack: Filament / Laravel 13 / PHP 8.3-FPM
- Nginx: /etc/nginx/sites-available/goseek

Important GoSeek files:

- app/Models/AiProvider.php
- app/Filament/Resources/AiProviderResource.php
- app/Services/GoSeek/ProviderRouter.php
- app/Services/GoSeek/ChatService.php
- app/Services/GoSeek/ToolEngine.php
- app/Http/Controllers/Api/ChatController.php
- resources/views/filament/pages/chat.blade.php
- resources/views/chat.blade.php

Provider rules:

- Ollama is the only local provider.
- OpenAI, Anthropic, Google, Deepseek, Kimi, Groq, Mistral, xAI and Cohere are cloud providers.
- API keys must be stored encrypted.
- API keys must never be printed in logs, handover files, source browsers, shell history, or chat.

## Handoff portal

- Path: /var/www/handoff
- Public root: /var/www/handoff/public
- Canonical folder: /var/www/handoff/public/vqngx6j8dc9q1lvt7g2a7a646q2t
- Nginx: /etc/nginx/sites-available/handoff and /etc/nginx/sites-available/handoff-public-ssl

## Rules

- Use heredoc-to-file scripts for patches.
- Back up files before editing.
- Repair broken patches in place by default.
- Roll back only for outage recovery or high-risk repair.
- Update HANDOVER.md and CHANGELOG.md after changes.
- Publish handoff after meaningful changes.
- Do not publish .env, API keys, passwords, private keys, vendor, node_modules, sessions, cache files, or unsanitised logs.

## Public source browser note

The public source browsers are enabled temporarily so ChatGPT can inspect first-party PHP code. Disable or restrict them when not actively needed.

---

## Update - 2026-05-30 - Fresh handoff run workflow

A cache-busting handoff publish wrapper now exists:

- /opt/jfmsrv01/scripts/publish_fresh_handoff_run.sh

Use this when files need to be re-read regularly by ChatGPT or browsers. It creates:

- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/
- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/server/HANDOVER.html
- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/<timestamp>/source/goseek/index.html

The non-slug alias /server/HANDOVER.html is now routed to the current canonical slug tree to avoid stale root-level files.

---

## Fresh handoff run - 20260530-160357

Use this unique run URL for ChatGPT/browser inspection to avoid stale cache:

- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/
- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/server/HANDOVER.html
- https://vqngx6j8dc9q1lvt7g2a7a646q2t.jfmcommunications.com.au/vqngx6j8dc9q1lvt7g2a7a646q2t/runs/20260530-160357/source/goseek/index.html
Auto-generated by publish_handoff.sh | 20260530_161140