diff --git a/docker-compose.yml b/docker-compose.yml
index 5597929..7a11634 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -32,8 +32,8 @@ services:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8080/
- - UWSGI_WORKERS=4
- - UWSGI_THREADS=4
+ - UWSGI_WORKERS=1
+ - UWSGI_THREADS=1
cap_add:
- CHOWN
- SETGID
@@ -48,27 +48,6 @@ services:
networks:
- agentic-seek-net
- backend:
- container_name: backend
- build:
- context: .
- dockerfile: Dockerfile.backend
- ports:
- - "8000:8000"
- volumes:
- - ./.screenshots:/app/.screenshots:ro # Mount screenshots folder
- - ./app.py:/app/app.py:ro # Mount backend code
- - ./sources:/app/sources:ro # Assuming sources/ contains your modules
- - ./prompts:/app/prompts:ro # Assuming prompts/ for agent prompts
- - ./config.ini:/app/config.ini:ro # Config file
- environment:
- - PYTHONUNBUFFERED=1
- depends_on:
- - searxng
- - redis
- networks:
- - agentic-seek-net
-
frontend:
container_name: frontend
build:
@@ -77,12 +56,11 @@ services:
ports:
- "3000:3000"
volumes:
- - ./frontend/agentic-seek/src:/app/src # Live reload for development
+ - ./frontend/agentic-seek/src:/app/src
environment:
- NODE_ENV=development
- CHOKIDAR_USEPOLLING=true # Ensure file watching works in Docker
- depends_on:
- - backend
+ - BACKEND_URL=http://host.docker.internal:8000
networks:
- agentic-seek-net
diff --git a/frontend/agentic-seek/src/App.js b/frontend/agentic-seek/src/App.js
index 67e266d..f8ec5c5 100644
--- a/frontend/agentic-seek/src/App.js
+++ b/frontend/agentic-seek/src/App.js
@@ -28,7 +28,7 @@ function App() {
try {
//const res = await axios.post('http://backend:8000/query', { ... });
- const res = await axios.post('http://localhost:8000/query', {
+ const res = await axios.post('${process.env.BACKEND_URL}/query', {
query,
lang: 'en',
tts_enabled: false,
@@ -56,7 +56,7 @@ function App() {
const handleGetScreenshot = async () => {
try {
//const res = await axios.get('http://backend:8000/screenshots/updated_screen.png');
- const res = await axios.get('http://localhost:8000/screenshots/updated_screen.png');
+ const res = await axios.get('${process.env.BACKEND_URL}/screenshots/updated_screen.png');
setResponseData((prev) => ({ ...prev, screenshot: res.data.screenshot }));
setCurrentView('screenshot');
} catch (err) {
@@ -153,7 +153,7 @@ function App() {
) : (
-

+
)}
diff --git a/searxng/docker-compose.yml b/searxng/docker-compose.yml
index 156b73f..6e1d601 100644
--- a/searxng/docker-compose.yml
+++ b/searxng/docker-compose.yml
@@ -29,8 +29,8 @@ services:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8080/
- - UWSGI_WORKERS=4
- - UWSGI_THREADS=4
+ - UWSGI_WORKERS=1
+ - UWSGI_THREADS=1
cap_add:
- CHOWN
- SETGID
diff --git a/searxng/searxng/uwsgi.ini b/searxng/searxng/uwsgi.ini
index d8a68a8..ce9e04d 100644
--- a/searxng/searxng/uwsgi.ini
+++ b/searxng/searxng/uwsgi.ini
@@ -5,11 +5,11 @@ gid = searxng
# Number of workers (usually CPU count)
# default value: %k (= number of CPU core, see Dockerfile)
-workers = 4
+workers = 1
# Number of threads per worker
# default value: 4 (see Dockerfile)
-threads = 4
+threads = 1
# The right granted on the created socket
chmod-socket = 666
@@ -19,7 +19,7 @@ single-interpreter = true
master = true
plugin = python3
lazy-apps = true
-enable-threads = 4
+enable-threads = 1
# Module to import
module = searx.webapp
@@ -49,4 +49,4 @@ die-on-term
# uwsgi serves the static files
static-map = /static=/usr/local/searxng/searx/static
static-gzip-all = True
-offload-threads = 4
\ No newline at end of file
+offload-threads = 1
\ No newline at end of file
diff --git a/searxng/setup_searxng.sh b/searxng/setup_searxng.sh
index 001eb70..acdc4ed 100755
--- a/searxng/setup_searxng.sh
+++ b/searxng/setup_searxng.sh
@@ -1,72 +1,5 @@
#!/bin/bash
-# Script to automate SearXNG setup and deployment with Docker Compose
-
-command_exists() {
- command -v "$1" &> /dev/null
-}
-
-# Check if Docker is installed
-if ! command_exists docker; then
- echo "Error: Docker is not installed. Please install Docker first."
- echo "On Ubuntu: sudo apt install docker.io"
- echo "On macOS/Windows: Install Docker Desktop from https://www.docker.com/get-started/"
- exit 1
-fi
-
-# Check if Docker daemon is running
-echo "Checking if Docker daemon is running..."
-if ! docker info &> /dev/null; then
- echo "Error: Docker daemon is not running or inaccessible."
- if [ "$(uname)" = "Linux" ]; then
- echo "Trying to start Docker service (may require sudo)..."
- if sudo systemctl start docker &> /dev/null; then
- echo "Docker started successfully."
- else
- echo "Failed to start Docker. Possible issues:"
- echo "1. Run this script with sudo: sudo bash setup_searxng.sh"
- echo "2. Check Docker installation: sudo systemctl status docker"
- echo "3. Add your user to the docker group: sudo usermod -aG docker $USER (then log out and back in)"
- exit 1
- fi
- else
- echo "Please start Docker manually:"
- echo "- On macOS/Windows: Open Docker Desktop."
- echo "- On Linux: Run 'sudo systemctl start docker' or check your distro's docs."
- exit 1
- fi
-else
- echo "Docker daemon is running."
-fi
-
-# Check if Docker Compose is installed
-if ! command_exists docker-compose; then
- echo "Error: Docker Compose is not installed. Please install it first."
- echo "On Ubuntu: sudo apt install docker-compose"
- echo "Or via pip: pip install docker-compose"
- exit 1
-fi
-
-# Create a directory for SearXNG config if it doesn’t exist
-mkdir -p searxng
-cd . || exit
-
-# Check if docker-compose.yml exists
-if [ ! -f "docker-compose.yml" ]; then
- echo "Error: docker-compose.yml not found in the current directory."
- echo "Please create it before running this script."
- exit 1
-fi
-
-# Start containers to generate initial config files
-echo "Starting containers for initial setup..."
-if ! docker-compose up -d; then
- echo "Error: Failed to start containers. Check Docker logs with 'docker compose logs'."
- echo "Possible fixes: Run with sudo or ensure port 8080 is free."
- exit 1
-fi
-sleep 10
-
# Generate a secret key and update settings
SECRET_KEY=$(openssl rand -hex 32)
if [ -f "searxng/settings.yml" ]; then
@@ -83,9 +16,4 @@ else
echo "Error: settings.yml not found. Initial setup may have failed."
docker-compose logs searxng
exit 1
-fi
-
-# Display status and access instructions
-echo "SearXNG setup complete!"
-docker ps -a --filter "name=searxng" --filter "name=redis"
-echo "Access SearXNG at: http://localhost:8080"
\ No newline at end of file
+fi
\ No newline at end of file
diff --git a/searxng/uwsgi.ini b/searxng/uwsgi.ini
new file mode 100644
index 0000000..45ea5c9
--- /dev/null
+++ b/searxng/uwsgi.ini
@@ -0,0 +1,53 @@
+[uwsgi]
+# Who will run the code
+uid = searxng
+gid = searxng
+
+# Number of workers (usually CPU count)
+# default value: %k (= number of CPU core, see Dockerfile)
+workers = 1
+
+# Number of threads per worker
+# default value: 4 (see Dockerfile)
+enable-threads = false
+threads = 1
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpreter config
+single-interpreter = true
+master = true
+plugin = python3
+lazy-apps = true
+enable-threads = 1
+
+# Module to import
+module = searx.webapp
+
+# Virtualenv and python path
+pythonpath = /usr/local/searxng/
+chdir = /usr/local/searxng/searx/
+
+# automatically set processes name to something meaningful
+auto-procname = true
+
+# Disable request logging for privacy
+disable-logging = true
+log-5xx = true
+
+# Set the max size of a request (request-body excluded)
+buffer-size = 8192
+
+# No keep alive
+# See https://github.com/searx/searx-docker/issues/24
+add-header = Connection: close
+
+# Follow SIGTERM convention
+# See https://github.com/searxng/searxng/issues/3427
+die-on-term
+
+# uwsgi serves the static files
+static-map = /static=/usr/local/searxng/searx/static
+static-gzip-all = True
+offload-threads = 2
diff --git a/sources/browser.py b/sources/browser.py
index f619995..8180d53 100644
--- a/sources/browser.py
+++ b/sources/browser.py
@@ -46,7 +46,7 @@ def get_chrome_path() -> str:
return path
return None
-def create_driver(headless=False, stealth_mode=True) -> webdriver.Chrome:
+def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx") -> webdriver.Chrome:
"""Create a Chrome WebDriver with specified options."""
chrome_options = Options()
chrome_path = get_chrome_path()
@@ -74,10 +74,10 @@ def create_driver(headless=False, stealth_mode=True) -> webdriver.Chrome:
chrome_options.add_argument(f'--window-size={width},{height}')
if not stealth_mode:
# crx file can't be installed in stealth mode
- crx_path = "./crx/nopecha.crx"
if not os.path.exists(crx_path):
- raise FileNotFoundError(f"Extension file not found at: {crx_path}")
- chrome_options.add_extension(crx_path)
+ pretty_print(f"Anti-captcha CRX not found at {crx_path}.", color="failure")
+ else:
+ chrome_options.add_extension(crx_path)
chromedriver_path = shutil.which("chromedriver")
if not chromedriver_path:
diff --git a/start_services.sh b/start_services.sh
index 4be50a4..2fdbc33 100755
--- a/start_services.sh
+++ b/start_services.sh
@@ -1,4 +1,73 @@
#!/bin/bash
-# start searxng service for internet search
-cd searxng && ./setup_searxng.sh
\ No newline at end of file
+command_exists() {
+ command -v "$1" &> /dev/null
+}
+
+#
+# Check if Docker is installed é running
+#
+
+if ! command_exists docker; then
+ echo "Error: Docker is not installed. Please install Docker first."
+ echo "On Ubuntu: sudo apt install docker.io"
+ echo "On macOS/Windows: Install Docker Desktop from https://www.docker.com/get-started/"
+ exit 1
+fi
+
+# Check if Docker daemon is running
+echo "Checking if Docker daemon is running..."
+if ! docker info &> /dev/null; then
+ echo "Error: Docker daemon is not running or inaccessible."
+ if [ "$(uname)" = "Linux" ]; then
+ echo "Trying to start Docker service (may require sudo)..."
+ if sudo systemctl start docker &> /dev/null; then
+ echo "Docker started successfully."
+ else
+ echo "Failed to start Docker. Possible issues:"
+ echo "1. Run this script with sudo: sudo bash setup_searxng.sh"
+ echo "2. Check Docker installation: sudo systemctl status docker"
+ echo "3. Add your user to the docker group: sudo usermod -aG docker $USER (then log out and back in)"
+ exit 1
+ fi
+ else
+ echo "Please start Docker manually:"
+ echo "- On macOS/Windows: Open Docker Desktop."
+ echo "- On Linux: Run 'sudo systemctl start docker' or check your distro's docs."
+ exit 1
+ fi
+else
+ echo "Docker daemon is running."
+fi
+
+# Check if Docker Compose is installed
+if ! command_exists docker-compose; then
+ echo "Error: Docker Compose is not installed. Please install it first."
+ echo "On Ubuntu: sudo apt install docker-compose"
+ echo "Or via pip: pip install docker-compose"
+ exit 1
+fi
+
+# Check if docker-compose.yml exists
+if [ ! -f "docker-compose.yml" ]; then
+ echo "Error: docker-compose.yml not found in the current directory."
+ exit 1
+fi
+
+# start searxng service for internet search service
+cd searxng && ./setup_searxng.sh && cd ..
+
+# start docker compose for searxng, redis, frontend services
+echo "SearXNG setup complete!"
+
+echo "Warning: stopping all docker containers (t-4 seconds)..."
+sleep 4
+docker stop $(docker ps -a -q)
+echo "All containers stopped"
+
+if ! docker-compose up; then
+ echo "Error: Failed to start containers. Check Docker logs with 'docker compose logs'."
+ echo "Possible fixes: Run with sudo or ensure port 8080 is free."
+ exit 1
+fi
+sleep 10
\ No newline at end of file