Skip to main content

Searx – Meta search engine respecting privacy, for your server

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.

searx meta search engine

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

searx installation steps

And here is how to install it on Ubuntu/Debian based system.

 

Installation

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:

2) Clone their latest version into your /var/www and change the ownership of the folder by searx user

Still in root,

 

3) Install searx dependencies in a virtualenv

Still in root,

 

4) Generate a secret key to set in the setting.yml file
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:

And finally activate the uwsgi

6) Create a dedicated virtualhost with uwsgi configured

Here is my virtualhost as exemple

Restart apache

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.

Google Announcement

Pod, collaborative tool with documents and todo list sharing

I wanted to share long ago this software, but it seems I never really found the time to do it. So here we are freedif.org, it’s Pod time!

POD is a collaborative tool, written in Python based on TurboGears and uses the powerful PostgreSQL as database.

POD collaborative tool detail

In POD, everything is a document and can be managed as we usually do for documents. 4 types of documents are available (text document, files, contact and comments).

It is easy to create, modify, move, delete these documents, but POD also allows you to share them and set different access rights for each different document. You can also search and filter your query per type.

pod collaborative tool todo list

Similar to a Wiki, you can check different version of a document (versioning) and set access rights for a specific user or usergroup in read and/or write mode.

Obviously the best for you is to give a try to their latest demo (login: demo@localhost // password: demo) and to check below tutorial on how to install pod on your server.

POD collaborative tool login page

Installation

If you are on Debian/Ubuntu like,

1) Install the dependencies

In root, run:

 

2) Clone their git repository into your /var/www
3) Create the database

To create a database with PostGreSQL, you will need first to login as the postgres user

and then run the psql client

You should get something like this:

Now, create the database poddb with the user poduser and the password podpassword

Obviously replace the user and password by the one you want.

then quit the psql client by typing:

and logout from postgres user by running:

4) Import the database schema and initial data

Simply execute below sql query by replacing the database name and username by the one you previously created

enter your password and wait for your database to be initialized.

You can now test your database by running the following command:

You should see the admin@localhost user entry, simply press “q” to quit.

5) Setup the python virtualenv

To avoid conflict between your system-wide python modules and the pod required ones, you need to setup the Python virtualenv as following:

You may get an error with stevedore/pbr since it is not supported by python 3.2, but you can ignore this error.

Note that for Ubuntu users, you need to remove distribute and wsgiref from the requirements.txt file

6) Edit the POD configuration to match your settings

First, copy the development.ini file.base as development.ini

and edit it:

You will need to indicate your postgresql configuration, found the line:

and replace the user/password/pod database by what you have created before, in the case of this tutorial, I will replace it by:

 

You could also change the port to listen to (Default is 8080), the language (From English to French for example) and some more.

When done, save the file (CTRL +X, then Y)

7) Launch the pod
If no issue, you should now be able to visit your pod at http://YourIP:8080 with the login: admin@localhost and password: admin