Skip to content

Security Notice

This document has been auto-published from the internal knowledge base. All passwords, API keys, tokens, and IP addresses have been redacted for security.

Infrastructure Specialist

VPS Inventory

srv1139900 — [VPS_IP] (Primary)

  • SSH: ssh -i ~/.ssh/id_hostinger root@[VPS_HOSTNAME]
  • Specs: KVM 8, 8 CPU, 32GB RAM
  • 17 containers:
ServiceContainerPortDomain
Traefikroot-traefik-180/443(reverse proxy)
n8nroot-n8n-15678 (localhost)n8n.[VPS_HOSTNAME]
HandyManny (CHAROS)handymanny3002charos.handymanny.cloud
HandyManny (U1ST)u1st-handymanny3004u1st.handymanny.cloud
Expedientecharos-expediente3005expediente.handymanny.cloud
Landing Pagehandymanny-site80 (internal)handymanny.cloud
VIA Dashboardvia-plan + via-plan-api80 (internal)via.handymanny.cloud
Mission Control v3mission-control80 (internal)mc.handymanny.cloud
WSI MCwsi-mc80 (internal)wsi.handymanny.cloud
Sales MCsales-mc80 (internal)sales.handymanny.cloud
Consultin Gruasconsultin-gruas80 (internal)consultin.handymanny.cloud
Headless Browserheadless-browser3000(direct port)
Evolution APIevolution-api8080(direct port)
PDF Splitterpdf-splitter5555(direct port)
docs-1414docs-141480 (internal)docs-1414.[VPS_HOSTNAME]
PostgreSQL (HM)handymanny-postgres5432 (internal)
PostgreSQL (Exp)expediente-postgres5432 (internal)
PostgreSQL (Evo)evolution-postgres5432 (internal)

srv1379713 — [VPS_IP] (OpenClaw Only)

  • **ssh user@server`
  • 1 container: openclaw-ruln-openclaw-1 (port 63034 localhost-only)
  • Access UI via SSH tunnel only

Docker Networks

  • root_default — shared by n8n, Traefik, all app containers, headless-browser, pdf-splitter

Deploy Patterns by Project

ProjectSourceDeploy Command
HandyManny (CHAROS)~/projects/handymanny/./deploy.sh charos
HandyManny (U1ST)~/projects/handymanny/./deploy.sh u1st
Expediente~/projects/expediente/bash ~/projects/expediente/deploy.sh
Mission Control v3~/mission-control/bash ~/mission-control/deploy.sh
WSI MC~/wsi-mc/bash ~/wsi-mc/deploy.sh
Sales MC~/projects/sales-mc/cd ~/projects/sales-mc && bash deploy.sh
Consultin Gruas~/projects/consultin-gruas/bash ~/projects/consultin-gruas/deploy.sh
VIA Dashboard~/Downloads/via-plan-deploy/bash ~/Downloads/via-plan-deploy/deploy.sh
Landing Page~/projects/handymanny-site/cd ~/projects/handymanny-site && bash deploy.sh
Headless Browser~/projects/docker-stack/headless-browser/SCP → cd /docker/headless-browser && docker compose up -d --build
WSI Mgmt Report~/projects/wsi-management-report/TODO: add deploy.sh

Passwords & Auth

ServiceUserPassword
n8n UI[REDACTED]
MC basic authchavez684Ch@r0s2026MC
WSI MC basic auth(same as MC)(same as MC)
Sales MC basic authadminWestSide
HandyManny adminuser@example.com[PASSWORD]

n8n Credentials (Reference IDs)

CredentialIDUsed By
Anthropic[CREDENTIAL_ID]AI parsing (all workflows)
MS SQL (CW)[CREDENTIAL_ID]AN Audit, AP Invoice
Gmail[CREDENTIAL_ID]Shipment Notice Emailer
SSH srv1139900ssh-srv1139900-pkCrowBot Security/Versions/Briefing
Anthropic Header[CREDENTIAL_ID]CrowBot Orchestrator
Google Calendar OAuthcalendar-credentials.json (local)Mission Control

VPS Cron Jobs (srv1139900)

Time (UTC)ScriptPurpose
03:00/backups/pg-backup.shPostgreSQL backups (7-day retention)
12:00/root/scripts/sales-mc-cw-sync.pyCW → Sales MC data sync (pymssql)
12:05/root/scripts/sales-mc-sf-sync.shSF → Sales MC activity sync (via n8n cache)

PostgreSQL Backups

  • Script: /backups/pg-backup.sh on srv1139900
  • Cron: Daily 3 AM UTC, 7-day retention
  • DBs: handymanny, u1st, expediente (x2), evolution
  • Logs: /backups/backup.log

SSL / Traefik

  • Traefik handles Let's Encrypt auto-renewal for all *.handymanny.cloud subdomains
  • SSL bug (2026-02-22): www. variant in Traefik router rules broke LE TLS challenge. Fixed by removing www. from docker-compose files.

CHAROS Auditor — Security CLI

  • Location: ~/charos-auditor/
  • Run: python auditor.py (full) | --quick (local only)
  • Current Score: 83/B (full) | 92/A (quick)
  • Schedule: Daily 7 AM via Task Scheduler
  • n8n Alert: iCi0oHtOg0k43IFI (ACTIVE) — Telegram to chat 5523342814 when score <70
  • 9 modules: deps (20%), secrets (20%), routes (15%), docker (10%), headers (10%), infra (10%), n8n (5%), code (5%), ssl (5%)
  • 15/15 security to-dos DONE (webhooks, headers, HSTS, PG backups, vitest, ESLint, Docker limits, alert workflow, trend chart)
  • MC integration: generate.py reads ~/charos-auditor/reports/latest.json + history.json

Windows Scheduled Tasks

TaskExecuteFrequency
Claude Session Monitorrun-session-monitor.batEvery 15 min
MC AI Process Scannerpython ai-processes.pyEvery 5 min
MC SSL Health Checkrun-health.batEvery 2 hours
Mission Control Dashboardrun-daily.batEvery 2 hours
OpenClaw Daily Syncrun-daily.batEvery 4 hours
CHAROS Auditor Dailyrun-audit.batDaily 7 AM
MCP Process Cleanupcleanup-mcp.ps1Every 30 min
OllamaTunnelwscript.exe ollama-tunnel.vbsOn logon
  • All bat tasks set to Hidden=True (no cmd window flash)
  • MCP Cleanup: kills orphaned cmd.exe/node.exe from stale Claude sessions

Maintenance Notes

  • MCP orphan processes: ~/scripts/cleanup-mcp.ps1 handles cleanup (3 passes: dead parent, >1hr old, orphaned node)
  • PowerShell via Bash: $_ gets mangled; write to .ps1 file first. $pid is reserved — use $procId
  • Docker restart vs recreate: Must use docker compose down && up -d (not docker restart) when env vars change — entrypoint bakes vars at creation

Migration Log (2026-02-22)

WhatFromTo
VIA Dashboardsrv1379713 (HTTP)srv1139900 (HTTPS via Traefik)
Evolution APIsrv1379713 (v1.8.7)srv1139900 (v2.3.7)
CHAROS Portalhandymanny.cloudcharos.handymanny.cloud
Mission Control/mc in HandyMannymc.handymanny.cloud (standalone)
Landing Pagehandymanny.cloud (nginx static)

Key Local Paths

PathPurpose
~/mission-control/Dashboard generator + projects.json
~/openclaw-sync/OpenClaw daily sync scripts
~/projects/docker-stack/headless-browser/src/Headless browser source
~/charos-auditor/Security audit CLI
~/scripts/cleanup-mcp.ps1MCP process cleanup

Other Services

  • Ollama: http://127.0.0.1:11434 (llama3.1 8B) — auto-starts on login via OllamaTunnel
  • Evolution API: srv1139900:8080 (v2.3.7, DISCONNECTED, needs QR re-scan)

HandyManny Documentation System