2.1 KiB
2.1 KiB
🛡️ 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
- Modify
index.htmlon local PC. git add . && git commit -m "update" && git push- 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:
# 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;"