Running SearXNG on Linux Mint

Google's practices of censorship and shadowbanning contribute to a less informed society and a weakened education system. To mitigate these effects, consider using searXNG. Here are the steps to install it on Linux Mint. You need a working python environment as searxng is written in python.

sudo apt install redis-server apache2 python3 -y

sudo ln -s /usr/bin/python3 /usr/bin/python

First thing to do is create a searxng user and log into it.

sudo userdel -r searxng

sudo useradd -m -s /bin/bash searxng

sudo passwd searxng

sudo usermod -aG sudo searxng

sudo su - searxng

Download SearXNG. Clone it to the /tmp folder and not the home folder.

git clone https://github.com/searxng/searxng.git

cd searxng

echo "export SEARXNG_SRC=$HOME/searxng" >> ~/.bashrc

source ~/.bashrc

The docs are available at https://docs.searxng.org/

The only supported operating systems are...

ubuntu-*|debian-*)

# For uWSGI debian uses the LSB init process; for each configuration

# file new uWSGI daemon instance is started with additional option.

service uwsgi status "${SERVICE_NAME}"

;;

arch-*)

systemctl --no-pager -l status "uwsgi@${SERVICE_NAME%.*}"

;;

fedora-*)

You then need to change every instances of

ubuntu-*|debian-*)

to

ubuntu-*|debian-*|linuxmint-*)

The file it gets its Linux installation name is /etc/os-release variable ID

echo $(source /etc/os-release; echo "$ID");

or

cat /etc/os-release

the files in reference are...

  1. ./utils/searxng.sh
  2. ./utils/lib.sh
  3. ./utils/lib_redis.sh

Here are some fast sed commands to do just that...

find . -type f -exec sed -i 's/ubuntu|debian)/ubuntu|debian|linuxmint)/g' {} +

find . -type f -exec sed -i 's/ubuntu-\*|debian-\*)/ubuntu-\*|debian-\*|linuxmint-\*)/g' {} +

Then make the directory in /usr/local

sudo mkdir -p /usr/local/searxng

sudo chown searxng:searxng /usr/local/searxng

Then run the installation script...

sudo -H ./utils/searxng.sh install all

Disable the searxng user login

sudo usermod searxng -s /sbin/nologin

http://url/searxng

Some commands:

  • sudo rm -rf /usr/local/searxng
  • sudo rm -rf /usr/local/searxng-redis
  • sudo userdel searxng
  • sudo groupdel searxng
  • usermod searxng -s /sbin/bash

# -- coding: utf-8; mode: apache --

LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so

LoadModule proxy_uwsgi_module /usr/lib/apache2/modules/mod_proxy_uwsgi.so

# LoadModule setenvif_module /usr/lib/apache2/modules/mod_setenvif.so # # SetEnvIf Request_URI /searxng dontlog # CustomLog /dev/null combined env=dontlog

<VirtualHost *:80>

ServerName search.imtcoin.com

#<Location /searxng>

<Location />

Require all granted

Order deny,allow

Deny from all

# Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1

Allow from all

# add the trailing slash

RedirectMatch 308 /searxng$ /searxng/

ProxyPreserveHost On

ProxyPass unix:/usr/local/searxng/run/socket|uwsgi://uwsgi-uds-searxng/

ProxyPassReverse /

# see flaskfix.py

RequestHeader set X-Scheme %{REQUEST_SCHEME}s

# RequestHeader set X-Script-Name /searxng

# see limiter.py

RequestHeader set X-Real-IP %{REMOTE_ADDR}s

RequestHeader append X-Forwarded-For %{REMOTE_ADDR}s

</Location>

# uWSGI serves the static files and in settings.yml we use:: # # ui: # static_use_hash: true # # Alias /searxng/static/ /usr/local/searxng/searxng-src/searx/static/

RewriteEngine on

RewriteCond %{SERVER_NAME} =search.imtcoin.com

RewriteRule https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

<VirtualHost *:443>

ServerName search.imtcoin.com

#<Location /searxng>

<Location />

Require all granted

Order deny,allow

Deny from all

# Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1

Allow from all

# add the trailing slash

RedirectMatch 308 /searxng$ /searxng/

ProxyPreserveHost On

ProxyPass unix:/usr/local/searxng/run/socket|uwsgi://uwsgi-uds-searxng/

ProxyPassReverse /

# see flaskfix.py

RequestHeader set X-Scheme %{REQUEST_SCHEME}s

# RequestHeader set X-Script-Name /searxng

# see limiter.py

RequestHeader set X-Real-IP %{REMOTE_ADDR}s

RequestHeader append X-Forwarded-For %{REMOTE_ADDR}s

</Location>

SSLEngine on

ErrorLog ${APACHE_LOG_DIR}/search.imtcoin.com-ssl-error.log

CustomLog ${APACHE_LOG_DIR}/search.imtcoin.com-ssl-access.log combined

Include /etc/letsencrypt/options-ssl-apache.conf

# uWSGI serves the static files and in settings.yml we use:: # # ui: # static_use_hash: true # # Alias /searxng/static/ /usr/local/searxng/searxng-src/searx/static/

SSLCertificateFile /etc/letsencrypt/live/search.imtcoin.com/fullchain.pem

SSLCertificateKeyFile /etc/letsencrypt/live/search.imtcoin.com/privkey.pem

</VirtualHost>

  

📝 📜 ⏱️ ⬆️