diff --git a/admin/app/services/collection_manifest_service.ts b/admin/app/services/collection_manifest_service.ts index bc69368..0eb0f46 100644 --- a/admin/app/services/collection_manifest_service.ts +++ b/admin/app/services/collection_manifest_service.ts @@ -22,12 +22,20 @@ import type { SpecTier, } from '../../types/collections.js' -const SPEC_URLS: Record = { - zim_categories: 'https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/collections/kiwix-categories.json', - maps: 'https://github.com/Crosstalk-Solutions/project-nomad/raw/refs/heads/main/collections/maps.json', - wikipedia: 'https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/collections/wikipedia.json', +const DEFAULT_COLLECTIONS_BASE = 'https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main' + +function getSpecUrls(): Record { + const base = process.env.NOMAD_COLLECTIONS_BASE_URL || DEFAULT_COLLECTIONS_BASE + const baseNorm = base.replace(/\/$/, '') + return { + zim_categories: `${baseNorm}/collections/kiwix-categories.json`, + maps: `${baseNorm}/collections/maps.json`, + wikipedia: `${baseNorm}/collections/wikipedia.json`, + } } +const SPEC_URLS = getSpecUrls() + const VALIDATORS: Record = { zim_categories: zimCategoriesSpecSchema, maps: mapsSpecSchema, diff --git a/admin/docs/release-notes.md b/admin/docs/release-notes.md index 74583e6..0647536 100644 --- a/admin/docs/release-notes.md +++ b/admin/docs/release-notes.md @@ -1,5 +1,16 @@ # Release Notes +## Unreleased + +### Features +- **Collections**: Added Kiwix ZIM categories for German/Austria (DACH): "Deutsch & Österreich" with Wikipedia DE, Wiktionary, Wikibooks, Wikivoyage, Wikipedia Medizin, Klexikon, Koch-Wiki, and iFixit DE; "Militär & Taktik" (US Army Publications, Gutenberg Military Science, FAS Military Medicine); "Kommunikation & Sicherheit" (Ham Radio Q&A, Security Q&A); "Energie & Off-Grid" (Low Tech Magazine, 100 Rabbits) +- **Collections**: Added map collection entries for Europe and Oberösterreich (Steyr, Garsten) with placeholder for user-supplied PMTiles +- **Settings**: Optional `NOMAD_COLLECTIONS_BASE_URL` to load collection specs (kiwix-categories, maps, wikipedia) from a fork or custom URL instead of the default GitHub raw URL +- **Install**: Added NOMAD-DATA PDF/download manifest (`install/nomad-data-pdf-urls.txt`) and script (`install/download-nomad-data-pdfs.sh`) for automated download of BBK, DGUV, FEMA, WHO, Zivilschutz AT, and other public-domain/preparedness PDFs into a structured folder + +### Improvements +- **Docs**: Added `install/NOMAD-DATA-DOWNLOADS.md` with instructions for collections base URL, PDF script usage, RAG integration, and optional Austria PMTiles extract + ## Version 1.29.0 - March 11, 2026 ### Features diff --git a/admin/start/env.ts b/admin/start/env.ts index ddf9b5f..72c54ef 100644 --- a/admin/start/env.ts +++ b/admin/start/env.ts @@ -27,6 +27,12 @@ export default await Env.create(new URL('../', import.meta.url), { */ NOMAD_STORAGE_PATH: Env.schema.string.optional(), + /** + * Optional path to NOMAD-DATA folder (e.g. /storage/nomad_data). + * When set, the RAG sync will also scan 10_EIGENE_PDFS_RAG for PDFs, text, and images to embed. + */ + NOMAD_DATA_PATH: Env.schema.string.optional(), + /* |---------------------------------------------------------- | Variables for configuring session package @@ -60,4 +66,12 @@ export default await Env.create(new URL('../', import.meta.url), { |---------------------------------------------------------- */ NOMAD_API_URL: Env.schema.string.optional(), + + /** + * Optional base URL for collection specs (kiwix-categories, maps, wikipedia). + * If set, replaces the default GitHub raw URL. Example for your fork: + * NOMAD_COLLECTIONS_BASE_URL=https://raw.githubusercontent.com/YOUR_USER/project-nomad/refs/heads/main + * Then the app fetches .../collections/kiwix-categories.json etc. So new ZIM categories go live after push. + */ + NOMAD_COLLECTIONS_BASE_URL: Env.schema.string.optional(), }) diff --git a/collections/kiwix-categories.json b/collections/kiwix-categories.json index f428609..65689b7 100644 --- a/collections/kiwix-categories.json +++ b/collections/kiwix-categories.json @@ -132,7 +132,7 @@ { "name": "Standard", "slug": "survival-standard", - "description": "Bug-out strategies and urban survival techniques. Includes everything in Essential.", + "description": "Bug-out strategies, urban survival, and Survivor Library. Includes everything in Essential.", "includesTier": "survival-essential", "resources": [ { @@ -150,13 +150,21 @@ "description": "Comprehensive urban emergency preparedness video series", "url": "https://download.kiwix.org/zim/videos/urban-prepper_en_all_2025-11.zim", "size_mb": 2240 + }, + { + "id": "survivorlibrary.com_en_all", + "version": "2026-03", + "title": "Survivor Library", + "description": "Umfassende Offline-Bibliothek für Selbstversorgung, alte Handwerke, Pre-Industrial-Techniken", + "url": "https://download.kiwix.org/zim/zimit/survivorlibrary.com_en_all_2026-03.zim", + "size_mb": 2700 } ] }, { "name": "Comprehensive", "slug": "survival-comprehensive", - "description": "Complete prepper library with food storage strategies and classic military strategy. Includes everything in Standard.", + "description": "FEMA Ready.gov, CD3WD und Food Prepping. Includes everything in Standard.", "includesTier": "survival-standard", "resources": [ { @@ -168,12 +176,20 @@ "size_mb": 2160 }, { - "id": "gutenberg_en_lcc-u", - "version": "2026-03", - "title": "Project Gutenberg: Military Science", - "description": "Classic military strategy, tactics, and field manuals", - "url": "https://download.kiwix.org/zim/gutenberg/gutenberg_en_lcc-u_2026-03.zim", - "size_mb": 1200 + "id": "www.ready.gov_en", + "version": "2024-12", + "title": "Ready.gov (FEMA)", + "description": "FEMA emergency preparedness komplett offline", + "url": "https://download.kiwix.org/zim/zimit/www.ready.gov_en_2024-12.zim", + "size_mb": 2300 + }, + { + "id": "cd3wdproject.org_en_all", + "version": "2025-11", + "title": "CD3WD", + "description": "Off-Grid-Technologien, Wasserversorgung, Lebensmittelverarbeitung für Krisengebiete", + "url": "https://download.kiwix.org/zim/zimit/cd3wdproject.org_en_all_2025-11.zim", + "size_mb": 554 } ] } @@ -614,6 +630,250 @@ ] } ] + }, + { + "name": "Deutsch & Österreich", + "slug": "german", + "icon": "IconLanguage", + "description": "Deutschsprachige Offline-Inhalte: Wikipedia DE, Medizin, Wikibooks, Wiktionary, Wikivoyage für Österreich und DACH.", + "language": "de", + "tiers": [ + { + "name": "Essential", + "slug": "german-essential", + "description": "Top Wikipedia-Artikel und deutsches Wörterbuch. Leichtgewichtig für den Einstieg.", + "recommended": true, + "resources": [ + { + "id": "wikipedia_de_top_mini", + "version": "2026-01", + "title": "Wikipedia DE Top", + "description": "Die wichtigsten deutschsprachigen Wikipedia-Artikel", + "url": "https://download.kiwix.org/zim/wikipedia/wikipedia_de_top_mini_2026-01.zim", + "size_mb": 122 + }, + { + "id": "wiktionary_de_all_nopic", + "version": "2026-01", + "title": "Wiktionary DE", + "description": "Deutsches Wörterbuch offline", + "url": "https://download.kiwix.org/zim/wiktionary/wiktionary_de_all_nopic_2026-01.zim", + "size_mb": 1200 + } + ] + }, + { + "name": "Standard", + "slug": "german-standard", + "description": "Medizin und Lehrbücher auf Deutsch. Inkl. Essential.", + "includesTier": "german-essential", + "resources": [ + { + "id": "wikipedia_de_medicine_maxi", + "version": "2026-01", + "title": "Wikipedia Medizin DE", + "description": "Medizin-Artikel der deutschen Wikipedia mit Bildern", + "url": "https://download.kiwix.org/zim/wikipedia/wikipedia_de_medicine_maxi_2026-01.zim", + "size_mb": 433 + }, + { + "id": "wikibooks_de_all_nopic", + "version": "2026-01", + "title": "Wikibooks DE", + "description": "Offene Lehrbücher: Garten, Reparatur, Haustechnik, Naturwissenschaften", + "url": "https://download.kiwix.org/zim/wikibooks/wikibooks_de_all_nopic_2026-01.zim", + "size_mb": 2700 + }, + { + "id": "klexikon_de_all_maxi", + "version": "2026-02", + "title": "Klexikon DE", + "description": "Kinder-Enzyklopädie für einfache Erklärungen", + "url": "https://download.kiwix.org/zim/other/klexikon_de_all_maxi_2026-02.zim", + "size_mb": 138 + }, + { + "id": "kochwiki.org_de_all_maxi", + "version": "2026-01", + "title": "Koch-Wiki DE", + "description": "Kochrezepte und Küchenwissen offline", + "url": "https://download.kiwix.org/zim/other/kochwiki.org_de_all_maxi_2026-01.zim", + "size_mb": 66 + } + ] + }, + { + "name": "Comprehensive", + "slug": "german-comprehensive", + "description": "Komplette deutsche Wikipedia und Wikivoyage. Inkl. Standard.", + "includesTier": "german-standard", + "resources": [ + { + "id": "wikipedia_de_all_nopic", + "version": "2026-01", + "title": "Wikipedia DE komplett", + "description": "Gesamte deutschsprachige Wikipedia ohne Bilder", + "url": "https://download.kiwix.org/zim/wikipedia/wikipedia_de_all_nopic_2026-01.zim", + "size_mb": 14000 + }, + { + "id": "wikivoyage_de_all_maxi", + "version": "2026-01", + "title": "Wikivoyage DE", + "description": "Reise- und Geländeinfos für Österreich, Deutschland, Schweiz", + "url": "https://download.kiwix.org/zim/wikivoyage/wikivoyage_de_all_maxi_2026-01.zim", + "size_mb": 1200 + }, + { + "id": "ifixit_de_all", + "version": "2025-06", + "title": "iFixit DE", + "description": "Reparatur-Anleitungen für Geräte und DIY", + "url": "https://download.kiwix.org/zim/ifixit/ifixit_de_all_2025-06.zim", + "size_mb": 3200 + } + ] + } + ] + }, + { + "name": "Militär & Taktik", + "slug": "military", + "icon": "IconShield", + "description": "US Army Field Manuals, Nahkampf, Unconventional Warfare, Militärmedizin und klassische Taktik.", + "language": "en", + "tiers": [ + { + "name": "Essential", + "slug": "military-essential", + "description": "Alle US Army Publications: Field Manuals (FM), ATP, ADP, TC inkl. Combatives, Unconventional Warfare.", + "recommended": true, + "resources": [ + { + "id": "armypubs_en_all", + "version": "2024-12", + "title": "US Army Publications", + "description": "Alle deklassifizierten Field Manuals: Nahkampf (FM 3-25.150), Guerrilla (FM 3-05.130), Survival, Infanterie, u.v.m.", + "url": "https://download.kiwix.org/zim/zimit/armypubs_en_all_2024-12.zim", + "size_mb": 7700 + } + ] + }, + { + "name": "Standard", + "slug": "military-standard", + "description": "Klassische Militärwissenschaft und Taktik. Inkl. Essential.", + "includesTier": "military-essential", + "resources": [ + { + "id": "gutenberg_en_lcc-u", + "version": "2026-03", + "title": "Project Gutenberg: Military Science", + "description": "Klassische Texte zu Strategie, Taktik und Feldhandbüchern", + "url": "https://download.kiwix.org/zim/gutenberg/gutenberg_en_lcc-u_2026-03.zim", + "size_mb": 1200 + } + ] + }, + { + "name": "Comprehensive", + "slug": "military-comprehensive", + "description": "Militärmedizin als Querverweis. Inkl. Standard.", + "includesTier": "military-standard", + "resources": [ + { + "id": "fas-military-medicine_en", + "version": "2025-06", + "title": "FAS Military Medicine", + "description": "Taktische und Feldmedizin-Handbücher", + "url": "https://download.kiwix.org/zim/zimit/fas-military-medicine_en_2025-06.zim", + "size_mb": 78 + } + ] + } + ] + }, + { + "name": "Kommunikation & Sicherheit", + "slug": "communications", + "icon": "IconRadio", + "description": "Amateurfunk (Ham Radio), Baofeng UV-5R, ATAK/CivTAK (Android Team Awareness Kit), OPSEC und IT-Sicherheit für Notfallkommunikation. ATAK/CivTAK- und Baofeng-Anleitungen (kein ZIM) in NOMAD-DATA/07_FUNK oder 10_EIGENE_PDFS_RAG ablegen.", + "language": "en", + "tiers": [ + { + "name": "Essential", + "slug": "communications-essential", + "description": "Ham Radio Q&A: Frequenzen, Antennen, Lizenzen, Baofeng UV-5R-Betrieb. Meshtastic/LoRa, ATAK/CivTAK und Baofeng UV-5R-Anleitungen (tak.gov, Miklor, CHIRP) als PDF in NOMAD-DATA ablegen.", + "recommended": true, + "resources": [ + { + "id": "ham.stackexchange.com_en_all", + "version": "2026-02", + "title": "Ham Radio Q&A", + "description": "Stack Exchange zu Amateurfunk, Antennen, Ausbreitung, Betrieb", + "url": "https://download.kiwix.org/zim/stack_exchange/ham.stackexchange.com_en_all_2026-02.zim", + "size_mb": 72 + } + ] + }, + { + "name": "Standard", + "slug": "communications-standard", + "description": "IT-Sicherheit und OPSEC. Inkl. Essential.", + "includesTier": "communications-essential", + "resources": [ + { + "id": "security.stackexchange.com_en_all", + "version": "2026-02", + "title": "Security Q&A", + "description": "Verschlüsselung, Anonymität, sichere Kommunikation", + "url": "https://download.kiwix.org/zim/stack_exchange/security.stackexchange.com_en_all_2026-02.zim", + "size_mb": 420 + } + ] + } + ] + }, + { + "name": "Energie & Off-Grid", + "slug": "energy", + "icon": "IconBolt", + "description": "Solar, Wärmepumpen, Wasserversorgung und nachhaltige Technik für autarke Versorgung.", + "language": "en", + "tiers": [ + { + "name": "Essential", + "slug": "energy-essential", + "description": "Low Tech Magazine: Solar, Wärmepumpen, Wasser, nachhaltige Haustechnik.", + "recommended": true, + "resources": [ + { + "id": "solar.lowtechmagazine.com_mul_all", + "version": "2025-01", + "title": "Low Tech Magazine (Solar)", + "description": "Solar, Wärmepumpen, Wasserversorgung, Low-Tech-Lösungen", + "url": "https://download.kiwix.org/zim/zimit/solar.lowtechmagazine.com_mul_all_2025-01.zim", + "size_mb": 668 + } + ] + }, + { + "name": "Standard", + "slug": "energy-standard", + "description": "Off-Grid-Werkzeuge und Selbstversorgung. Inkl. Essential.", + "includesTier": "energy-essential", + "resources": [ + { + "id": "100r.co_en_all", + "version": "2026-02", + "title": "100 Rabbits", + "description": "Off-Grid-Leben, Energie, Werkzeuge, Selbstversorgung", + "url": "https://download.kiwix.org/zim/zimit/100r.co_en_all_2026-02.zim", + "size_mb": 160 + } + ] + } + ] } ] } diff --git a/collections/maps.json b/collections/maps.json index a4279d2..bfc499b 100644 --- a/collections/maps.json +++ b/collections/maps.json @@ -481,6 +481,40 @@ "size_mb": 400 } ] + }, + { + "name": "Europe", + "slug": "europe", + "description": "Offline-Karte für ganz Europa (Protomaps-Basemaps). Wanderwege, POIs und Wasserquellen. Kein Direkt-Download – Builds: https://maps.protomaps.com/builds | Anleitung: /docs/offline-karten-europa", + "icon": "IconMap", + "language": "de", + "resources": [ + { + "id": "europe", + "version": "2025-03", + "title": "Europa", + "description": "Ganz Europa. Bitte per „Eigenes Kartenfile herunterladen“ mit eigener URL hinzufügen oder Datei manuell in storage/maps/pmtiles/ ablegen.", + "url": null, + "size_mb": 5000 + } + ] + }, + { + "name": "Oberösterreich (Steyr, Garsten)", + "slug": "oberoesterreich", + "description": "Hohe Auflösung für Oberösterreich, Steyr und Garsten. Wanderwege, POIs, Wasserquellen. Kein Direkt-Download – Builds: https://maps.protomaps.com/builds | Anleitung: /docs/offline-karten-europa", + "icon": "IconMap", + "language": "de", + "resources": [ + { + "id": "oberoesterreich", + "version": "2025-03", + "title": "Oberösterreich (Steyr, Garsten)", + "description": "Hohe Auflösung. Bitte per „Eigenes Kartenfile herunterladen“ mit eigener URL hinzufügen oder Datei manuell in storage/maps/pmtiles/ ablegen.", + "url": null, + "size_mb": 500 + } + ] } ] } diff --git a/install/NOMAD-DATA-DOWNLOADS.md b/install/NOMAD-DATA-DOWNLOADS.md new file mode 100644 index 0000000..441a6af --- /dev/null +++ b/install/NOMAD-DATA-DOWNLOADS.md @@ -0,0 +1,79 @@ +# NOMAD-DATA PDFs & Docs herunterladen + +Dieses Skript lädt alle in `nomad-data-pdf-urls.txt` eingetragenen PDFs und Ressourcen in eine NOMAD-DATA-Ordnerstruktur. + +## 1. Live: Neue ZIM-Kategorien + +Die neuen ZIM-Kategorien (Deutsch & Österreich, Militär & Taktik, Kommunikation, Energie & Off-Grid) sind in `collections/kiwix-categories.json` eingetragen. + +- **Wenn du das offizielle Repo (Crosstalk-Solutions) nutzt:** Nach Push auf `main` lädt die App die neue Spec von GitHub – in der Oberfläche unter **Einstellungen → Content Explorer** „Collections aktualisieren“ o.ä., dann erscheinen die neuen Kategorien. +- **Eigenes Fork:** Setze die Umgebungsvariable + `NOMAD_COLLECTIONS_BASE_URL=https://raw.githubusercontent.com/DEIN_USER/project-nomad/refs/heads/main` + (z.B. in `compose.yml` oder `.env`), dann bezieht die App die Specs von deinem Fork. + +## 2. PDFs/Docs automatisch laden + +```bash +# Im Projekt-Root (oder mit Zielordner) +./install/download-nomad-data-pdfs.sh + +# Oder mit Zielordner (z.B. auf dem Server) +./install/download-nomad-data-pdfs.sh /opt/project-nomad/storage/nomad_data + +# Oder mit NOMAD_DATA_PATH +export NOMAD_DATA_PATH=/pfad/zu/NOMAD-DATA +./install/download-nomad-data-pdfs.sh +``` + +Es werden u.a. geladen: + +- **Österreich Zivilschutz** (Blackout-Ratgeber, Vorrat, Bundesheer) +- **FEMA / Ready.gov** (Are You Ready, CERT, Hazard Sheets, Evacuation, Shelter, Communications) +- **FEMA ICS-Formulare** (ICS 201, NIMS ICS Forms Booklet) +- **CDC** (Wasser, Food and Water Emergency) +- **WHO** (EML Medikamentenliste) +- **IFRC** (First Aid Guidelines), **WHO/ICRC** (Basic Emergency Care) +- **BLE/BZL** (Garten DE), **UBA** (Kompost), **FAO** +- **NREL** (Energie-Reports), **HUD** (Gebäude), **EPA** (Renovierung), **USDA** (Wood Handbook) +- **Energy.gov** (Fuel Storage) +- **BBK** (Ratgeber Notfallvorsorge DE), **DGUV** (Erste-Hilfe-Handbuch 204-007) + +**Hinweis Server:** Wenn `/opt/project-nomad/storage/nomad_data` nicht existiert oder nicht beschreibbar ist, das Skript mit einem anderen Ziel ausführen (z.B. `./install/download-nomad-data-pdfs.sh /home/nomad/nomad_data`). Anschließend Verzeichnis mit Root anlegen und Daten verschieben: +`sudo mkdir -p /opt/project-nomad/storage/nomad_data && sudo chown nomad:nomad /opt/project-nomad/storage/nomad_data && sudo cp -a /home/nomad/nomad_data/. /opt/project-nomad/storage/nomad_data/` + +## 3. RAG (Knowledge Base) + +Die App indexiert nur Inhalte unter **`NOMAD_DATA_PATH/10_EIGENE_PDFS_RAG`**. + +Wenn du die heruntergeladenen PDFs auch in der Knowledge Base nutzen willst: + +- Entweder **Kopien/Symlinks** der gewünschten PDFs nach `NOMAD-DATA/10_EIGENE_PDFS_RAG/` legen (z.B. Unterordner `Survival`, `Funk`, `Medizin`), +- oder `NOMAD_DATA_PATH` auf deinen NOMAD-DATA-Root setzen und in der App nur diesen einen Baum nutzen; dann müsste die RAG-Logik um weitere Ordner (z.B. 04_SURVIVAL, 07_FUNK) erweitert werden. + +Anschließend in der App: **Knowledge Base → Scan and Sync**. + +## 4. Ohne ZIM – manuell ablegen + +Diese Inhalte haben **kein** automatisches Download-Skript (keine direkten PDF-URLs oder nur Webseiten). Bitte von Hand in NOMAD-DATA speichern (z.B. als PDF-Export oder SingleFile): + +| Thema | Quelle | +|-------|--------| +| **MSD Manual DE** | https://www.msdmanuals.com/de/heim (Website) | +| **AWMF Leitlinien** | https://register.awmf.org/ (Einzel-PDFs pro Leitlinie) | +| **Meshtastic/LoRa** | https://meshtastic.org/docs/ | +| **ATAK/CivTAK** | tak.gov, CivTAK-Dokumentation | +| **Baofeng UV-5R** | Miklor, sn0wlink, radiodoc/uv-5r (siehe CATEGORIES-TODO.md) | +| **VDE/DEHN** | Wo frei verfügbar (oft Normen paywall) | +| **DARC Notfunk** | https://www.darc.de/der-club/referate/notfunk/dokumente/ (PDFs manuell von der Seite) | + +Nach dem Speichern ggf. nach `10_EIGENE_PDFS_RAG` kopieren und **Scan and Sync** ausführen. + +## 5. Österreich-Karte (PMTiles Extract, optional) + +Für eine Offline-Karte nur Österreich: [pmtiles CLI](https://github.com/protomaps/go-pmtiles/releases) installieren, dann (wenn eine gültige Build-URL von [maps.protomaps.com/builds](https://maps.protomaps.com/builds) verfügbar ist): + +```bash +pmtiles extract "https://build.protomaps.com/YYYYMMDD.pmtiles" austria.pmtiles --bbox=9.53,46.37,17.16,49.02 +``` + +Datei nach `storage/maps/pmtiles/` legen und in der App unter Einstellungen → Karten hinzufügen. diff --git a/install/download-nomad-data-pdfs.sh b/install/download-nomad-data-pdfs.sh new file mode 100755 index 0000000..c3c2682 --- /dev/null +++ b/install/download-nomad-data-pdfs.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# Download all PDFs and resources from install/nomad-data-pdf-urls.txt into NOMAD-DATA. +# Usage: ./install/download-nomad-data-pdfs.sh [TARGET_DIR] +# TARGET_DIR defaults to ./NOMAD-DATA or $NOMAD_DATA_PATH +# Requires: wget or curl + +set -e +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +MANIFEST="${SCRIPT_DIR}/nomad-data-pdf-urls.txt" +TARGET="${1:-${NOMAD_DATA_PATH:-$REPO_ROOT/NOMAD-DATA}}" + +if [[ ! -f "$MANIFEST" ]]; then + echo "Manifest not found: $MANIFEST" + exit 1 +fi + +mkdir -p "$TARGET" +cd "$TARGET" + +if command -v wget &>/dev/null; then + GET="wget" + GET_OPTS=(--no-check-certificate -q --show-progress -N) +elif command -v curl &>/dev/null; then + GET="curl" + GET_OPTS=(-fSL -o) +else + echo "Need wget or curl." + exit 1 +fi + +count=0 +while IFS= read -r line || [[ -n "$line" ]]; do + line="${line%%#*}" + line="$(echo "$line" | tr -d '\r' | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')" + [[ -z "$line" ]] && continue + subdir="${line%%[[:space:]]*}" + url="$(echo "${line#*[[:space:]]}" | sed 's/^[[:space:]]*//')" + [[ -z "$url" || "$url" == "$subdir" ]] && continue + dir="$TARGET/$subdir" + mkdir -p "$dir" + raw_name=$(basename "$(echo "$url" | sed 's/?.*//')") + filename=$(echo "$raw_name" | sed 's/%20/_/g; s/%2B/+/g') + [[ -z "$filename" ]] && filename="doc_$(echo "$url" | sha256sum 2>/dev/null | cut -c1-12).pdf" + if [[ "$GET" == "wget" ]]; then + (cd "$dir" && wget "${GET_OPTS[@]}" -O "$filename" "$url") || true + else + (cd "$dir" && curl -fSL -o "$filename" "$url") || true + fi + ((count++)) || true +done < "$MANIFEST" + +echo "Done. Downloaded/updated up to $count files under $TARGET" diff --git a/install/nomad-data-pdf-urls.txt b/install/nomad-data-pdf-urls.txt new file mode 100644 index 0000000..b51c038 --- /dev/null +++ b/install/nomad-data-pdf-urls.txt @@ -0,0 +1,83 @@ +# NOMAD-DATA PDF/Resource Download Manifest +# Format: SUBDIR URL +# SUBDIR = folder under NOMAD_DATA (e.g. 04_SURVIVAL, 07_FUNK, 10_EIGENE_PDFS_RAG) +# Run: install/download-nomad-data-pdfs.sh +# --- + +# === 01_MEDIZIN / Notfall / WHO/IFRC === +04_SURVIVAL https://www.ifrc.org/sites/default/files/2022-02/EN_GFARC_GUIDELINES_2020.pdf +04_SURVIVAL https://hlh.who.int/docs/librariesprovider4/hlh-documents/who-icrc-basic-emergency-care.pdf +01_MEDIZIN https://www.who.int/publications/i/item/WHO-MHP-HPS-EML-2023.02 +01_MEDIZIN https://publikationen.dguv.de/widgets/pdf/download/article/826 + +# === BBK (DE) Notfallvorsorge === +04_SURVIVAL https://www.bbk.bund.de/SharedDocs/Downloads/DE/Mediathek/Publikationen/Buergerinformationen/Ratgeber/ratgeber-notfallvosorge-checkliste.pdf?__blob=publicationFile&v=10 + +# === Österreich Zivilschutz === +04_SURVIVAL https://www.zivilschutz.at/wp-content/uploads/2022/09/Blackout-Ratgeber_Web.pdf +04_SURVIVAL https://www.zivilschutz.at/wp-content/uploads/2022/09/Blackout_Folder_Web.pdf +04_SURVIVAL https://www.zivilschutz.at/wp-content/uploads/2022/06/Infoblatt-Sirenensignale.pdf +04_SURVIVAL https://www.zivilschutz.at/wp-content/uploads/2022/06/Infoblatt-Notrufnummern.pdf +04_SURVIVAL https://www.zivilschutz.at/wp-content/uploads/2022/09/Vorrat_Checkliste_Web-small-rgb.pdf +04_SURVIVAL https://www.bundesheer.at/pdf_pool/publikationen/risikolandschaft_oesterreich_2022.pdf +04_SURVIVAL https://www.bundesheer.at/archiv/a2022/pdf/blackout_kochbuch.pdf +08_VORRAT https://www.zivilschutz.at/wp-content/uploads/2022/09/Vorrat_Checkliste_Web-small-rgb.pdf + +# === FEMA / Ready.gov / CERT === +04_SURVIVAL https://www.ready.gov/sites/default/files/2021-11/are-you-ready-guide.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/2025-02/fema_full-suite-hazard-info-sheets.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/2020-03/ready_evacuating.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/2020-03/ready_shelter.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/2020-03/ready_communications.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/2019.CERT_.Basic_.PM_FINAL_508c.pdf +04_SURVIVAL https://www.ready.gov/sites/default/files/documents/files/RRToolkit.pdf +08_VORRAT https://www.fema.gov/pdf/library/f&web.pdf + +# === FEMA ICS Formulare === +07_FUNK https://training.fema.gov/emiweb/is/icsresource/assets/ics%20forms/ics%20form%20201,%20incident%20briefing%20(v3).pdf +07_FUNK https://training.fema.gov/emiweb/is/icsresource/assets/ics%20forms/nims%20ics%20forms%20booklet%20(v3).pdf + +# === CDC Wasser / Gesundheit === +04_SURVIVAL https://www.cdc.gov/healthywater/pdf/drinking/HomeWaterTreatment.pdf +04_SURVIVAL https://www.cdc.gov/healthywater/pdf/emergency/foodandwater.pdf +05_ENERGIE https://www.cdc.gov/healthywater/pdf/drinking/HomeWaterTreatment.pdf +08_VORRAT https://www.cdc.gov/healthywater/pdf/emergency/foodandwater.pdf + +# === BLE/BZL Garten DE === +02_GARTEN https://www.ble.de/SharedDocs/Downloads/DE/Pressemitteilungen/2023/230309_Eigener_Garten.pdf +02_GARTEN https://www.ble.de/SharedDocs/Downloads/DE/Pressemitteilungen/2024/240529_Schatten.pdf +02_GARTEN https://www.ble.de/SharedDocs/Downloads/DE/Pressemitteilungen/2022/221104_Kompost-Garten.pdf + +# === UBA Kompost === +02_GARTEN https://www.umweltbundesamt.de/sites/default/files/medien/461/publikationen/4324.pdf + +# === FAO === +02_GARTEN https://www.fao.org/fileadmin/templates/FCIT/PDF/briefing_guide.pdf +02_GARTEN https://www.fao.org/4/i3284e/i3284e.pdf + +# === NREL / IEA Energie === +05_ENERGIE https://www.nrel.gov/docs/fy19osti/72564.pdf +05_ENERGIE https://www.nrel.gov/docs/fy15osti/64002.pdf + +# === HUD Gebäude-Wartung === +03_REPARATUR https://www.hud.gov/sites/documents/hudgb1.pdf +03_REPARATUR https://www.hud.gov/sites/documents/hudgb5guid.pdf +03_REPARATUR https://www.hud.gov/sites/documents/hudgb6guid.pdf + +# === EPA Renovierung/Sicherheit === +03_REPARATUR https://www.epa.gov/sites/default/files/2020-03/documents/small_entity_guide_9-23-11_w_new_cover.pdf +03_REPARATUR https://www.epa.gov/sites/default/files/2014-05/documents/initial_renovator-student_oct2011_0.pdf + +# === USDA Wood Handbook === +03_REPARATUR https://research.fs.usda.gov/treesearch/download/37440.pdf + +# === Fuel/Energy === +08_VORRAT https://www.energy.gov/sites/default/files/2019/01/f58/fuel-storage-guide.pdf + +# --- Kein direktes PDF / manuell oder SingleFile --- +# MSD Manual DE: https://www.msdmanuals.com/de/heim (Website, kein Gesamt-PDF) +# AWMF Leitlinien: https://register.awmf.org/ (Einzel-PDFs pro Leitlinie) +# Meshtastic: https://meshtastic.org/docs/ (Docusaurus – SingleFile oder wget) +# ATAK/CivTAK: https://tak.gov/ bzw. CivTAK-Docs (manuell) +# Baofeng UV-5R: Miklor, sn0wlink, radiodoc/uv-5r – siehe CATEGORIES-TODO.md +# DARC Notfunk: https://www.darc.de/der-club/referate/notfunk/dokumente/ (Seite, PDFs manuell laden)