SearXNG

A free metasearch engine that aggregates results without tracking or profiling users.

Accessing SearXNG

  • Open your browser and visit: https://<SERVER_IP>/searxng
  • A browser SSL warning is expected (self-signed certificate)
  • Authentication is required (Basic Auth popup)
  • Authentication method: HTTP Basic Auth
  • Credentials are stored securely in: /root/.cloudzy-creds

Important Paths

  • Install directory: /root/searxng
  • Docker Compose file: /root/searxng/docker-compose.yml
  • Env file: /root/searxng/.env
  • Core configuration: /root/searxng/core-config/
  • Nginx vhost: /etc/nginx/sites-available/searxng
  • Auth file: /etc/nginx/auth/searxng.htpasswd
  • TLS certificates: /etc/nginx/ssl/

Enabling SSL with a Domain

1. Point your domain to the server IP.

2. Edit Nginx config and replace both server_name <IP>; with your domain (<your-domain>) for both HTTP (port 80) and HTTPS (port 443) blocks:

vim /etc/nginx/sites-available/searxng

3. Install Certbot:

apt install -y certbot python3-certbot-nginx

4. Run the following command to generate a valid Let’s Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

5. Replace SSL paths in Nginx config:

vim /etc/nginx/sites-available/searxng
# Before:
    # ssl_certificate       /etc/nginx/ssl/fullchain.pem;
    # ssl_certificate_key   /etc/nginx/ssl/privkey.pem;
# After:
    # ssl_certificate       /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key   /etc/letsencrypt/live/yourdomain.com/privkey.pem;

6. Restart Nginx to apply the changes:

systemctl restart nginx

7. Open your browser and visit: https://yourdomain.com

Notes

  • Customize SearXNG settings in /root/searxng/core-config/.
  • SearXNG listens on 127.0.0.1:8080 internally.
  • Nginx serves /searxng publicly with Basic Auth.
  • Docker volumes persist core data and Valkey cache.

Application Details