diff --git a/README.md b/README.md index 7863170..bff58f9 100644 --- a/README.md +++ b/README.md @@ -56,91 +56,48 @@ ShadowBroker includes an optional Shodan connector for operator-supplied API acc --- -## ⚑ Quick Start (Docker or Podman) - -Linux/Mac +## ⚑ Quick Start (Docker) ```bash git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker -./compose.sh up -d +docker compose pull +docker compose up -d ``` -Windows +Open `http://localhost:3000` to view the dashboard! *(Requires [Docker Desktop](https://www.docker.com/products/docker-desktop/) or Docker Engine)* -```bash -git clone https://github.com/BigBodyCobain/Shadowbroker.git -cd Shadowbroker -docker-compose up -d -``` - -Open `http://localhost:3000` to view the dashboard! *(Requires Docker or Podman)* - -`compose.sh` auto-detects `docker compose`, `docker-compose`, `podman compose`, and `podman-compose`. -If both runtimes are installed, you can force Podman with `./compose.sh --engine podman up -d`. -Do not append a trailing `.` to that command; Compose treats it as a service name. +> **Podman users:** Replace `docker compose` with `podman compose`, or use the `compose.sh` wrapper which auto-detects your engine. Force Podman with `./compose.sh --engine podman up -d`. --- ## πŸ”„ **How to Update** -If you are coming from v0.9.5 or older, you must pull the new code and rebuild your containers to get the InfoNet testnet, Shodan integration, train tracking, 8 new intelligence layers, and all performance fixes in v0.9.6. +ShadowBroker uses pre-built Docker images β€” no local building required. Updating takes seconds: -### 🐧 **Linux & 🍎 macOS** (Terminal / Zsh / Bash) - -Since these systems are Unix-based, you can use the helper script directly. - -**Pull the latest code:** ```bash -git pull origin main -``` -**Run the update script:** -```bash -./compose.sh down -./compose.sh up --build -d +docker compose pull +docker compose up -d ``` -### πŸͺŸ **Windows** (Command Prompt or PowerShell) +That's it. `pull` grabs the latest images, `up -d` restarts the containers. -Windows handles scripts differently. You have two ways to update: - -**Method A: The Direct Way (Recommended)** -Use the docker compose commands directly. This works in any Windows terminal (CMD, PowerShell, or Windows Terminal). - -**Pull the latest code:** -```DOS -git pull origin main -``` - -**Rebuild the containers:** -```DOS -docker compose down -docker compose up --build -d -``` - -**Method B: Using the Script (Git Bash)** - -If you prefer using the ./compose.sh script on Windows, you must use Git Bash (installed with Git for Windows). - -Open your project folder, Right-Click, and select "Open Git Bash here". - -**Run the Linux commands:** -```bash -./compose.sh down -./compose.sh up --build -d -``` - ---- +> **Coming from an older version?** Pull the latest repo code first, then pull images: +> +> ```bash +> git pull origin main +> docker compose down +> docker compose pull +> docker compose up -d +> ``` ### ⚠️ **Stuck on the old version?** **If the dashboard still shows old data after updating:** -**Clear Docker Cache:** docker compose build --no-cache - -**Prune Images:** docker image prune -f - -**Check Logs:** ./compose.sh logs -f backend (or docker compose logs -f backend) +* **Force re-pull:** `docker compose pull --no-cache` +* **Prune old images:** `docker image prune -f` +* **Check logs:** `docker compose logs -f backend` --- @@ -322,48 +279,58 @@ The first decentralized intelligence communication layer built directly into an ## πŸ—οΈ Architecture ``` -β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ FRONTEND (Next.js) β”‚ -β”‚ β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ MapLibre GL β”‚ β”‚ NewsFeed β”‚ β”‚ Control β”‚ β”‚ Mesh β”‚ β”‚ -β”‚ β”‚ 2D WebGL β”‚ β”‚ SIGINT β”‚ β”‚ Panels β”‚ β”‚ Chat β”‚ β”‚ -β”‚ β”‚ Map Render β”‚ β”‚ Intel β”‚ β”‚ Radio β”‚ β”‚Terminal β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β”‚ β”‚ REST + WebSocket β”‚ -β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ -β”‚ BACKEND (FastAPI) β”‚ -β”‚ β”‚ β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ Data Fetcher (Scheduler) β”‚ β”‚ -β”‚ β”‚ β”‚ β”‚ -β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ -β”‚ β”‚ β”‚ OpenSky β”‚ adsb.lol β”‚CelesTrak β”‚ USGS β”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ Flights β”‚ Military β”‚ Sats β”‚ Quakes β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ -β”‚ β”‚ β”‚ AIS WS β”‚ Carrier β”‚ GDELT β”‚ CCTV (13) β”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ Ships β”‚ Tracker β”‚ Conflict β”‚ Cameras β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ -β”‚ β”‚ β”‚ DeepStateβ”‚ RSS β”‚ Region β”‚ GPS β”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ Frontlineβ”‚ Intel β”‚ Dossier β”‚ Jamming β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ -β”‚ β”‚ β”‚ NASA β”‚ NOAA β”‚ IODA β”‚ KiwiSDR β”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ FIRMS β”‚ Space Wxβ”‚ Outages β”‚ Radios β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ -β”‚ β”‚ β”‚ Shodan β”‚ Amtrak β”‚ SatNOGS β”‚ Meshtasticβ”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ Devices β”‚ Trains β”‚ TinyGS β”‚ APRS β”‚ β”‚ β”‚ -β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ -β”‚ β”‚ β”‚ Volcanoesβ”‚ Weather β”‚ Fishing β”‚ Mil Bases β”‚ β”‚ β”‚ -β”‚ β”‚ β”‚ Air Qual.β”‚ Alerts β”‚ Activity β”‚Power Plantβ”‚ β”‚ β”‚ -β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β”‚ β”‚ -β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ -β”‚ β”‚ Wormhole / InfoNet Relay β”‚ β”‚ -β”‚ β”‚ Gate Personas β”‚ Canonical Signing β”‚ Dead Drop DMs β”‚ β”‚ -β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ -β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ FRONTEND (Next.js) β”‚ +β”‚ β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ MapLibre GL β”‚ β”‚ NewsFeed β”‚ β”‚ Control β”‚ β”‚ Mesh β”‚ β”‚ +β”‚ β”‚ 2D WebGL β”‚ β”‚ SIGINT β”‚ β”‚ Panels β”‚ β”‚ Chat β”‚ β”‚ +β”‚ β”‚ Map Render β”‚ β”‚ Intel β”‚ β”‚ Radio β”‚ β”‚ Terminal β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β”‚ REST + WebSocket β”‚ +β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ +β”‚ BACKEND (FastAPI) β”‚ +β”‚ β”‚ β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ Data Fetcher (Scheduler) β”‚ β”‚ +β”‚ β”‚ β”‚ β”‚ +β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ +β”‚ β”‚ β”‚ OpenSky β”‚ adsb.lol β”‚ CelesTrak β”‚ USGS β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Flights β”‚ Military β”‚ Sats β”‚ Quakes β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ AIS WS β”‚ Carrier β”‚ GDELT β”‚ CCTV (13) β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Ships β”‚ Tracker β”‚ Conflict β”‚ Cameras β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ DeepState β”‚ RSS β”‚ Region β”‚ GPS β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Frontline β”‚ Intel β”‚ Dossier β”‚ Jamming β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ NASA β”‚ NOAA β”‚ IODA β”‚ KiwiSDR β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ FIRMS β”‚ Space Wx β”‚ Outages β”‚ Radios β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ Shodan β”‚ Amtrak β”‚ SatNOGS β”‚Meshtastic β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Devices β”‚ DigiTraf β”‚ TinyGS β”‚ APRS β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ Volcanoes β”‚ Weather β”‚ Fishing β”‚ Mil Bases β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Air Qual. β”‚ Alerts β”‚ Activity β”‚Pwr Plants β”‚ β”‚ β”‚ +β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ +β”‚ β”‚ β”‚ Sentinel β”‚ MODIS β”‚ VIIRS β”‚ Data β”‚ β”‚ β”‚ +β”‚ β”‚ β”‚ Hub/STAC β”‚ Terra β”‚ Nightlts β”‚ Centers β”‚ β”‚ β”‚ +β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ Wormhole / InfoNet Relay β”‚ β”‚ +β”‚ β”‚ Gate Personas β”‚ Canonical Signing β”‚ Dead Drop DMs β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β”‚ β”‚ +β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ +β”‚ β”‚ GHCR (Pre-built Images) β”‚ β”‚ +β”‚ β”‚ ghcr.io/bigbodycobain/shadowbroker-backend:latest β”‚ β”‚ +β”‚ β”‚ ghcr.io/bigbodycobain/shadowbroker-frontend:latest β”‚ β”‚ +β”‚ β”‚ Multi-arch: linux/amd64 + linux/arm64 β”‚ β”‚ +β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- @@ -418,15 +385,16 @@ The first decentralized intelligence communication layer built directly into an ## πŸš€ Getting Started -### 🐳 Docker / Podman Setup (Recommended for Self-Hosting) +### 🐳 Docker Setup (Recommended for Self-Hosting) -The repo includes a `docker-compose.yml` that builds both images locally. +The repo includes a `docker-compose.yml` that pulls pre-built images from the GitHub Container Registry. ```bash git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker # Add your API keys in a repo-root .env file (optional β€” see Environment Variables below) -./compose.sh up -d +docker compose pull +docker compose up -d ``` Open `http://localhost:3000` to view the dashboard. @@ -452,8 +420,7 @@ Open `http://localhost:3000` to view the dashboard. > # BACKEND_URL=http://myserver.com:9096 > ``` -If you prefer to call the container engine directly, Podman users can run `podman compose up -d`, or force the wrapper to use Podman with `./compose.sh --engine podman up -d`. -Depending on your local Podman configuration, `podman compose` may still delegate to an external compose provider while talking to the Podman socket. +**Podman users:** Replace `docker compose` with `podman compose`, or use the `compose.sh` wrapper which auto-detects your engine. --- @@ -517,9 +484,8 @@ If you just want to run the dashboard without dealing with terminal commands: Local launcher notes: -- `start.bat` / `start.sh` currently run the hardened web/local stack, not the final native desktop boundary. -- Security-sensitive paths are hardened up to the pre-Tauri boundary, but operator-facing responsiveness still matters and is part of the acceptance bar. -- If Wormhole identity or DM contact endpoints fail after an upgrade on Windows, see `F:\Codebase\Oracle\live-risk-dashboard\docs\mesh\pre-tauri-phase-closeout.md` for the secure-storage repair workflow. +- `start.bat` / `start.sh` run the app without Docker β€” they install dependencies and start both servers directly. +- If Wormhole identity or DM contact endpoints fail after an upgrade, check the `docs/mesh/` folder for troubleshooting. --- diff --git a/backend/Dockerfile b/backend/Dockerfile index 68f473f..0f2b3fc 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,5 +1,5 @@ # ---- Stage 1: Compile privacy-core Rust library ---- -FROM rust:1.87-slim-bookworm AS rust-builder +FROM rust:1.88-slim-bookworm AS rust-builder RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config libssl-dev \