Skip to content

Latest commit

 

History

History
110 lines (84 loc) · 5.45 KB

README.md

File metadata and controls

110 lines (84 loc) · 5.45 KB

InstX

A client-side service that automatically updates the SearX(NG) instance you use to search based on the best one from searx.space. The "best" instance is configuable based criteria such as speed, privacy, and security. It updates the instance by hosting a small web server redirects you to the "best" instance. This web server is then set as your default web browser.

Installation

Requirements

Linux

  1. Build with make
  2. Set ExecStart in instx.service to the instx binary location and copy it to ~/.config/systemd/
  3. systemctl --user daemon-reload
  4. systemctl --user enable instx
  5. systemctl --user start instx

MacOS

  1. Build with make
  2. Replace /path/to/instx and USER in usr.Njinx.instx.plist with their correct values
  3. Copy usr.Njinx.instx.plist to ~/Library/LaunchAgents/
  4. Enable it with launchctl load -w ~/Library/LaunchAgents/usr.Njinx.instx.plist

Windows

  1. Build with make
  2. TODO

Notes about Makefile

The Makefile contains several build targets:

  • default / build: Builds for the default architecture
  • build-{GOOS}-{GOARCH}: Builds for predefined supported platforms
    • Windows amd64 and i386
    • Linux amd64 and i386
    • MacOS amd64 and arm64

Set as the default search engine

  1. Go to http://localhost:8080/getstarted
  2. Right-click on the URL and click "Add InstX" Add InstX
  3. Set "InstX" as the default search engine in your browser Set as default search engine

Instxctl

InstX comes bundled with a utility called instxctl that can do things such as query instx for instance statistics, force an update of the instance list, etc.

To access instxctl simply make a copy or symbolic link of the instx binary and rename it to something that includes the string "instxctl". This new binary can now be run via the command line in instxctl mode.

Configuration

The default config file is located at ~/.config/instx.yaml on MacOS/Linux and %appdata%/instx/instx.yaml on Windows. This can be overriden by setting $INSTX_CONFIG.

Required YAML Key Description Go Data Type Default Value
Yes default_instance Fallback instance string None
Yes proxy.port Web server port int 8080
No proxy.preferences_url Apply instance settings automatically string None
Yes updater.update_interval How often all the instances are queried and analyzed (in minutes) int64 180 (3 hours)
No updater.instance_blacklist Instances to ignore. Note that this only compares the host as defined here. []string None
Yes updater.advanced.initial_resp_weight float64 1.2
Yes updater.advanced.search_resp_weight float64 1.2
Yes updater.advanced.google_search_resp_weight float64 0.6
Yes updater.advanced.wikipedia_search_resp_weight float64 0.8
Yes updater.advanced.outlier_multiplier float64 2.0
Yes updater.criteria.minimum_csp_grade string A
Yes updater.criteria.minimum_tls_grade string A
Yes updater.criteria.allowed_http_grades []string [V, F, C]
Yes updater.criteria.allow_analytics bool no
Yes updater.criteria.is_onion bool no
Yes updater.criteria.require_dnssec bool no
Yes updater.criteria.searxng_preference string required

Tuning

Response weights

Applies to the following YAML keys

  • updater.advanced.initial_resp_weight
  • updater.advanced.search_resp_weight
  • updater.advanced.google_search_resp_weight
  • updater.advanced.wikipedia_search_resp_weight

The response weights control how important the response time when judging each instance

  • Initial: Initial response time of the instance
  • Search: Response time for all search results
  • Google: Response time from Google
  • Wikipedia: Response time from Wikipedia

Each setting is a float value n where 0 < n < 2. Values greater than 1 give more importance to the scenario while values less than 1 give less importance. n = 1 nullifies the weight.

Outlier Multiplier

Applies to updater.advanced.outlier_multiplier.

A float value n where 0 < n < 2. Higher outlier multiplier values lower the threshold at which a response time is considered an outlier.

SearX.space instance criteria

Applies to everything under updater.criteria

updater.criteria.minimum_csp_grade and updater.criteria.minimum_csp_grade accept letter grades A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, F. The two grades are the minimum grade the instance needs from dalf/http-observatory and cryptcheck.fr respectively.

updater.criteria.allowed_http_grades is an array of the allowed searx.space Instance grades. NOTE: "Cjs" doesn't seem to parse properly at the moment.

updater.criteria.searxng_preference accepts three values - required, forbidden, impartial - and dictates how SearXNG instances should be treated.

  • required: filters out any non-SearXNG instances
  • forbidden: filters out any SeaXNG instances
  • impartial: no preference

Apply instance settings automatically

Grab the saved preferences url at https://favorite.instance/preferences and paste it in instx.yaml in preferences_url. No need to cut out the original domain name or any other GET parameters.

Instance preferences