Files
Germaine Brown 98073dc636
Publish Docs Site / build (push) Failing after 5s
feat: initial itpp-docs setup with MkDocs Material
- mkdocs.yml with dark slate theme, nav for 12 ITPP projects
- build-docs.sh aggregates docs from all project repos
- .gitea/workflows/docs-publish.yml for nightly rebuild+deploy
- README and CHANGELOG for the itpp-docs repo itself
- docs-source/ populated from all 12 repos
- site/ ready for deployment to docs.itpropartner.com
2026-08-09 23:49:45 -04:00

13 KiB

scripts

Generated: 2026-07-21 19:53 Total scripts: 78 (44 shell, 34 Python) Cron-attached: 30 of 78 Location: /root/.hermes/scripts/ Backup: Live sync (every 15m) + Full daily backup → Wasabi S3

Backup & DR

Script Purpose Type Size Schedule Cron Job
unms-backup-sync.sh unms-backup-sync.sh -- Daily UISP/UNMS backup sync to Wasabi S3. shell 2.6KB {'kind': 'cron', 'expr': '0 6 * * *', 'display': '0 6 * * *'} unms-backup-sync
gitea-backup.sh gitea-backup.sh — Daily Gitea backup to Wasabi S3. shell 2.5KB {'kind': 'cron', 'expr': '0 8 * * *', 'display': '0 8 * * *'} gitea-backup
snapshot-hetzner.py Create a snapshot of ALL running servers in the Hetzner account. python 1.8KB {'kind': 'cron', 'expr': '0 5 * * 1', 'display': '0 5 * * 1'} hetzner-weekly-snapshots
hudu-backup.sh hudu-backup.sh — Daily Hudu PostgreSQL backup to Wasabi S3. shell 1.6KB {'kind': 'cron', 'expr': '0 7 * * *', 'display': '0 7 * * *'} hudu-backup
hermes-live-sync.sh hermes-live-sync.sh — Full Hermes sync to S3 every 15 min shell 1.1KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} hermes-live-sync
run-wisp-backup.sh run-wisp-backup.sh — Wrapper for cron: sets up env and runs CCR backup via VPN shell 776B {'kind': 'cron', 'expr': '0 6 * * *', 'display': '0 6 * * *'} home-router-daily-backup
sync_ringlogix.py Sync RingLogix subscriber data to local cache python 27.0KB Manual
backup_portal.py Backup portal data for web hosting services python 17.1KB Manual
wisp-backup.py Call home-router-vpn.sh up/down/status. python 13.1KB Manual
hermes-backup.sh hermes-backup.sh — Full Hermes backup to Wasabi S3 shell 7.9KB Manual
core-services-backup.sh Supplemental Core service backups (services not covered by existing Core backups) shell 3.8KB Manual
hermes-standby-restore.sh hermes-standby-restore.sh — Warm standby restore from S3 shell 2.7KB Manual
app1-backup.sh Backup app1 AI stack services to S3 shell 2.6KB Manual
hermes-system-config-sync.sh hermes-system-config-sync.sh — Sync system-level configs to Wasabi shell 2.4KB Manual
backup-uisp.sh Backup UISP/UNMS network management system shell 2.3KB Manual
app3-backup.sh Backup app3 web hosting services to S3 shell 2.1KB Manual
root-essentials-backup.sh root-essentials-backup.sh — Daily backup of Hermes config/core to S3 shell 1.8KB Manual
hermes-docker-sync.sh hermes-docker-sync.sh — Sync Docker volumes to Wasabi shell 1.7KB Manual
unifi-backup-sync.sh unifi-backup-sync.sh Daily UniFi backup sync from app2 Docker volume to Wasabi S3. shell 1.7KB Manual
home-router-backup.sh Backup home MikroTik router config to S3 shell 1.7KB Manual
app2-backup.sh Backup app2 services to S3 shell 1.7KB Manual
backup-audit-check.sh backup-audit-check.sh — Daily check: was yesterday's full backup successful? shell 1.3KB Manual
send-backup-email.py Send home router backup archive via SMTP. python 1.1KB Manual
send-backup-readme.py Send home router backup README via SMTP. python 1.1KB Manual
run-portal-backup.sh Portal backup cron wrapper — runs backup_portal.py, silent on success shell 782B Manual
system-config-sync.sh Sync system config files to S3 shell 669B Manual
docker-volume-sync.sh Sync Docker volumes to S3 shell 597B Manual

Monitoring

Script Purpose Type Size Schedule Cron Job
vps-threshold-check.sh VPS Resource Threshold Alert Checker shell 6.1KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} vps-threshold-check
bounce-check.py Check email bounce rates and flag delivery issues python 3.3KB {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} bounce-check
service-health-check.sh service-health-check.sh — Check all critical services and report failures shell 2.3KB {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} service-health-check
imap_triage_watchdog.sh Watchdog for the email triage cron job (5929c5f1deff). shell 2.1KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} IMAP-triage-watchdog
spend-monitor-collect.sh spend-monitor-collect.sh — Collect LLM spend data for daily monitor shell 1.9KB {'kind': 'cron', 'expr': '0 7 * * *', 'display': '0 7 * * *'} daily-spend-monitor
apex-mail-watchdog.sh apex-mail-watchdog.sh — Check Apex WPForms email delivery every 5 min shell 1.9KB {'kind': 'cron', 'expr': '*/5 * * * ', 'display': '/5 * * * *'} apex-mail-watchdog
home-router-watchdog.sh home-router-watchdog.sh — Check home router via WireGuard tunnel shell 553B {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} Home-Router-Watchdog
home-router-watchdog.sh home-router-watchdog.sh — Check home router via WireGuard tunnel shell 553B {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} Home-Router-Watchdog
boys-mail-monitor.py Monitor Tony's email inbox for important messages python 18.5KB Manual
hermes-standby-watchdog.sh hermes-standby-watchdog.sh — Periodic health check for warm standby shell 4.2KB Manual
apex-mail-watchdog.py Try sending a test email to the admin address. python 2.9KB Manual
reboot-with-check.sh reboot-with-check.sh — Reboot a server and wait for it + key services to come back. shell 2.7KB Manual

Email

Script Purpose Type Size Schedule Cron Job
shonuff-email-responder.py Collect new emails from the Master python 9.7KB {'kind': 'interval', 'minutes': 5, 'display': 'every 5m'} shonuff-email-reply
dre-mail-poller.py ── Configuration ────────────────────────────────────────────────────────────── python 9.6KB {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} dre-mail-poller
boxpilot-triage.py Free/personal email domains — if sender is from these AND claims another company, it's sus python 5.8KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} boxpilot-triage
shonuff-inbox-collect.py Extract plain text from email, favoring text/plain. python 3.3KB {'kind': 'interval', 'minutes': 15, 'display': 'every 15m'} shonuff-inbox-agent
imap_triage_autorun.py User-blocked marketing/loan domains are spam/promotional. python 2.9KB {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} IMAP-email-triage
imap_triage.py Core IMAP email triage and classification engine python 14.6KB Manual
send-dr-audit-email.py Send DR Backup Audit email to Germaine. python 5.5KB Manual
send-shonuff.py Send email from Sho'Nuff Brown with signature + BCC to Germaine + IMAP Sent copy. python 2.3KB Manual
watch-shonuff-inbox.py Monitor Sho'Nuff inbox for new messages python 2.2KB Manual
send-recovery.py Email the recovery bundle to g@germainebrown.com. python 1.5KB Manual
_fetch_body.py Fetch body of email sequence number 2 from shonuff inbox. python 1.1KB Manual
send-reset-notifications.sh Called BEFORE suggesting the user type /reset shell 914B Manual
send-back-online.sh Called by the NEW session after /reset to notify Germaine and Anita shell 832B Manual

Ops Portal

Script Purpose Type Size Schedule Cron Job
ops-data-collector.py ─── Configuration ───────────────────── python 47.6KB {'kind': 'cron', 'expr': '*/5 * * * ', 'display': '/5 * * * *'} ops-data-collector
status-page-refresh.sh Status page heartbeat JSON generator shell 762B {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} status-page-refresh

Network

Script Purpose Type Size Schedule Cron Job
home-router-vpn.sh wisp-vpn.sh — Connect/disconnect L2TP/IPsec VPN to MicroTik gateway shell 8.1KB Manual
home-router-keepalive.sh wisp-vpn-keepalive.sh — Check VPN status and reconnect if down shell 877B Manual

FleetTracker

Script Purpose Type Size Schedule Cron Job
ft360-export.py Cron runs scripts with system Python. The FT360 MCP uses the shared python 5.2KB {'kind': 'interval', 'minutes': 1, 'display': 'every 1m'} ft360-dashboard-export
ft360-route-export.py Export today's FT360 device positions as GeoJSON for the dashboard map overlay. python 3.8KB Manual
ft360-daily-stats.py Compute daily stats from the Traccar H2 DB for the FT360 dashboard export. python 3.2KB Manual

AI & Models

Script Purpose Type Size Schedule Cron Job
track-firecrawl.py Track Firecrawl API credit usage for portal dashboard. python 2.7KB {'kind': 'cron', 'expr': '0 9 * * *', 'display': '0 9 * * *'} firecrawl-usage-check
model-usage-tracker.sh Model health check -- test all 5 fallback chain providers shell 2.2KB {'kind': 'cron', 'expr': '0 8 * * *', 'display': '0 8 * * *'} model-usage-check

Security

Script Purpose Type Size Schedule Cron Job
lynis-scan.sh Nightly security audit via Lynis shell 723B {'kind': 'cron', 'expr': '0 3 * * *', 'display': '0 3 * * *'} lynis-scan
audit-server.sh Comprehensive server audit script shell 3.1KB Manual

DRE

Script Purpose Type Size Schedule Cron Job
dre-approval-reminder.sh dre-approval-reminder.sh — Check for pending claim approvals shell 854B {'kind': 'cron', 'expr': '0 * * * *', 'display': '0 * * * *'} dre-pending-approval-reminder

Shark Game

Script Purpose Type Size Schedule Cron Job
shark-scraper.sh Shark scraper wrapper — silent on success, only outputs on failure shell 307B {'kind': 'interval', 'minutes': 60, 'display': 'every 60m'} shark-scraper
shark-draft-reminder.sh shark-draft-reminder.sh — Send 24h and 1h draft reminder emails to league members shell 13.1KB Manual

Hermes Internal

Script Purpose Type Size Schedule Cron Job
hermes-consolidate.sh hermes-consolidate.sh — Auto-consolidate Hermes memory every 10 min. shell 2.8KB {'kind': 'interval', 'minutes': 10, 'display': 'every 10m'} hermes-memory-consolidate
hermes-consolidate.py Consolidate and archive Hermes backup files python 4.6KB Manual
mcp-mysql.py Simple MySQL MCP server for Hermes - with async stdin handling. python 3.0KB Manual

Infrastructure

Script Purpose Type Size Schedule Cron Job
snmp-collect.sh Collect SNMP metrics from MikroTik network devices shell 926B Manual
snmp-http-server.py Serve SNMP textfile metrics via HTTP for Prometheus python 620B Manual
list-hetzner-servers.py List Hetzner servers via API. python 500B Manual

Utilities

Script Purpose Type Size Schedule Cron Job
build-recovery.py Build the full Hermes recovery bundle markdown file. python 6.9KB Manual
generate-script-contents.py Find a script file by name in known script directories. python 2.4KB Manual
changelog.sh changelog.sh — Append an entry to the Hermes changelog shell 877B Manual

Personal

Script Purpose Type Size Schedule Cron Job
daily-feed-summary.py Collect RSS feeds and generate daily digest summary python 9.3KB {'kind': 'cron', 'expr': '0 11 * * *', 'display': '0 11 * * *'} daily-tech-digest
unsubscribe-scanner.py ── Config ── python 4.8KB {'kind': 'cron', 'expr': '0 7 * * *', 'display': '0 7 * * *'} Unsubscribe Daily Digest
icloud_bills_calendar.py Sync iCloud calendar with billing reminders python 12.0KB Manual