Whilst reading an article on browsing and privacy I stumbled upon SearXNG, an open-source project that aggregates search results from Google, Bing, DuckDuckGo without tracking users. SearXNG doesn't crawl the web itself, instead it queries multple search engines and combines their results. Given that the premise is that it is privacy focused, there are two options available for using it, you can either you a public instance or a self hosted instance.
Public Instances
Public instances of SearXNG help protect your privacy by acting as intermediaries, all your search queries are sent to other search engines from the server hosting the instance of SearXNG, not directly from your own device. This means that search engines only see the server’s IP address instead of yours, making it difficult for them to tie queries to individual users. While this setup greatly reduces your exposure to tracking, it comes with some trade‑offs, namely the person or organisation running the public instance could potentially log or monitor your search terms. Popular instances might also run into problems if search engines detect heavy automated use and decide to block them, leading to incomplete results. Additionally, since you rely on someone else’s server, any downtime or technical issue on their side can temporarily leave you without access.
A list of public instances can be found at: https://searx.space/
Private Instances
Running your own self‑hosted SearXNG instance obviously brings benefits for privacy, reliability, and control. Since the queries come directly from your machine to the search engines (through your private instance), you avoid sharing traffic or search patterns with a third‑party server host. The SearXNG software itself removes tracking scripts and analytics commonly embedded on engine websites, so your results pages remain clean and free of external trackers. Because your instance is used only by you (or a small group you trust), all search options and customizations tend to work more consistently without the risk of being rate‑limited or blocked by engines for high traffic. Finally, hosting it yourself means you’re no longer dependent on the uptime or trustworthiness of public instances, all your searches remain available whenever your own server is running.
When you run a private SearxNG instance on your own machine or server, all search queries from your browser are routed through your instance directly to the search engines. That means the search engines will see the IP address of your instance (which, if you’re running it at home, is your personal public IP). At this point you'll want to use a VPN if you plan on running a totally locally instance, (not a cloud hosted instance under your control) in order to maintain the same level of anonymity.
The following will get you up and running on, for my purposes I went with a quick demo inside of a Kali VM.
sudo -H apt-get install -y python3-pip python3-dev python3-babel \
python3-venv uwsgi uwsgi-plugin-python3 \
git build-essential libxslt-dev zlib1g-dev \
libffi-dev libssl-dev
mkdir ~/opt/searxng && cd ~/opt/searxng
git clone "https://github.com/searxng/searxng"
python3 -m venv searxngEnvironment
source searxngEnvironment/bin/activate
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml
cd searxng && pip install --use-pep517 --no-build-isolation -e .
sudo -H mkdir -p "/etc/searxng"
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searx/settings.yml
sudo -H cp searx/settings.yml /etc/searxng/settings.yml
export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
deactivate
Lines 1-4 installs python and system dependencies needed to run and build SearXNG.
Lines 5-6 Create the folder for SearXNG and pulls the code down from GitHub.
Lines 7-8 Creates and activates the Python virtual environment
Lines 9-12 Installs the latest versions of pip, setupstools, wheel and pyyaml
Line 13 Installs searXNG into the python virtual environment
Lines 14- 17 Generates a secure random secret key, then copies and activates the SearxNG configuration into /etc/searxng/
then sets the environment variable so SearxNG knows where to find its config
Line 18 - deactivate
exits the virtual environment
Running the virtual environment
Ensure your back in the /opt/searxng
directory and then activate the virtual environment, searxngEnvironment
that we previously set in line 8.
┌──(root㉿kali)-[/opt/searxng]
└─# source searxngEnvironment/bin/activate
┌──(searxngEnvironment)─(root㉿kali)-[/opt/searxng]
└─# cd searxng
┌──(searxngEnvironment)─(root㉿kali)-[/opt/searxng/searxng]
└─# python3 searx/webapp.py
The software is now running in the background. You can minimize this Terminal window and as long as it is not closed completely, the service is running. (tmux is your friend here) Now launch Firefox and navigate to http://127.0.0.1:8888 to load your own instance.

Further configuration to searXNG is also possible, for example you can enable or disable specific search engines and add custom sources. The interface also looks to be customisable, with options available for switching themes, modifying the branding and adjusting language settings. Additionally, you can configure performance settings like rate limiting, result caching, and deploy SearxNG behind a reverse proxy with SSL should you wish.
Would I use it all the time as my goto for searching the web? I guess if privacy was my main concern it would be worth investing the time to set it up on my own cloud instance only accessible from my private VPN's IP address, however that just seems overkill for me.