Meta Search Engine Deployment

I just deployed SearXNG, a powerful and privacy-focused metasearch engine, in my home lab, but it was a challenge, to say the least. The search results are still aggregated from other searches, i.e, Google, DuckDuckGo, Mojeek, Mullvad, and StartPage. However, once pages are cached to my server, the only time it needs to go out onto the internet is for new pages or to update ones it has. The result is a lighter digital footprint and overall faster search results.

Along the way on this journey were some foes, including deploying the SearXNG container and wrestling with SSL certifications. Deploying the SearXNG container introduced challenges with internal networking and port mapping. This meant Caddy had to map the internal ports for SearXNG to my server’s ports, which I thought switching from my Apache configuration would solve. Unfortunately, the switch meant changing some other configurations that I liked, and in the end, I reverted to my Apache configuration.

Nearly two weeks into this project, and digging into the log files for specific errors, I came to my second challenge: manually configure both SearXNG and Vaultkey to map to Apache instead of Caddy. Dealing with the abstraction was akin to solving issues with all-in-one printers.

Once SearXNG was working through my server on HTTP, I was able to solve the easiest challenge. Obtaining an SSL Certification involved using certbot to properly test the configuration and be issued an SSL certificate. Though the process was long, and I almost gave up on it, in the end, I’m glad that I took up the challenge. I walked away with a deeper understanding of container networking, service abstraction, and reverse proxy configuration.