# SearXNG

Metasearch engine that sends your query to several search engines and merges the results.

- Replaces: [Google Search](https://openlogs.fyi/alternatives/google-search)
- Summary: Paid search services, such as Google Search.
- Stack: Python (language), Valkey (database)
- Deployment: docker_compose
- License: AGPL-3.0 (osi) [source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/README.rst), read 2026-10-22)
- Difficulty: medium. 2 services (1 database or broker: valkey), 3 volume mounts, 1 env value to set, no elevated host access. Heuristic score 4 of 11: medium.
- Requirements: not stated
- Repository: [searxng/searxng](https://github.com/searxng/searxng)

## Install

1. Docker with the Compose plugin ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/docs/admin/installation-docker.rst))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml))

   ```yaml
   # Read the documentation before using the `docker-compose.yml` file:
   # https://docs.searxng.org/admin/installation-docker.html
   
   name: searxng
   
   services:
     core:
       container_name: searxng-core
       image: docker.io/searxng/searxng:${SEARXNG_VERSION:-latest}
       restart: always
       ports:
         - ${SEARXNG_HOST:+${SEARXNG_HOST}:}${SEARXNG_PORT:-8080}:${SEARXNG_PORT:-8080}
       env_file: ./.env
       volumes:
         - ./core-config/:/etc/searxng/:Z
         - core-data:/var/cache/searxng/
   
     valkey:
       container_name: searxng-valkey
       image: docker.io/valkey/valkey:9-alpine
       command: valkey-server --save 300 1 --save 60 1000 --loglevel warning
       restart: always
       volumes:
         - valkey-data:/data/
   
   volumes:
     core-data:
     valkey-data:
   ```

3. Save as .env next to the compose file ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/.env.example))

   ```dotenv
   # Read the documentation before using the `docker-compose.yml` file:
   # https://docs.searxng.org/admin/installation-docker.html
   #
   # Additional variables:
   # https://docs.searxng.org/admin/settings/settings_general.html#settings-general
   # https://docs.searxng.org/admin/settings/settings_server.html#settings-server
   
   # Use a specific version tag. E.g. "latest" or "2026.3.25-541c6c3cb".
   #SEARXNG_VERSION=latest
   
   # Listen to a specific address.
   #SEARXNG_HOST=[::]
   
   # Listen to a specific port.
   #SEARXNG_PORT=8080
   ```

4. What the compose file check ran with ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/docs/admin/installation-docker.rst))

   ```text
   The compose file check ran together with .env.example from the same commit, saved as .env. The folder held only these files. The installation guide tells the reader to download docker-compose.yml and .env.example, copy the example to .env and run docker compose up -d.
   ```

5. Start it ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/docs/admin/installation-docker.rst))

   ```bash
   docker compose up -d
   ```

6. Open the app ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml))

   ```text
   Open http://localhost:8080. The compose file publishes host port 8080 for the core service.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- Some images use the latest tag or no tag: Images without a pinned version: core: docker.io/searxng/searxng:${SEARXNG_VERSION:-latest}. A later pull can get a different version. ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml), checked 2026-10-22)
- The compose file mounts host folders: Host paths mounted into containers: ./core-config/ at /etc/searxng/ (core). ([source](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 203
- Stars: 38728, forks: 3526
- Last push: 2026-10-19 (3 days ago)
- Latest release: none recorded

## Sources

- [Repository: https://github.com/searxng/searxng](https://github.com/searxng/searxng)
- [License: https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/LICENSE](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/LICENSE)
- [Business model: https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/README.rst](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/README.rst)
- [Compose file: https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/docker-compose.yml)
- [Install step: https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/docs/admin/installation-docker.rst](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/docs/admin/installation-docker.rst)
- [Install step: https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/.env.example](https://github.com/searxng/searxng/blob/81371861f67226091d1c4df2e3908a11d3b54eb9/container/.env.example)

---
Canonical: https://openlogs.fyi/tools/searxng  
Last updated: 2026-10-22
