Self-Hosting a Private Search Engine with SearXNG, Docker Compose, and TailScale


Hello and welcome to my blog!

I’m Alex from TailScale, and in this blog post, I’ll show you how to set up your own self-hosted search engine using SearXNG, Docker Compose, and TailScale. SearXNG is a fully open-source, self-hosted search engine that lets you combine multiple search engines into one place. There’s no tracking, no ads, and it’s fully privacy-respecting.

We’ll start by creating a runtime for our search instance. I’ll be using Proxmox, but you can use any virtualization platform you like. Once we have our runtime, we’ll install Docker and TailScale.

Next, we’ll create a Docker Compose file to drive our searching instance. We’ll also need to generate a TLS certificate using Let’s Encrypt to secure our search engine.

Finally, we’ll add our search engine to our TailNet using TailScale serve. This will allow us to access our search engine from anywhere we have an internet connection, without exposing it to the public internet.

So, what are the benefits of using SearXNG?

  • Privacy: SearXNG doesn’t track your searches or store your personal data.
  • Customization: You can customize SearXNG to your liking, including the search engines you use and the way the results are displayed.
  • Control: You have full control over your search engine, so you can be sure that it’s working the way you want it to.

If you’re interested in learning more about SearXNG, I encourage you to check out the following resources:

  • The SearXNG website: https://searx.info/
  • The SearXNG documentation: https://searx.info/documentation/

And if you’re interested in learning more about TailScale, I encourage you to check out the following resources:

  • The TailScale website: https://tailscale.com/
  • The TailScale documentation: https://tailscale.com/docs/

I hope this blog post has been helpful! If you have any questions, please feel free to leave a comment below.

Thanks for reading!


Leave a Reply

Your email address will not be published. Required fields are marked *