Development Quickstart

This quickstart guide gets your environment set up with searx. Furthermore, it gives a short introduction to the script.

How to setup your development environment

First, clone the source code of searx to the desired folder. In this case the source is cloned to ~/myprojects/searx. Then create and activate the searx-ve virtualenv and install the required packages using

cd ~/myprojects
git clone
cd searx
python3 -m venv searx-ve
. ./searx-ve/bin/activate
./ update_dev_packages

How to run tests

Tests can be run using the script. Following tests and checks are available:

  • Unit tests

  • Selenium tests

  • PEP8 validation

  • Unit test coverage check

For example unit tests are run with the command below:

./ unit_tests

For further test options, please consult the help of the script or read make test.

How to compile styles and javascript

How to build styles

Less is required to build the styles of searx. Less can be installed using either NodeJS or Apt.

sudo -H apt-get install nodejs
sudo -H npm install -g less


sudo -H apt-get install node-less

After satisfying the requirements styles can be build using

./ styles

How to build the source of the themes

Grunt must be installed in order to build the javascript sources. It depends on NodeJS, so first Node has to be installed.

sudo -H apt-get install nodejs
make node.env

After installing grunt, the files can be built using the following command:

make themes

Tips for debugging/development

Turn on debug logging

Whether you are working on a new engine or trying to eliminate a bug, it is always a good idea to turn on debug logging. When debug logging is enabled a stack trace appears, instead of the cryptic Internal Server Error message. It can be turned on by setting debug: False to debug: True in settings.yml.

Run ./ tests before creating a PR.

Failing build on Travis is common because of PEP8 checks. So a new commit must be created containing these format fixes. This phase can be skipped if ./ tests is run locally before creating a PR.