Files
itpp-docs/docs-source/itpp-infrastructure/backup-restore/README.md
T
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

51 lines
1.9 KiB
Markdown

# Backup-Restore — my.itpropartner.com/backups/
## Architecture
- **Server:** app3 (152.53.241.111, netcup RS 4000)
- **Backend:** Flask Python app at `/opt/backup-restore/app/app.py` (port 8090)
- **Proxy:** Caddy on Core → reverse_proxy to 152.53.241.111:8090 with 300s timeouts
- **Snapshots:** `/opt/backup-restore/snapshots/<domain>/<timestamp>/`
- **Scheduled:** `0 1,13 * * * /opt/backup-restore/snapshot.sh` — 1 AM and 1 PM daily
- **Systemd:** `backup-restore.service`
- **Retention:** 30 days (auto-cleanup)
## Sites Backed Up (9 domains)
apextrackexperience.com, boxpilotlogistics.com, debtrecoveryexperts.com, iamgmb.com, katiewattdesign.com, katiewattsdesign.com, mainwp.itpropartner.com, vigilanttac.com, voipsimplicity.com
## Snapshot Contents
Each snapshot directory contains:
- `files.tar.gz` — WordPress document root tarball
- `database.sql` — MySQL dump
- `size.txt` — Total backup size in bytes
- `note.txt` — Optional manual backup note
## API Endpoints
| Method | Path | Auth | Description |
|--------|------|------|-------------|
| GET | /backups/ | No | Backup dashboard page |
| POST | /api/backup | No | Trigger manual backup |
| POST | /api/restore | No | Restore a snapshot |
| POST | /api/delete | No | Delete a snapshot |
| GET | /api/download/<domain>/<id> | No | Download snapshot archive |
| GET | /api/log | No | Restore history |
## Caddy Routes (on Core)
```
handle /api/backup → app3:8090
handle /api/restore → app3:8090 (flush_interval -1, 300s timeouts)
handle /api/download/* → app3:8090
handle /api/log → app3:8090
handle_path /backups/* → app3:8090 (300s timeouts)
```
## Recovery
```
systemctl restart backup-restore
# Manual snapshot:
/opt/backup-restore/snapshot.sh
# Manual restore via curl:
curl -X POST https://my.itpropartner.com/api/restore \
-H "Content-Type: application/json" \
-d '{"domain":"katiewattdesign.com","snapshot":"2026-07-20_130001"}'
```