amallia / jivesearch

A search engine that doesn't track you.

Home Page:https://jivesearch.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

jive-search logo


Jive Search is the open source search engine that doesn't track you. Search privately, now : https://jivesearch.com



πŸ’Ύ Installation

The below will build and run a Docker Compose file for Elasticsearch, OpenResty (Nginx), PostgreSQL, Redis, and a NSFW/image classification server. The OpenResty build assumes you have a domain name as well as a Let's Encrypt SSL certificate. However, in order for the nginx.conf file to dynamically load your SSL certificate you will need to create a symlink to a generic "domain" folder (replace "example.com" with your domain). For local development you can skip this step.

$ ln -s /etc/letsencrypt/live/example.com /etc/letsencrypt/live/domain

Install and run

$ go get -u github.com/jivesearch/jivesearch
$ cd $GOPATH/src/github.com/jivesearch/jivesearch/docker
$ domain=example.com && onion=myonion.onion && data_directory=/path/to/data && sudo mkdir -p $data_directory/elasticsearch && sudo chown 1000:1000 $data_directory/elasticsearch && sudo DATA_DIRECTORY=$data_directory REDIS_PORT=6379 ES_HEAP=2g NGINX_DOMAIN=$domain ONION=$onion docker-compose build --no-cache && sudo DATA_DIRECTORY=$data_directory REDIS_PORT=6379 ES_HEAP=2g NGINX_DOMAIN=$domain ONION=$onion docker-compose up -d

For local development you don't need a Let's Encrypt certificate. You can simply access http://127.0.0.1:8000 directly by running cd ~/go/src/github.com/jivesearch/jivesearch/frontend && go run ./cmd/frontend.go --debug=true --provider=yandex

Elasticsearch may give you an error about max virtual memory areas. In that case:

# Add the following to the bottom of /etc/sysctl.conf (requires restart):
vm.max_map_count=262144

For systemd settings (replace "myuser" below and edit env variables as needed):

sudo curl -o /etc/systemd/system/frontend.service 
https://gist.githubusercontent.com/brentadamson/7b8117347909cc38384fed589a3d785d/raw/26b835df771b63349d656419848128cb13e8c29f/frontend
sudo curl -o /etc/systemd/system/images.service https://gist.githubusercontent.com/brentadamson/daafa09f8d06eb401e0eb72c2b992261/raw/357e66de29d56739ae41d61cbe227d36819e0df4/images
sudo curl -o /etc/systemd/system/crawler.service https://gist.githubusercontent.com/brentadamson/0880ef548130f69c2537049a550be8e8/raw/42269dfcba6d86aba49bc56ffa7e60a9eb7ebdf3/crawler

(The crawler is only necessary if you don't use a third-party search provider like Yandex.)

Wikipedia Dump File
$ cd $GOPATH/src/github.com/jivesearch/jivesearch/instant/wikipedia/cmd/dumper && go run dumper.go --workers=2 --dir=/path/to/dump/files --wikipedia=true --wikidata=true --wikiquote=true --wiktionary=true --truncate=400 --delete=true
Location Data

Location data is not logged but is used for local weather

$ sudo add-apt-repository ppa:maxmind/ppa
$ sudo apt update && sudo apt install geoipupdate
$ sudo nano /usr/local/etc/GeoIP.conf
  AccountID 0
  LicenseKey 000000000000
  EditionIDs GeoLite2-City GeoLite2-Country
$ sudo crontab -e
  56 3 * * 4 /usr/bin/geoipupdate
Timezone

A timezone database is used to get the timezone from a lat/lon for our clock instant answer

$ go get -u github.com/evanoberholster/timezoneLookup
$ go install $GOPATH/src/github.com/evanoberholster/timezoneLookup/cmd/timezone.go
$ rm -Rf ~/timezone && mkdir ~/timezone && cd ~/timezone
$ cd ~/timezone && wget https://github.com/evansiroky/timezone-boundary-builder/releases/download/2018i/timezones.geojson.zip
$ cd ~/timezone && unzip ~/timezone/timezones.geojson.zip
$ cd ~/timezone/dist && timezone -json "combined.json" -db=timezone -type=memory
$ sudo rm -Rf /usr/share/timezone
$ sudo mkdir /usr/share/timezone
$ sudo mv timezone.snap.json /usr/share/timezone
MusicBrainz

Instructions for MusicBrainz (to show the album discography instant answer) can be found here.


πŸš€ Roadmap

Our goal is to create a search engine that respects your privacy AND delivers great search results, instant answers, maps, image search, news, and more.

Marked items indicate progress has been made in that category. There is much more to do in each area. Suggestions are welcome!

  • Privacy
  • !Bangs
  • Core Search Results & Distributed Crawler
    • Advanced Search (exact phrase, dogs OR cats, -cats, site/domain search, etc.)
    • Filetype search
    • Language & Region
    • Phrase Suggester (a.k.a. "Did You Mean?")
    • Proxy Links
    • SafeSearch
    • Time Search (past year/month/day/hour, etc.
    • 3rd party search providers
      • Yandex API
  • Autocomplete
  • Instant Answers
    • Birthstone, camelcase, characters, coin toss, frequency, POTUS, prime, random, reverse, stats, user agent, etc.
    • Breach (a.k.a. have i been pwned)
    • Discography/Music albums
    • Economic stats (GDP, population)
    • Flight Info & Status
    • JavaScript-based answers
      • Basic calculator
        • Mortgage, financial and other calculators
      • CSS/JavaScript/JSON/etc minifier and prettifier
      • Converters (foreign exchange, meters to feet, mb to gb, etc...)
    • Maps
    • Nutrition
    • Package Tracking (UPS, FedEx, USPS, etc...)
    • Shopping
    • Stack Overflow
    • Stock Quotes & Charts
    • Weather
    • WHOIS
    • Wikipedia summary
    • Wikidata answers (how tall is, birthday, etc.)
    • Wikiquote
    • Wiktionary
    • Many more instant answers (including from 3rd party APIs)
    • Translate trigger words and answers to other languages
  • Image Search
  • Video Search
  • News
  • Custom CSS Themes
  • Tor

πŸ“™ Documentation

Jive Search's documentation is hosted on GoDoc Page here.


πŸ’¬ Contributing

Want to contribute? Great!

Search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue here.

You can also join us in our chatroom at https://discord.gg/cfxQkuh or contact us on Twitter @jivesearch.


πŸ“œ Copyright and License

Code and documentation copyright 2018 the Jive Search Authors. Code and docs released under the Apache License.

About

A search engine that doesn't track you.

https://jivesearch.com

License:Apache License 2.0


Languages

Language:JavaScript 60.5%Language:Go 32.6%Language:HTML 3.2%Language:CSS 3.1%Language:Python 0.3%Language:Dockerfile 0.3%