Alan Doyle

   lorg

featured image

What is it?

(Pronounced Lur-Ugh - An Irish word meaning “Track, trace; seek, search for.” )

lorg is a framework and javascript free privacy respecting Invidious/Google Text/Image Proxy based on a simple, lightweight API driven Meta Search Engine.

It uses Google to return Text and Image searches, while it’s Youtube search results are handled by an Invidious instance.

A demo site has been set up. This site is NOT meant for daily usage and is, deliberately, rate-limited.


Features

lorg has a number of interesting features.

  • lorg is incredibly lightweight.
  • All Text searches have the tracking removed and a clean URL returned.
  • It can be configured so the Image Search returns a link to the image, rather than the page which includes the image.
  • It also has a simple API whereby and ├Čnstances.jsonfile can be configured with a number of URLS to other lorg servers thus spreading the search load.
  • It normally uses a random User Agent but can be configured to send through the connection user Agent or a pre-configured User Agent.

Special searches


Example Config File

<?php

return [
    "base_url"                 => "https://search.mydomain.tld", // This doesn't technically need to be set but doesn't hurt :)
    'api_redirect'             => false,
    'api_redirect_url'         => '',
    'api_only_forced'          => false,
    'api_disabled'             => true,

    "footer_message"           => "This is a Demo Server.",

    "google_domain"            => "com",
    "google_language_site"     => "en",
    "google_language_results"  => "en",
    "google_number_of_results" => "20",

    "opensearch_title"         => "lorg",
    "opensearch_description"   => "My private lorg instance.",
    "opensearch_encoding"      => "UTF-8",
    "opensearch_long_name"     => "lorg Metasearch Engine",

    'accept_langauge'          => 'en-GB',

    'template'                 => 'lorg',
    'hide_templates'           => true,

    'use_client_ua'            => false,
    'use_specific_ua'          => '',
    'link_google_image'        => false,
    'use_image_proxy'          => true,
    'minify_output'            => true,
    'include_local_instance'   => true,

    "wikipedia_language"       => "en",

    "timezone"                 => "Europe/London",

    "invidious_url"            => "https://y.com.sb",
];

Example Instances.JSON file

{
    "instances": [
          {
              "Name" : "Search Page (API1)",
              "URL" : "https://mydomain.tld/api"
          },
          {
              "Name" : "Search Page (API2)",
              "URL" : "https://lorg.mydomain2.tld/api"
          },
          {
              "Name" : "Search Page (API3)",
              "URL" : "https://search.mydomain.tld/api"
          }
    ]
}

Available on DockerHub

docker pull alandoyle/lorg

Usage

docker run --name=lorg \
  -d --init \
  -v <MY_CONFIG_PATH>:/var/www/lorg/config \
  -v <MY_TEMPLATE_PATH>:/var/www/lorg/template \
  -p 8000:80/tcp \
  alandoyle/lorg:latest

Docker compose example:

version: "3"

services:
  lorg:
   image: alandoyle/lorg:latest
   container_name: lorg
   restart: unless-stopped
   init: true
   ports:
     - "8000:80/tcp"
   volumes:
     - ./lorg/config:/var/www/lorg/config
     - ./lorg/template:/var/www/lorg/template

Ports

Port Description
80/tcp HTTP

Volumes

Path Description
/var/www/lorg/config path for lorg configuration files
/var/www/lorg/template path for lorg template files

Screenshot

lorg screenshot


Alan Doyle