Publish Docs Site / build (push) Failing after 5s
- 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
253 lines
12 KiB
Markdown
253 lines
12 KiB
Markdown
# IT Pro Partner — Complete Key Inventory
|
|
|
|
**Generated:** 2026-07-23
|
|
**Sanitized:** 2026-07-23 (plaintext secrets replaced with storage references)
|
|
**Scope:** All SSH keys, API tokens, service credentials, device keys, and passwords across the infrastructure
|
|
**⚠️ SENSITIVE:** All credential values live in the listed storage locations. See Hudu for API keys (layout 49).
|
|
|
|
---
|
|
|
|
## 1. SSH Keys
|
|
|
|
| Key Name | File | Type | Fingerprint (SHA256) | Purpose | Deployed To |
|
|
|----------|------|------|-----------------------|---------|-------------|
|
|
| **itpp-infra** | `/root/.ssh/itpp-infra` | ED25519 | `Jxh0bbT9dUV3q1DYYB3hHyhy/1TDj7Q8U4xrVmB38uQ` | Universal server admin key | All servers (Core, app1, app2, app3, wphost02, app1-bu, home router) |
|
|
| **wisp_rsa** | `/root/.ssh/wisp_rsa` | ED25519 | `MxQw1oh90NibSgN2mDbKP+07/jE4FEUEBbFAzuk5DcI` | WISP MikroTik CCR router SSH | Home CCR router (10.77.0.2 via WireGuard) |
|
|
| **germaine-personal** | `/root/.ssh/germaine-personal` | ED25519 | `dDbLH+bdPFcGU0mm1DpGa43ec0nUZ88YnpCi4p63y3I` | Germaine's personal key (from his machines) | Germaine's devices → Core |
|
|
| **homelab** | `/root/.ssh/homelab` | ED25519 | `c1nts4wR9EU06/O/k895Pb2tGZublgnGWG6NoQrK/qs` | Homelab Proxmox/QNAP access | vm-host-01, vm-host-02, QNAP NAS |
|
|
| **siteground.key** | `/root/.ssh/siteground.key` | RSA (encrypted) | N/A (RSA, encrypted) | SiteGround SFTP backup (port 18765) | SiteGround shared hosting |
|
|
| **authorized_keys** | `/root/.ssh/authorized_keys` | — | — | Who can SSH into Core | Core (this server) |
|
|
|
|
### SSH Key Details
|
|
|
|
```
|
|
itpp-infra.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4dxTH11aJkBqCY8lXl1kTfZ8yXWhTcthHnt1MtAuIE itpp-infra
|
|
wisp_rsa.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDnI4UwwPL8gJvtP/Jr7qiw0Qj/bQBwi2+f03p730xvn wisp-backup
|
|
germaine-personal.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID2H/2VMn8i7YSUUpcag6yXiI6nB3T99h7JIOs5/+73r germaine@itppartner
|
|
homelab.pub: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHT+727Cti4cZ2x6CiYDeDKZ9BhvCJCzTHlO9vMInHie homelab-itpp
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Server Root Passwords
|
|
|
|
**Storage:** Hudu (Vaultwarden asset) + `/root/.hermes/.env` (netcup CCP section)
|
|
|
|
| Server | IP | Provider | Access | Notes |
|
|
|--------|-----|----------|--------|-------|
|
|
| **Core** | 152.53.192.33 | netcup RS 2000 | SSH key only | `itpp-infra` key, password auth disabled |
|
|
| **app1** | 152.53.36.131 | netcup RS 4000 | Via root or ippadmin+sudo | Root password in Vaultwarden |
|
|
| **app2** | 152.53.39.202 | netcup RS 4000 | Via root or ippadmin+sudo | Root password in Vaultwarden |
|
|
| **app3** | 152.53.241.111 | netcup RS 4000 | Via root or ippadmin+sudo | Root password in Vaultwarden |
|
|
| **app1-bu** | 5.161.114.8 | Hetzner CPX11 | itpp-infra SSH key | Warm standby, offline by default |
|
|
|
|
### Admin Account (all servers)
|
|
|
|
- **Username:** `ippadmin`
|
|
- **Password:** → Vaultwarden entry "ippadmin"
|
|
- **Sudo:** Yes (full sudo access)
|
|
- **SSH:** Key-based only (`itpp-infra`)
|
|
|
|
---
|
|
|
|
## 3. Cloud & Infrastructure API Keys
|
|
|
|
**Storage:** All in `~/.hermes/.env` + Hudu API assets (layout 49)
|
|
|
|
| Service | Hudu Asset | Storage Location | Status |
|
|
|---------|-----------|------------------|--------|
|
|
| **Hetzner Cloud** | [177] | `/root/.hermes/scripts/.hetzner_token` + `/root/.hermes/.env` | ✅ Verified Jul 22 |
|
|
| **Cloudflare DNS** | [165] | `~/.hermes/.env` → `CLOUDFLARE_API_TOKEN` | ✅ Active (verified by health check) |
|
|
| **Wasabi S3** | [176] | `/root/.aws/credentials` | ✅ Active |
|
|
| **netcup API** | [166] | `~/.hermes/.env` → `NETCUP_API_KEY` | ✅ Active |
|
|
| **netcup CCP** | [167] | `~/.hermes/.env` → `NETCUP_CUSTOMER_NUMBER` + `NETCUP_CCP_PASSWORD` | ✅ Active |
|
|
| **Gitea (OLD/DEAD)** | — | ⚠️ **EXPIRED** — still in homelab + itpp-infrastructure remotes | ❌ INVALID (verified Jul 23) |
|
|
| **Gitea (ACTIVE)** | — | All other repos + `gitea-backup.sh` — ippadmin | ✅ Active (verified Jul 23) |
|
|
|
|
---
|
|
|
|
## 4. AI Provider API Keys
|
|
|
|
All stored in `/root/.hermes/.env` and Hudu API assets (layout 49).
|
|
|
|
| Provider | Hudu Asset | Purpose | Status |
|
|
|----------|-----------|---------|--------|
|
|
| **admin-ai** (LiteLLM) | [126] Hermes Primary Key | Primary model gateway (all models) | ✅ Active |
|
|
| **Anthropic** | [150] | Claude models | ✅ Active |
|
|
| **OpenAI** | [149] | GPT models | ✅ Active |
|
|
| **DeepSeek** | [152] | DeepSeek models | ✅ Active |
|
|
| **Google Gemini** | [161] / [151] | Gemini models | ✅ Active |
|
|
| **xAI (Grok)** | [154] | Grok models | ✅ Active |
|
|
| **OpenRouter** | [153] | Multi-provider routing | ✅ Active |
|
|
| **Mistral** | [155] | Mistral models | ✅ Active |
|
|
| **Groq** | [157] | Fast inference | ✅ Active |
|
|
| **Fireworks AI** | [156] | Serverless inference | ✅ Active |
|
|
| **Perplexity** | [159] | Search-augmented LLM | ✅ Active |
|
|
| **Cohere** | [158] | Cohere models | ✅ Active |
|
|
| **AI21 Labs** | [160] | Jurassic models | ✅ Active |
|
|
| **MiniMax** | [187] | MiniMax M3 | ✅ Active |
|
|
| **Z.ai (GLM)** | [188] | GLM models | ✅ Active |
|
|
| **Alibaba Qwen** | [189] Alibaba Qwen (DashScope) | Qwen models | ✅ Active |
|
|
| **Deepgram** | [162] | STT (voice transcription) | ✅ Active |
|
|
|
|
---
|
|
|
|
## 5. Communication APIs
|
|
|
|
**Storage:** All in `~/.hermes/.env` + Hudu API assets (layout 49)
|
|
|
|
| Service | Hudu Asset | Storage | Status |
|
|
|---------|-----------|---------|--------|
|
|
| **Telegram Bot** | [170] | `~/.hermes/.env` → `TELEGRAM_BOT_TOKEN` | ✅ Active |
|
|
| **Twilio (Live)** | [184] Twilio Live | `~/.hermes/.env` → `TWILIO_ACCOUNT_SID` + `TWILIO_AUTH_TOKEN` | ✅ Active |
|
|
| **Twilio (Test)** | [185] Twilio Test | `~/.hermes/.env` → `TWILIO_TEST_ACCOUNT_SID` + `TWILIO_TEST_AUTH_TOKEN` | ✅ Active |
|
|
| **Twilio API Key** | [186] Twilio API Key | `~/.hermes/.env` → `TWILIO_API_KEY_SID` + `TWILIO_API_KEY_SECRET` | ✅ Active |
|
|
| **ElevenLabs** | [148] | `~/.hermes/config.yaml` (auxiliary vision / TTS) | ✅ Active |
|
|
| **Email SMTP/IMAP** | — | `/root/.config/himalaya/shonuff.pass` | ✅ Active |
|
|
| **Email account** | — | `shonuff@germainebrown.com` — MXroute via mail.germainebrown.com:2525 (SMTP) / :993 (IMAP) | ✅ Active |
|
|
|
|
---
|
|
|
|
## 6. VoIP / RingLogix
|
|
|
|
**Storage:** `~/.hermes/.env` + Hudu API assets
|
|
|
|
| Credential | Hudu Asset | Storage |
|
|
|-----------|-----------|---------|
|
|
| **RingLogix Client ID** | [174] | `~/.hermes/.env` → `RINGLOGIX_CLIENT_ID` |
|
|
| **RingLogix Client Secret** | [175] | `~/.hermes/.env` → `RINGLOGIX_CLIENT_SECRET` |
|
|
| **RingLogix Username** | — | `~/.hermes/.env` → `RINGLOGIX_USERNAME` |
|
|
| **RingLogix Password** | — | `~/.hermes/.env` → `RINGLOGIX_PASSWORD` |
|
|
| **RingLogix Domain** | — | `~/.hermes/.env` → `RINGLOGIX_DOMAIN` |
|
|
|
|
---
|
|
|
|
## 7. MSP / RMM / Security APIs
|
|
|
|
**Storage:** All in `~/.hermes/.env` + Hudu API assets
|
|
|
|
| Service | Hudu Asset | Storage | Status |
|
|
|---------|-----------|---------|--------|
|
|
| **SyncroMSP** | [168] Token + [169] API Key | `~/.hermes/.env` → `SYNCROMSP_API_TOKEN` + `SYNCROMSP_API_KEY` | ✅ Active |
|
|
| **Bitdefender GZ** | [172] | `~/.hermes/.env` → `BITDEFENDER_API_KEY` | ✅ Active |
|
|
| **VirusTotal** | [171] | `~/.hermes/.env` → `VIRUSTOTAL_API_KEY` | ✅ Active |
|
|
| **UISP/UNMS** | [173] | `~/.hermes/.env` → `UISP_API_KEY` | ✅ Active |
|
|
|
|
---
|
|
|
|
## 8. Search & Data APIs
|
|
|
|
| Service | Hudu Asset | Storage | Status |
|
|
|---------|-----------|---------|--------|
|
|
| **Firecrawl** | [164] | `~/.hermes/.env` → `FIRECRAWL_API_KEY` | ✅ Active |
|
|
| **Exa AI Search** | [163] | `~/.hermes/.env` → `EXA_API_KEY` | ✅ Active |
|
|
|
|
---
|
|
|
|
## 9. Database Credentials
|
|
|
|
| Database | Host | User | Password Location | Purpose |
|
|
|----------|------|------|-------------------|---------|
|
|
| **MySQL (apex track)** | 127.0.0.1:33060 (SSH tunnel from wphost02) | `apextrackexperience_1781549652` | `wp-config.php` on wphost02 | Apex Track Experience WordPress |
|
|
| **MySQL (CloudPanel)** | app3:3306 | `root` | `/root/.my.cnf` on app3 (also in Vaultwarden) | CloudPanel WordPress hosting |
|
|
| **LiteLLM Postgres** | app1 (Docker) | (in docker-compose) | `/root/docker/litellm/docker-compose.yml` on app1 | LiteLLM operational DB |
|
|
|
|
---
|
|
|
|
## 10. Docker Services
|
|
|
|
| Service | URL | Credential Location | Storage |
|
|
|---------|-----|--------------------|---------|
|
|
| **Vaultwarden** | vault.itpropartner.com / vault.iamgmb.com | Admin Token → `/root/docker/vaultwarden/.env` on Core | Docker env file |
|
|
| **DRE Portal** | portal.debtrecoveryexperts.com | Basic Auth (htpasswd) | `/etc/caddy/dre-passwd` |
|
|
| **SearXNG** | (internal, no public endpoint) | (none) | — |
|
|
| **DocuSeal** | sign.core.itpropartner.com / sign.iamgmb.com | (none / app-managed) | — |
|
|
| **Uptime Kuma** | uptimekuma.itpropartner.com | (app-managed) | — |
|
|
| **Open WebUI** | admin-ai.itpropartner.com | `admin@itpropartner.com` (password: ask Sho'Nuff) | Not in .env |
|
|
| **Mealie** | recipe.iamgmb.com | `G@germainebrown.com` (password → Vaultwarden) | Vaultwarden |
|
|
| **Ops Portal** | ops.itpropartner.com | `ippadmin` (password → `~/.hermes/.env`) | `~/.hermes/.env` |
|
|
|
|
---
|
|
|
|
## 11. VPN & Network Keys
|
|
|
|
### WireGuard (Core)
|
|
|
|
| Item | Value |
|
|
|------|-------|
|
|
| **Interface** | `wg0` |
|
|
| **Core Private Key** | → `/etc/wireguard/wg0.conf` on Core |
|
|
| **Core IP** | `10.77.0.1/24` |
|
|
| **Listen Port** | `51821` |
|
|
| **Home Peer Public Key** | `1fPwdGQ20CxlZCQZQV134olDcE91hfp78yNDeaKJZzg=` |
|
|
| **Home Peer Endpoint** | `76.195.7.60:13231` |
|
|
| **Routed Networks** | `10.1.0.0/16`, `10.2.0.0/16`, `172.16.1.0/24`, `172.18.18.0/24` |
|
|
|
|
### Tailscale
|
|
|
|
| Node | IP | Type | Status |
|
|
|------|-----|------|--------|
|
|
| core | 100.71.155.7 | Linux | ✅ Online |
|
|
| app1 | 100.90.186.109 | Linux | ✅ Online |
|
|
| app2 | 100.117.164.66 | Linux | ✅ Online |
|
|
| app3 | 100.72.15.12 | Linux | ✅ Online |
|
|
| app1-bu | 100.112.23.21 | Linux | ⚠️ Offline (7d) |
|
|
| iphone-15-pro-max | 100.106.231.86 | iOS | ✅ Online |
|
|
| ipp-g-lap | 100.120.64.120 | macOS | ✅ Online |
|
|
| m4-mac-mini | 100.116.232.65 | macOS | ✅ Online |
|
|
|
|
---
|
|
|
|
## 12. UniFi / UDM Pro Device Keys
|
|
|
|
| Site | Key Location | Type | Status |
|
|
|------|-------------|------|--------|
|
|
| **Grand Lake Club** | UniFi Network Controller → Settings → API | Local Network API Key | ✅ Stored, pending direct verification |
|
|
| **Liberty Tire** | UniFi Network Controller → Settings → API | Local Network API Key | ✅ Stored, pending direct verification |
|
|
|
|
---
|
|
|
|
## 13. Unknown / Not Found
|
|
|
|
The following credentials are known to exist but were not found in the standard locations:
|
|
|
|
| Item | Notes |
|
|
|------|-------|
|
|
| **Open WebUI admin password** | Recovery manual says "in .env or ask Sho'Nuff" — NOT in current .env. Must ask Germaine. |
|
|
| **Hudu API key** | In skill docs (`hudu-management`) — used programmatically, not in .env. |
|
|
| **Traccar/FleetTracker360 admin** | Not in .env. May be Docker env or app-managed. |
|
|
| **Twenty CRM credentials** | Docker on Core, env at `/root/docker/twenty/.env` (not read). |
|
|
| **WordPress site DB passwords** | Various sites, typically in `wp-config.php` on wphost02 or app3. |
|
|
| **app1-bu root password** | Hetzner CPX11 — accessed via itpp-infra SSH key only. |
|
|
| **ComfyUI / Z4** | GPU server allocated for TripFlow — credentials not yet documented. |
|
|
| **Home MikroTik admin** | SSH via `admin@10.77.0.2` with `wisp_rsa` key. RouterOS password in router config (not extracted). |
|
|
|
|
---
|
|
|
|
## 14. Key Rotation & Audit Notes
|
|
|
|
- **Last full audit:** 2026-07-23
|
|
- **Last sanitization:** 2026-07-23 — all plaintext secrets removed; use Hudu + file paths for values
|
|
- **Hetzner token:** Rotated Jul 22 (old tokens in Hudu were invalid)
|
|
- **Twilio:** Live + test credentials both present in Hudu [184]/[185]/[186]
|
|
- **OpenRouter:** Fallback routing key — keep active even if not primary
|
|
- **admin-ai:** Primary gateway — all model calls route through this
|
|
- **Backups:** All .env + config files included in daily Hermes backup to S3
|
|
|
|
### Recovery Priority
|
|
|
|
If Core is lost, you need these to rebuild (in order):
|
|
1. `/root/.ssh/itpp-infra` — SSH to all servers
|
|
2. `/root/.hermes/.env` — All API keys and secrets
|
|
3. `/root/.aws/credentials` — S3 access for backups
|
|
4. `/root/.hermes/config.yaml` — Full Hermes config
|
|
5. `/root/.config/himalaya/shonuff.pass` — Email access
|
|
|
|
### Hudu API Assets (layout 49)
|
|
|
|
All API keys are documented as Hudu assets. List them via:
|
|
```
|
|
GET https://hudu.itpropartner.com/api/v1/companies/1/assets?page=1&per_page=25
|
|
```
|
|
Filter by `asset_layout_id == 49` to see all API keys with their Hudu asset IDs and storage locations.
|