The searx documentation has an excellent introduction:
Searx is a free internet metasearch engine which aggregates results from more than 70 search services. Users are neither tracked nor profiled. Additionally, searx can be used over Tor for online anonymity.
If you don’t trust anyone, you can set up your own […]
But even if privacy isn’t a major concern, the search experience is so much better than Google and other ad-driven engines that it’s worth setting this up.
This is exactly what we’re going to do here. First the usual assumptions:
- We are self-hosting using
docker
anddocker-compose
- The searx container is running behind a reverse proxy (which is already configured)
The official docker-compose.yaml
example includes:
- Caddy - which we won’t use because our Caddy instance proxies a number of other services
- Filtron - may be unnecessary depending on your reverse proxy (i.e. I handle rate limiting globally, no need to add again here)
- Morty - excluded for simplicity
So we are left with a nice, clean docker-compose.yml
:
version: '3.7'
services:
searx:
image: searx/searx:1.0.0-151-c5d63a5c
container_name: searx
restart: unless-stopped
ports:
- '8086:8080'
volumes:
- './data/searx:/etc/searx'
environment:
- BASE_URL=https://search.YOURDOMAIN.com/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
Note we are using the actual tag name 1.0.0-151-c5d63a5c
instead of latest
, it’s always best to specify tag names and perform upgrades deliberately and thoughtfully. Also note we are mapping :8086
, change this to match your own reverse proxy configuration.
After running docker-compose up -d
you can edit ./data/searx/settings.yml
and change the following:
instance_name : "searx" # displayed name
to whatever you preferenable_stats: True # activate /stats page - note: it may leak usage data
to get some nifty “Engine stats”:- Change the
secret_key :
value to something unique method: "GET"
to avoid problems with Firefox searching from the address bar. Note that changing this in the settings in the GUI alone does not work.
Run docker-compose down && docker-compose up -d
after changing settings.yml
above. Once completed you should be able to access your new private search page!
Enabling in Firefox
To search from the address bar directly, add your new searx instance as a search engine in Firefox and set it as the default:
After doing so the search behavior is exactly like the default!
The same thing is possible in Firefox mobile on Android but it’s a little more manual, under Settings
-> Search
, + Add search engine
:
- Name:
searx
(or whatever you prefer) - Search string to use:
https://search.YOURDOMAIN.com/search?q=%s
- Save (little checkmark in the top right)
- Set the Default search engine to
searx
Similar steps apply to Chromium and other browsers.
Features
After using searx
for a few days I was surprised at how good the user experience can be without a profit motive. Google and other engines are perniciously driven to favor ad revenue over everything else, even functionality. Having a search experience focused purely on efficiently providing information is a breath of fresh air.
The only downside to searx
is the uncached speed. Search results take 2-3 seconds to load, whereas Google results often load in under a second. It’s enough to be noticeable coming from Google, but still acceptable.
Otherwise it’s nothing but upsides:
- Detailed control (under
preferences
) of the default categories, theme, behavior, engines, and much more. - No personalized search results (Google creates a profile for each user on its platform, across devices, for billions of users, and uses that to hide search results it decides aren’t relevant to you). I’d prefer to make these decisions for myself.
- Ability to control what categories (
General
,Files
,Images
, etc.) of results are displayed. The whole concept of “Categories” is extremely powerful. It’s one of those features you never knew you needed, but filtering byIT
for information technology orFiles
specifically for files, orSocial Media
to deliberately search social media rather than having results mixed in… so powerful! - and on and on…
To repeat myself: getting unfiltered results on a platform I control is like breathing again after suffocating for so long. What a great feeling!
Motivations
I believe every human should resist the degradation toward a complete loss of privacy. In the online world monopolies produce gargantuan market pressure to harvest and monetize every expression of ourselves. We lose this privacy bit by bit, so slowly we rarely notice, and so we must take it back bit by bit and where we can.
Online search is the hinge, handle, and door itself into every other service and bit of information online, especially the information you don’t know exists yet. This, then, becomes one of the most important places to start when it comes to online privacy.