Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.
/ adFreeSearch Public archive

A private, secure, locally hosted meta search engine

Notifications You must be signed in to change notification settings

Isaac-To/adFreeSearch

Repository files navigation

1. adFreeSearch

A private, security oriented search engine

1.1. Features

  • Self Hostable, you can build this on docker with the provided Docker files or just run it through the main.py file.
  • Supports the aggregation of results from multiple sources.
  • Strips the link based tracking of results that are derived from search engines.
  • Ranking of results based on multiple sources and how often the source occurs. The more times that the result appears across different sources, the higher it will be ranked on the output.
  • Minimalist design, free of ads or any images (speeds up render times)
  • No JS
  • Doesn't store IPs, queries (except when it may print on the console (usually an accident of mine for forgetting to remove or comment out print statements used in testing))
  • All interactions are made through POST requests where possible
  • A widget sidebar (shows up based on the queries featuring information from a variety of sources)
  • Image search (only deviantart right now)

1.2. To-Dos

  • Dark Mode (Currently compatible with browser wide dark modes)
    • You can use an extension like Dark Reader or in a Chromium based browser, go to Chrome Flags, Edge Flags, and enable force dark theme globally
  • Add more image sources
  • Add adjustable settings
  • Add video search
  • Possibly a maps function (likely through OSM - Open Street Maps)

1.3. How to run (Basic)

Prerequisite: Have Docker installed to your system

  1. Run this command in the terminal:

    This will only install the adfreesearch search engine to docker, allowing you to open the webpage without any encryption. Only doing this much may be insecure as well as posing as a privacy risk if you intend on port forwarding the server to the internet.

    docker run -d -p EXTERNAL_PORT:5000 ghcr.io/isaac-to/adfreesearch:master
    
    • replace EXTERNAL_PORT with the port of your choosing.

1.3.1. HTTPS/TLS encryption (Optional but highly reccomended)

This can be done a couple different ways, but I reccomend using caddy which poses as a reverse proxy. Caddy will automatically generate a Let's Encrypt Certificate to apply TLS encryption to all outgoing traffic.

  1. Install Caddy on the host computer OR run Caddy on a docker network that can access the other image

  2. Run this command in the terminal:

    This will create a reverse proxy from your designated port in step 1 to port 443 the default SSL port.

    caddy reverse-proxy --to 127.0.0.1:ADFREESEARCHPORT
    
    • replace ADFREESEARCHPORT with the port that you assigned to the adfreesearch container when you initialized it
  3. You should now be able to access the site from port 443 with HTTPS/TLS encryption enabled. You may notice that it is using a self signed certificate if you're accessing the site through an IP. Don't worry, once there is a domain name pointing to the server and you're accessing the site through that domain name, Caddy will automatically generate a Let's Encrypt Certificate and apply it.