Searx is a free and open-source metasearch engine, available under the GNU Affero General Public License version 3, with the aim of protecting the privacy of its users. To this end, Searx does not share users’ IP addresses or search history with the search engines from which it gathers results.
It’s easy to install using docker, but i wanted to add my own mysql server data. ( pipetune search engine data in below example )
There are many search plugins and quite hackable.
But there was a missing python module in a docker image.
ModuleNotFoundError: No module named ‘mysql’
So i build a new docker image based on the original
# Install docker and docker-compose
cd /usr/local
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
Edit the .env file to set the hostname
Generate the secret key sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml
Edit the searxng/settings.yml file according to your need
Check everything is working: docker-compose up
Run SearXNG in the background: docker-compose up -d
I’ve changed the docker-compose.yaml
Changed
< image: searxng/searxng:latest
into
> build: .
And
changed the listen address
< - "127.0.0.1:8080:8080"
into
> - "8080:8080"
Created a Dockerfile
FROM searxng/searxng:latest
RUN pip install mysql-connector-python
Changed searxng/settings.yml
engines:
- name: tunesdb
engine: mysql_server
host: 10.12.0.xx
database: pipetunesearch
username: xxxxxxx
password: xxxxxxx
limit: 50
query_str: 'SELECT * from tunes WHERE tunename=%(query)s'
I could not use a like statement in de sql query .. have to look into that
query_str: 'SELECT * from tunes WHERE tunename like %(query)%' .. doesn´t work
Example showing own data
To complete this post the reverse proxy info ..
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine On
SSLProtocol all -SSLv2 -SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile wildcard.cer
SSLCertificateKeyFile my.key
SSLCertificateChainFile GlobalSignRootCA.cer
SSLCertificateChainFile AlphaSSLCA-SHA256-G2.cer
CustomLog /var/log/httpd/search_ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerAdmin webmaster@henriaanstoot.nl
ServerName search.henriaanstoot.nl
ProxyRequests Off
ProxyPreserveHost On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Location />
ProxyPass http://dockerhostip:8080/
ProxyPassReverse http://dockerhostip:8080/
</Location>
ErrorLog /var/log/httpd/search.henriaanstoot.nl-error.log
CustomLog /var/log/httpd/search.henriaanstoot.nl-access.log combined
</VirtualHost>