diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b51b5ee --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# itpp-infrastructure — CHANGELOG + +## 2026-07-16 — Audit Remediation + +- Created CHANGELOG.md (missing per project documentation standard) +- Project directory: `/root/projects/itpp-infrastructure` diff --git a/backup-plan.md b/backup-plan.md index f0814e0..176c88e 100644 --- a/backup-plan.md +++ b/backup-plan.md @@ -19,6 +19,7 @@ | 2:30 AM | app2 | /root/backup.sh | Traccar, Gitea, Hudu, UNMS, UniFi | | 3:00 AM | Core | root-essentials-backup.sh | /root essentials | | 3:00 AM | app3 | /root/backup.sh | CloudPanel, MySQL, WordPress, Nginx configs | +| 1:00 AM + 1:00 PM | app3 | /opt/backup-restore/snapshot.sh | Per-site WordPress snapshots (files + DB), 60-day retention | | 3:00 AM | Core | docker-volume-sync.sh | Docker volumes | | 4:00 AM | Core | system-config-sync.sh | System configs | | 6:00 AM | Core | home-router-backup.sh | MikroTik CCR config | @@ -51,8 +52,9 @@ | LiteLLM | Postgres pg_dump + config.yaml → S3 (daily) | 24 hr | | Open WebUI | /app/backend/data → S3 (daily) | 24 hr | | n8n | Postgres pg_dump → S3 (daily) | 24 hr | -| MCP servers | Config files → S3 (daily) | 24 hr | -| Ollama | Model list → S3 (daily) | 24 hr | +| Ollama | Models preserved in Docker volume | 24 hr | +| MCP servers | Configs in Git + Docker volumes | 24 hr | +| Mattermost | Postgres DB + data volume → S3 (daily) | 24 hr | ### app2 (152.53.39.202) @@ -72,6 +74,8 @@ | MySQL | All databases mysqldump → S3 (daily) | 24 hr | | WordPress | Files + wp-config → S3 (daily) | 24 hr | | Nginx | /etc/nginx + /etc/cloudpanel → S3 (daily) | 24 hr | +| **WordPress Snapshots** | **Per-site tarball + MySQL dump (2x daily, 60-day retention)** | **12 hr** | +| **Backup Restore UI** | **Flask app port 8090 at my.itpropartner.com/backups** | **Instant** | | voipsimplicity.com | Covered by MySQL + WordPress file backup | 24 hr | | my.voipsimplicity.com | Covered by Git (static HTML) | N/A | diff --git a/dns-records.md b/dns-records.md index d854079..e2ba671 100644 --- a/dns-records.md +++ b/dns-records.md @@ -1,13 +1,12 @@ # DNS Records — itpropartner.com **Managed by:** SiteGround Site Tools (no API access) -**Updated:** July 16, 2026 +**Updated:** July 17, 2026 **⚠️ Germaine must apply changes manually at SiteGround** ## CREATE (pending) | Subdomain | Record | IP | Service | |---|---|---|---| -| my.itpropartner.com | A | 152.53.192.33 | Customer portal hub | | vault.itpropartner.com | A | 152.53.36.131 | Vaultwarden (moving from Core) | | status.itpropartner.com | A | 152.53.192.33 | Public status page | @@ -23,18 +22,21 @@ |---|---|---|---| | ops.itpropartner.com | 152.53.192.33 | Core | Operations dashboard | | core.itpropartner.com | 152.53.192.33 | Core | Landing page + MikroTik | +| my.itpropartner.com | 152.53.192.33 | Core | Customer portal hub | | sign.itpropartner.com | 152.53.192.33 | Core | Document signing | | uptimekuma.itpropartner.com | 152.53.192.33 | Core | Uptime monitoring | | app.itpropartner.com | 152.53.192.33 | Core | App entry | | admin-ai.itpropartner.com | 152.53.36.131 | app1 | LiteLLM | | ai.itpropartner.com | 152.53.36.131 | app1 | Open WebUI | | n8n.itpropartner.com | 152.53.36.131 | app1 | Workflow automation | +| **noc.itpropartner.com** | **152.53.36.131** | **app1** | **Mattermost NOC chat** | | app1.itpropartner.com | 152.53.36.131 | app1 | App server 1 | | git.itpropartner.com | 152.53.39.202 | app2 | Gitea | | hudu.itpropartner.com | 152.53.39.202 | app2 | Documentation | | unifi.itpropartner.com | 152.53.39.202 | app2 | UniFi controller | | www.unifi.itpropartner.com | 152.53.39.202 | app2 | UniFi (www) | | panel.itpropartner.com | 152.53.241.111 | app3 | CloudPanel | +| mainwp.itpropartner.com | 152.53.241.111 | app3 | MainWP management | ## DELETE (all point to 35.212.86.161 — old host) @@ -53,9 +55,8 @@ | www.support.itpropartner.com | Moving to my.itpropartner.com | | mail.itpropartner.com | MXroute handles email | | ftp.itpropartner.com | Not used | -| autodiscover.itpropartner.com | Exchange not used | -| autoconfig.itpropartner.com | Exchange not used | -| mainwp.itpropartner.com | Moving to ops | +|| autodiscover.itpropartner.com | Exchange not used | +|| autoconfig.itpropartner.com | Exchange not used | ## Service Routing Plan diff --git a/project-log-2026-07-17.md b/project-log-2026-07-17.md new file mode 100644 index 0000000..146f613 --- /dev/null +++ b/project-log-2026-07-17.md @@ -0,0 +1,38 @@ +# Project Log — July 17, 2026 + +## WordPress Migration (wphost02 → app3) +- **Status:** COMPLETE +- 7 sites migrated from wphost02 (5.161.62.38) to app3 (152.53.241.111) +- Sites: debtreecoveryexperts.com, boxpilotlogistics.com, iamgmb.com, katiewattsdesign.com, vigilanttac.com, apextrackexperience.com, mainwp.itpropartner.com +- Method: tar-pipe + mysqldump via SSH, CloudPanel site creation +- DNS: Cloudflare for BoxPilot, IAmGMB, VigilantTAC, Katie, DRE; SiteGround for MainWP, Apex +- Katie domain fix: katiewattsdesign.com (two t's in watts) on Cloudflare +- Apex domain fix: apextrackexperience.com (not apexpredatorstackexperience) +- DRE fix: debtrecoveryexperts.com (two r's in recovery), Nginx server_name typo +- DRE SSL: Cloudflare Full mode, 525 resolved after Nginx fix + +## Mattermost Deployment +- **Status:** LIVE at noc.itpropartner.com (DNS pending) +- **Server:** app1 (152.53.36.131), Docker, Team Edition +- **Backend:** PostgreSQL 16 Alpine +- **Caddy:** noc.itpropartner.com → 127.0.0.1:8065 +- **Storage:** /root/docker/mattermost +- Admin: info@itpropartner.com + +## Backup Restore System +- **Status:** LIVE at my.itpropartner.com/backups +- **Server:** app3 (152.53.241.111), Flask port 8090 +- **Features:** 2x daily snapshots (1 AM + 1 PM), 60-day retention, collapsible per-site view, restore modal, download links +- **Storage:** /opt/backup-restore/snapshots// +- **Cron:** 0 1,13 * * * +- **Caddy:** Core proxies my.itpropartner.com/backups → app3:8090 + +## Katie Watts DNS Fix +- Domain: katiewattsdesign.com (two t's) +- DNS: Cloudflare, updated A record to 152.53.241.111 +- Previously: was resolving to old IP, Cloudflare zone accessible + +## Model Credits Reliability +- DeepSeek balance: $59.29 (not exhausted) +- Cron fixed to track deepseek-v4-pro instead of deepseek-chat +- Local Ollama fallback: llama3.2:3b