Add https://searx.mxchange.org
Requirements (make sure to read all of them)
- [X] It is my instance. I bought the domain myself and I own this domain. Free domains (e.g. Freenom) and shared domains (e.g. noip.com) are not allowed.
- [X] I'll keep my instance up to date, at the very least 1 week old. Example program for keeping up to date: watchtower, cron, ouroboros.
- [X] I give the right to
check.searx.spaceto check my instance (every 3 hours for the response times, every 24 hours for the other tests). - [X] I acknowledge that managing a public instance is not an easy task and require spending time to keep the instance in good health. E.g. look after your instance by using a monitoring system.
- [X] I guarantee to keep an uptime per month of my instance at minimum 90%. Please ask for a removal of your instance if there is a planned long downtime or notify us here for a short downtime.
- [X] I do not track the users of my instance with any analytics or tracking software.
- [X] I won't try to manipulate the ranking of my instance in a way that give an unfair advantage over the other public instances in the list. (e.g. caching requests for searx.space server)
- [X] I control the final webserver (software) that is serving the requests to the users of my instance. Here is a non-exhaustive list of forbidden hosting types: Cloudflare, PaaS, managed (hosting provider controlled) HTTP(S) load balancer (e.g. AWS ALB), shared Web hosting. TCP load balancer is fine. Cloudflare DNS only (grey cloud) is fine.
- [X] If needed, I can restrict users from accessing my instance for the only sole reason of keeping my instance in working conditions for the other users (detailed description - evidence need to be provided when asked). Other means of restriction is forbidden.
Bot protection requirement
- [X] Yes I have configured the
server.public_instanceparameter.
Source code URL
No response
Comment
Local /etc/searxng/limiter.toml has link_token=true enabled.
@maintainers Warning, instance found in the commit history, make sure to wait 1 week before adding the instance if needed. See here for more information: https://github.com/searxng/searx-instances#add-a-previously-submitted-instance
Commit ID: 5333343cd683d6e983e299fb3ac170d5542fbaed
- Date: Tue Sep 5 13:31:24 2023 +0200
- Description: [mod] remove non SearXNG instances (the old searx instances) from the list (#331)
- Author: Markus Heiser
Commit ID: 73460260597a8b8f65ab5b00d7b56ba9e0d316c5
- Date: Wed Jan 29 15:41:16 2020 +0100
- Description: Update the model, import existing instances
- Author: Dalf
Please consider joining our Matrix room for public instance maintainers by joining our Matrix room: https://matrix.to/#/#searxng:matrix.org then pinging @ unixfox, @ dalf and @ mrpaulblack for asking to be invited to the Matrix room. We discuss troubles managing a public instance, sharing some advices (like how to protect against bots), announcing big changes in searxng and more.
Your TLS and CSP grades are not optimal. However, these grades can be ignored if you do not mind being ranked lower on searx.space. If you want to fix it before adding your instance, just do it and notify us when finished. Otherwise, tell us to add your instance now.
That's odd, it claims that headers for HSTS aren't set. But my configuration file contains them (by default I add them for all):
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Frame-Options "sameorigin"
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
Header always set Referrer-Policy: no-referrer
</IfModule>
How I do it here:
<Location />
# httpd dmn entry PHP support BEGIN.
# httpd dmn entry PHP support END.
Options -Indexes +Includes +FollowSymLinks +MultiViews
SetHandler uwsgi-handler
uWSGISocket /run/uwsgi/app/searx/socket
uWSGImaxVars 256
<LimitExcept GET POST HEAD DELETE>
<RequireAll>
Require all granted
</RequireAll>
</LimitExcept>
</Location>
The settings.yml file does set the headers, I didn't know that.
My apache is not setting those headers you can see at https://developer.mozilla.org/en-US/observatory/analyze?host=searx.mxchange.org#headers
Pleasee add me now.
Please use the edit button. It's unnecessary to send that many comments.
Little head-up for my instance: The (by me) selected default search engines seem to block my server's IP address. So you have to choose your own instances and save the settings string in a text file.
hello @Quix0r, make sure to keep your instance up to date. your instance needs to be at the very least 1 week old, it's 2 months old!
when there will be a second warning, your instance will be removed.
I now run a small shell script:
#!/bin/sh
cd ${HOME}/searx/ || exit 255
git pull --all || exit 255
./manage py.build
Of course I need to execute /etc/init.d/uwsgi restart as root. But else it is now updated automatically.
@Quix0r - Your instance is out of date again: 2025.6.15+b12d2b317 - check your script please.
I'll keep my instance up to date, at the very least 1 week old. Example program for keeping up to date: watchtower, cron, ouroboros.
I'm updating the node manually as I have touched the settings.yml file and it might cause conflicts on rebase.
valkey wasn't installed. Under Devuan/Debian you need to install valkey-server which listens on the same port as REDIS does. So if you need to run both, change the port in /etc/valkey/valkey.conf to an other number.
Great, thanks.
Your instance is now coming back as 2025.9.28+3aeb49a74+dirty, +dirty appears when you leave uncommitted changes to searxng.
A git diff brings no output here as I have committed my local changes to settings.yml. I run it directly from the source root directory.
[uwsgi]
# Who will run the code
uid = searx
gid = searx
# Cache
cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
# disable logging for privacy
disable-logging = true
# Number of workers (usually CPU count)
workers = 2
# The right granted on the created socket
chmod-socket = 666
# Plugin to use and interpreter config
single-interpreter = true
master = true
plugin = python3,http
lazy-apps = true
enable-threads = true
# Module to import
module = searx.webapp
# Virtualenv and python path
virtualenv = /home/searx/searx/local/py3/
pythonpath = /home/searx/searx/
chdir = /home/searx/searx/searx/
The +dirty suffix doesn't mean your tracked files have diffs, it means something in your working tree is different from a clean git checkout.
I will need you to fix this to keep your instance on the public list.
That is might be my local commit on settings.yml then where I added my secret key, base URL and changed some other configuration. An idea is a to add searx/settinhs.yml to .gitignore and rename it settings.yml.dist. Then people can have local changes to their settings file and still have a clean checkout.
An other also very common way is to have 2 configuration files, a committed settings.yml and an ignored settings-local.yml with loading order settings -> local. So the local settings can overwrite "generic" settings.
That is might be my local commit on
settings.ymlthen where I added my secret key, base URL and changed some other configuration
There is no need to modify the searx/settings.yml file in the repository.
Create a local /etc/searxng/settings.yml file, in its first line set use_default_settings: true and change only what is needed. Here is a minimal example:
use_default_settings: true
server:
secret_key: "ultrasecretkey" # change this
base_url: http://example.org/location # change this!
Ah, so you have a "local configuration" file as I described as 2nd option. That's what I didn't know. I then revert my changes and before set them in your mentioned file.
All done!
Nicely done! Also to go back to the original issue, can you setup some sort of auto update for your instance as it's already been noted as outdated twice in the past.
I'm currently doing this here:
$ crontab -l
MAILTO="[email protected]"
# m h dom mon dow command
@weekly ${HOME}/update.sh 2>&1
And update.sh:
#!/bin/sh
cd ${HOME}/searx/ || exit 255
echo "$0: git pull ..."
git pull --all || exit 255
echo "$0: ./manage py.build ..."
./manage py.build || exit 255
echo "$0: All done."