# Infrastructure Map - Amraj's Homelab & Cloud

## Topic
Complete infrastructure map showing physical hardware, Proxmox virtualization, Docker services, cloud infrastructure, Tailscale mesh, and backup flows.

## Physical Hardware Layer
- **Fastweb Modem** (WAN gateway)
- **Powerline AV1000** (Ethernet over electrical)
- **Switch 5 Porte** (5-port unmanaged switch)
- **ThinkPad T495** (DHCP LAN, 100.126.188.38 Tailscale - offline)
- **Dell Optiplex 3060 SFF** → Proxmox Host (192.168.1.200 / 100.92.204.81 Tailscale)
  - Hardware: i5-8500T, 32GB RAM, 512GB + 2TB storage

## Proxmox Virtualization Layer (pve - 192.168.1.200)

### VM 100 - Ubuntu Docker Host (192.168.1.51)
**Docker Services (24 containers):**
- **nginx-proxy-manager** (jc21/nginx-proxy-manager) - Ports 80/443/81 - Reverse proxy centrale per *.svoraj.me
- **portainer** (portainer/portainer-ce) - Port 9443/8080 - portainer.svoraj.me
- **adguard-sync** (bakito/adguardhome-sync) - Port 8080 - Sync con AdGuard CT 101
- **homepage** (gethomepage/homepage) - Port 3000 - home.svoraj.me (dashboard)
- **nextcloud** (nextcloud:stable + postgres) - Port 8082 - cloud.svoraj.me
- **paperless-ngx** (paperless-ngx + redis) - Port 8000 - docs.svoraj.me
- **stirling-pdf** (frooodle/s-pdf) - Port 8084 - pdf.svoraj.me
- **open-webui** (ghcr.io/open-webui/open-webui) - Port 3080 - ai.svoraj.me
- **vinted-tracker** (vinted_tracker) - Internal only
- **dozzle** (amir20/dozzle) - Port 8083 - logs.svoraj.me
- **scrutiny** (analogj/scrutiny) - Ports 7000/8081 - hdd.svoraj.me
- **netdata** (netdata/netdata) - Port 19999 - metrics.svoraj.me
- **crowdsec** (crowdsecurity/crowdsec) - Port 8090 - SIEM
- **watchtower** (containrrr/watchtower) - Auto-update
- **cloudflare-tunnel** (cloudflare/cloudflared) - Zero Trust Tunnel
- **autoheal** (willfarrell/autoheal) - Restart unhealthy containers
- **honeygain_miner** (honeygain/honeygain) - Passive income
- **earnapp_miner** (earnapp:lite) - Passive income

**Docker Networks:** 14 custom bridges (172.16-30.0.0/16 ranges)

### LXC Containers
- **CT 101 - AdGuard** (192.168.1.59 / 100.79.17.56 Tailscale) - DNS filtering
- **CT 102 - Proxmox Backup Server** (192.168.1.75) - PBS target
- **CT 103 - Immich** (192.168.1.50) - Photo management
- **CT 104 - Tailscale Exit Node** (192.168.1.79 / 100.127.83.92) - Exit node
- **CT 105 - Tailscale HA Exit** (192.168.1.80 / 100.119.176.28) - HA exit node

### Nginx Proxy Manager (11 Proxy Hosts)
All *.svoraj.me with Let's Encrypt wildcard SSL (npm-7 cert):
1. portainer.svoraj.me → 192.168.1.51:8080
2. pve.svoraj.me → 192.168.1.200:8006 (HTTPS backend)
3. dns.svoraj.me → 192.168.1.59:80 (AdGuard)
5. home.svoraj.me → 192.168.1.51:3000 (Homepage)
7. backup.svoraj.me → 192.168.1.75:8007 (PBS)
8. npm.svoraj.me → 192.168.1.51:81 (NPM admin)
9. foto.svoraj.me → 192.168.1.50:2283 (Immich)
12. n8n.svoraj.me → 100.103.216.59:5678 (Oracle ARM via Tailscale)
15. noc.svoraj.me → 100.108.170.2:3001 (Oracle 1GB via Tailscale) **FIXED**
16. ai.svoraj.me → 192.168.1.51:3080 (Open WebUI)

## Cloud Infrastructure

### Oracle Cloud ARM 24GB (Primary Cloud)
- Hostname: testsvo-683465
- Tailscale IP: 100.103.216.59
- Docker: n8n:5678, ollama:11434, glances
- Ghost Agency Cron Jobs: 7 automated jobs (briefing, radar, mailer, sniper, social, competitor, call-followup)

### Oracle Cloud 1GB (Micro) - ONLINE
- Hostname: testsvo
- Tailscale IP: 100.108.170.2
- NOC Dashboard: http://100.108.170.2:3001 → noc.svoraj.me (via NPM proxy 15)
- Status: ONLINE, responding HTTP 200

### Oracle Cloud 1GB (ArchLinux) - OFFLINE
- Hostname: archlinux
- Tailscale IP: 100.84.44.111
- Status: OFFLINE (was old noc target)

### Tailscale Mesh Network (tail9511a7.ts.net)
| Node | Tailscale IP | Online | Role |
|------|--------------|--------|------|
| pve | 100.92.204.81 | ✅ | Proxmox |
| adguard | 100.79.17.56 | ✅ | CT 101 |
| tailscale | 100.127.83.92 | ✅ | CT 104 Exit |
| tailscale-ha | 100.119.176.28 | ✅ | CT 105 HA Exit |
| testsvo | 100.108.170.2 | ✅ | Oracle 1GB NOC |
| testsvo-683465 | 100.103.216.59 | Self | Oracle ARM 24GB |
| archlinux | 100.84.44.111 | ❌ | Offline |
| svo | 100.90.44.21 | ❌ | Windows offline |
| localhost | 100.126.188.38 | ❌ | ThinkPad T495 offline |

## Cloudflare Zero Trust Tunnel
- Container: cloudflare-tunnel on VM 100
- Tunnel ID: via Cloudflare dashboard
- Public Hostnames: *.svoraj.me → Cloudflare edge → Tunnel → VM 100 NPM
- Issue: QUIC connection instability, noc.svoraj.me timing out

## Backup & Storage

### Proxmox Backup Server (CT 102)
- Target: PBS local + Scaleway S3 (to configure)
- Schedule: Sun 01:00, snapshot mode, excludes CT 102 itself

### Scaleway Object Storage (To Configure)
- Provider: Scaleway
- Endpoint: s3.fr-par.scw.cloud
- Region: fr-par (Paris)
- Purpose: Proxmox PBS offsite backup + Immich library backup

## Removed / Not Present
- **Authelia**: Removed (confirmed)
- **Uptime Kuma**: Not deployed
- **Google e2-micro**: Not present
- **Google Cloud**: Not configured

## Learning Objectives
1. Visualize complete infrastructure from physical to cloud
2. Show Tailscale mesh topology connecting all nodes
3. Display NPM proxy routing for all *.svoraj.me domains
4. Illustrate backup flow: Proxmox → PBS → Scaleway S3
5. Show Cloudflare Tunnel path for public access
5. Highlight Oracle 1GB fix (IP updated in NPM)
6. Display all 24 Docker services organized by category

## Design Instructions
- Technical schematic style (blueprint/engineering aesthetic)
- Structural breakdown layout (exploded view showing layers)
- Color-code by layer: Physical (orange), Proxmox (pink), Docker (cyan), LXC (green), Cloud (amber), Storage (purple)
- Show Tailscale mesh as dashed lines
- Show backup flow as dotted purple line
- Include IP addresses and port numbers
- Mark offline nodes in red/gray
- Mark fixed Oracle 1GB with green checkmark