From d3702b2b885ad05150aaab2f1080b0c54f72801d Mon Sep 17 00:00:00 2001 From: drew Date: Thu, 1 Jan 2026 02:38:38 +0000 Subject: [PATCH] Add manifest.md --- manifest.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 manifest.md diff --git a/manifest.md b/manifest.md new file mode 100644 index 0000000..cc3109f --- /dev/null +++ b/manifest.md @@ -0,0 +1,44 @@ +# 🛡️ My Cloud Hub: Architecture & Operations + +## 🌐 Global Architecture +* **Compute:** Linode 2GB Shared Instance (Chicago/us-ord) +* **OS:** Ubuntu 22.04 LTS +* **Ingress:** Cloudflare Zero Trust (Tunnels) with MFA/WARP +* **Backups:** Nightly (2:00 AM) to Linode Object Storage (S3) via `rclone` + +## 🏗️ Docker Network Topology +| Network | Driver | Purpose | +| :--- | :--- | :--- | +| `web_gateway` | bridge (ext) | External traffic from Cloudflare to containers | +| `db_network` | bridge (ext) | Private traffic between Apps and Postgres | + +## 📦 Service Inventory +| Service | URL | Directory | Database | +| :--- | :--- | :--- | :--- | +| **Dashboard** | `home.davisdre.com` | `/opt/docker/dashboard` | Static (Nginx) | +| **Gitea** | `git.davisdre.com` | `/opt/docker/gitea` | `gitea` (Postgres) | +| **Linkwarden** | `links.davisdre.com` | `/opt/docker/linkwarden` | `linkwarden` (Postgres) | +| **FreshRSS** | `news.davisdre.com` | `/opt/docker/freshrss` | `freshrss` (Postgres) | +| **Memos** | `memos.davisdre.com` | `/opt/docker/memos` | `memos` (Postgres) | +| **Surmai** | `travel.davisdre.com` | `/opt/docker/surmai` | Internal SQLite | +| **Postgres** | *Internal Only* | `/opt/docker/global-db` | **Universal DB** | + +--- + +## 🛠️ Standard Operating Procedures (SOPs) + +### 1. Updating the Dashboard +1. Modify `index.html` on local PC. +2. `git add . && git commit -m "update" && git push` +3. On Linode, run: `updatedash` (alias for `/opt/docker/dashboard/update-dash.sh`) + +### 2. Adding a New App (Postgres-backed) +Run these commands to provision the DB before deploying the container: + +```bash +# 1. Update global-db/compose.yaml environment list first +# 2. Manually provision the DB (Live Instance) +docker exec -it global_postgres psql -U postgres -c "CREATE DATABASE app_name;" +docker exec -it global_postgres psql -U postgres -c "CREATE USER app_name WITH PASSWORD 'my-custom-password';" +docker exec -it global_postgres psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE app_name TO app_name;" +docker exec -it global_postgres psql -U postgres -c "ALTER DATABASE app_name OWNER TO app_name;" \ No newline at end of file