SearXNG - MetaSearch Engine

SearXNG - MetaSearch Engine

Build your own search engine. Why did I choose to deploy and use searxng. I know there are multiple free and famous search engines most people in the world use. I am not the same as them, I want data privacy and don't ads personalized across devices that I search. And there is searxng public instances that some people are running for free but you can't trust that since they might be logging requests. So decided to set up my own instance using docker. Continue reading to set up a new instance for you.

What is SearXNG?

It is a free internet metasearch engine that aggregates results from various search services and databases. Users are neither tracked nor profiled.

Installation

If you have a docker daemon already installed then good you can skip it if not installed. Follow this blog post here.

Getting Started with Docker
Docker is an open platform for app development, delivery, and maintenance. Docker allows you to decouple your apps from your infrastructure, allowing you to release software more quickly. Docker allows you to manage your infrastructure in the same manner that you control your apps. You may drastical…

Create a folder and manage all the files or clone this repository.

GitHub - searxng/searxng-docker: The docker-compose files for setting up a SearXNG instance with docker.
The docker-compose files for setting up a SearXNG instance with docker. - GitHub - searxng/searxng-docker: The docker-compose files for setting up a SearXNG instance with docker.

I prefer to maintain files myself, so create a new file docker-compose with this.

version: '3.3'
services:
  searxng:
    image: searxng/searxng
    container_name: searxng
    ports:
      - '8080:8080'
    volumes:
      - 'searxng:/etc/searxng'
    environment:
      - BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
      - INSTANCE_NAME=searxng
      

if you want Redis cache and caddy reverse proxy, then you can clone the repo and edit .env with the host and email for the SSL certificate from Let's Encrypt.

Now we have to modify the searxng settings and create a folder called searxng, within which you need to create a file called settings.yml with this content.

use_default_settings: true
search:
  # Filter results. 0: None, 1: Moderate, 2: Strict
  safe_search: 0
  autocomplete_min: 3
  autocomplete: "google"

server:
  secret_key: "ultrasecretkey"  # generate using $(openssl rand -hex 32)
  limiter: true  # can be disabled for a private instance
  image_proxy: true
  method: "GET"

ui:
  static_use_hash: true
  theme_args:
    # style of simple theme: auto, light, dark
    simple_style: dark

general:
  # Debug mode, only for development
  debug: false
  # displayed name
  instance_name: "SearXNG"
  # record stats
  enable_metrics: true

https://github.com/searxng/searxng/blob/master/searx/settings.yml

Once ready hit, docker-compose up and it should start the instance and you should be able to use

If you want to test searxng before deploying you can test from these publicly available instances.

Searx instances
Online and offline instances

Thanks for Reading till the end, Stay tuned for more interesting blogs and posts!!