If you want to use a meta-search engine that does not track you, SearXNG is an excellent possibility.
To install SearXNG on Ubuntu, I chose to go the docker way described in the official instructions. Unfortunately, I run into some issues, thus deciding to setting up this extended tutorial. I assume you have docker and docker-compose installed.
Step 1: Get searxng-docker
cd /usr/local
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
Step 2: Set hostname
Edit the .env file living in the root foled. Be aware that it is hidden. to see the file, you need to use ls -la. Edit the file with: nano .env
# By default listen on https://localhost
# To change this:
# * uncomment SEARXNG_HOSTNAME, and replace <host> by the SearXNG hostname
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)
SEARXNG_HOSTNAME=searxng.mysite.com
LETSENCRYPT_EMAIL=myaddress@mysite.com
Step 3: Generate your secret key.
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml
You can see your new key in searxng/settings.yml .
Step 4: Adjust IP & port
To change the IP address and port, you need to edit the docker-compose yaml file.
nano docker-compose.yml.
Find the searxng chapter and change the 127.0.0.1:8080/8080 to whatever you prefer. Leaving the standard values (with no port collisions) left me without the ability to access the searXNG engine. So I replaced 127.0.0.1 by 0.0.0.0.
searxng:
container_name: searxng
image: searxng/searxng:latest
networks:
- searxng
ports:
- "0.0.0.0:8888:8080"
Step 5: Bring searXNG up
Check that everything is working
docker-compose up
Start the daemon in the background with:
docker-compose up -d
If you want your searXNG engine to start on boot you need to start it with systemd.
cp searxng-docker.service.template searxng-docker.service
systemctl enable $(pwd)/searxng-docker.service
systemctl start searxng-docker.service
Run through reverse proxy (optional)
To avoid using a port number in the URL, I have my NGINX reverse proxy forwarding all requests to the docker image. As I then ran into the “too many requests” error, I had to set the limiter to false in the searxng/settings-yml file . If you want to run your instance outside your intranet, you should definitely protect your searXNG instance with an authentication method to avoid having your server flooded with un uncontrollable amount of requests.
To see what containers are running
docker container list
It should list your searXNG container:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
YOUR_ID searxng/searxng:latest "/sbin/tini -- /usr/…" 43 minutes ago Up 43 minutes 0.0.0.0:8888->8080/tcp searxng
Consulting log files
To display the logs of all your running containers, use:
docker-compose logs -f
If you want to only display the logs of one of the specific containers used for searXNG, use one of the following commands:
docker-compose logs -f caddy
docker-compose logs -f searxng
docker-compose logs -f redis
Updating searXNG
To update your searXNG instance, do the following:
docker-compose pull
docker-compose down
docker-compose up