|
@@ -0,0 +1,51 @@
|
|
|
|
|
+#!/bin/bash
|
|
|
|
|
+# Local Food AI - SearXNG Setup (Docker)
|
|
|
|
|
+
|
|
|
|
|
+echo "========================================================="
|
|
|
|
|
+echo "🔍 Installing Docker & SearXNG Locally"
|
|
|
|
|
+echo "========================================================="
|
|
|
|
|
+
|
|
|
|
|
+echo "[1/4] Installing Docker..."
|
|
|
|
|
+sudo apt update
|
|
|
|
|
+sudo apt install -y docker.io
|
|
|
|
|
+sudo systemctl enable docker
|
|
|
|
|
+sudo systemctl start docker
|
|
|
|
|
+
|
|
|
|
|
+echo "[2/4] Setting up SearXNG environment structure..."
|
|
|
|
|
+sudo mkdir -p /etc/searxng
|
|
|
|
|
+
|
|
|
|
|
+echo "[3/4] Generating strict local AI settings.yml..."
|
|
|
|
|
+# We explicitly enable JSON formats so the python app can scrape the API invisibly
|
|
|
|
|
+sudo cat << 'EOF' > /etc/searxng/settings.yml
|
|
|
|
|
+use_default_settings: true
|
|
|
|
|
+general:
|
|
|
|
|
+ debug: false
|
|
|
|
|
+ instance_name: "Local Food AI Search"
|
|
|
|
|
+search:
|
|
|
|
|
+ safe_search: 0
|
|
|
|
|
+ autocomplete: ""
|
|
|
|
|
+ default_lang: "en"
|
|
|
|
|
+ formats:
|
|
|
|
|
+ - html
|
|
|
|
|
+ - json
|
|
|
|
|
+server:
|
|
|
|
|
+ port: 8080
|
|
|
|
|
+ bind_address: "0.0.0.0"
|
|
|
|
|
+ secret_key: "ai_food_search_secret_key"
|
|
|
|
|
+ limiter: false
|
|
|
|
|
+ image_proxy: true
|
|
|
|
|
+EOF
|
|
|
|
|
+
|
|
|
|
|
+echo "[4/4] Launching official SearXNG Container..."
|
|
|
|
|
+# Bind strictly to localhost (127.0.0.1) so no one outside the VM can hit the search engine
|
|
|
|
|
+sudo docker stop searxng 2>/dev/null || true
|
|
|
|
|
+sudo docker rm searxng 2>/dev/null || true
|
|
|
|
|
+
|
|
|
|
|
+sudo docker run -d \
|
|
|
|
|
+ -p 127.0.0.1:8080:8080 \
|
|
|
|
|
+ -v /etc/searxng:/etc/searxng \
|
|
|
|
|
+ --name searxng \
|
|
|
|
|
+ --restart always \
|
|
|
|
|
+ searxng/searxng
|
|
|
|
|
+
|
|
|
|
|
+echo "✅ SearXNG is now running firmly isolated on http://127.0.0.1:8080!"
|