Privacy is for me very important, not that I have something special to hide, but I want to be sure I control what I do while not being set in a box (Profiling).
The search engine is probably the tool I am using the most in daily basis and I long used Google Search….But on top of not respecting your privacy (It’s their job of course), it will also build a profile of you and will change the ranking of the search results based on it. Then you quickly browse on the same websites every day with few new contents.
But there is actually plenty of alternatives. The most popular is probably DuckDuckGo, a meta search engine respecting your privacy (Does not track you,…)
Note that a meta search engine differs from a search engine. To be short, a search engine will crawl the web and index it in a database, then you will search inside this database. A meta search engine does not crawl and index, but will aggregate the results from others search engine instead.
Running a search engine actually needs significant resources (Space, IO, etc…) and requirement more development than a meta search. That’s why there is few alternatives as search engine but many as meta search engine.
And you can also run your own meta search engine on your own server. This is what Searx is all about.
Supporting different languages, searx can also be easily customized such as the selection of the search engines or categories. You can also set the output results as rss feed, or csv and even json.
You can directly give it a try on their official instance, searx.me
And here is how to install it on Ubuntu/Debian based system.
You will first need to have a LAMP server, if you don’t know what it is, or don’t have it, please see this tutorial.
**1) Install the system dependencies
In root (or with sudo), run:
apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev uwsgi uwsgi-plugin-python libapache2-mod-uwsgi
**2) Clone their latest version into your /var/www and change the ownership of the folder by searx user
Still in root,
cd /var/www git clone https://github.com/asciimoo/searx useradd searx -d /var/www/searx chown searx:searx -R /var/www/searx
**3) Install searx dependencies in a virtualenv
Still in root,
su searx cd /var/www/searx virtualenv searx-ve . ./searx-ve/bin/activate pip install -r requirements.txt python setup.py install
**4) Generate a secret key to set in the setting.yml file
sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml exit
If you want to make some additional modification like the port number, etc… simply edit the settings.yml manually.
At this point searx is not demonized ; uwsgi allows this.
**5) Configure and activate uwsgi
Create the configuration file /etc/uwsgi/apps-available/searx.ini
and copy the following content:
[uwsgi] # Who will run the code uid = searx gid = searx # Number of workers (usually CPU count) workers = 4 # The right granted on the created socket chmod-socket = 666 # Plugin to use and interpretor config single-interpreter = true master = true plugin = python # Module to import module = searx.webapp # Virtualenv and python path virtualenv = /var/www/searx/searx-ve/
And finally activate the uwsgi
cd /etc/uwsgi/apps-enabled ln -s ../apps-available/searx.ini /etc/init.d/uwsgi restart
**6) Create a dedicated virtualhost with uwsgi configured
Here is my virtualhost as exemple
nano /etc/apache2/sites-enabled/searx <VirtualHost *:80> ServerAdmin firstname.lastname@example.org ServerName search.freedif.org <Location /> Options FollowSymLinks Indexes SetHandler uwsgi-handler uWSGISocket /run/uwsgi/app/searx/socket </Location> </VirtualHost>
And you should be good to go!
If you face any issue during the installation, feel free to ask questions in the comment section or directly on their issues tracker.