summaryrefslogtreecommitdiffstats
path: root/README.md
blob: 72e2ed1362a912bdfc20a4fd8cc49ce3c73b9eef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# sear.c

sear.c is used as a lightweight replacement for [SearX](https://en.wikipedia.org/wiki/Searx) that proxies and caches search results
from the Google web search engine. The main advantages over SearX are speed and simplicity.

## instructions for debian and ubuntu systems

First add my software distribution repository [prog.sijanec.eu](https://prog.sijanec.eu) into your APT sources list.

```
apt install sear.c
service sear.c start
```

## requirements

* a POSIX system
* GNU C library
* GNU compiler collection (it's written in GNU C - it uses anonymous functions)
* GNU Make
* libxml2-dev (for the simple HTML/1.0 client and HTML parser)
* libmicrohttpd-dev (for serving results - use a reverse proxy, such as nginx, for HTTPS)
* xxd (for converting HTML pages into C arrays when compiling from source)

## compiling from source

```
make prepare
make
```

## instructions

* run the daemon - it starts listening on HTTP port 7327 (remember it by picturing phone keyboard buttons with letters SEAR (; )
* optional: create a reverse proxy for HTTPS
* navigate to [http://localhost:7327](http://localhost:7327) and do a couple of searches to see if everything works
* the horseshoe button redirects directly to the first result without wasting time on the results page. use if you feel lucky. (BP)
* check logs by navigating to /logs.html
* program also writes all logs to standard error

## a word about public instances

It's not recommended to run a public instance of sear.c yet, as google likes to prevent spam by using a captcha.

It's expected that I'll write a simple captcha forwarder so that users of public instances will solve captchas that are presented and keep the instance healthy.

Currently it's recommended to run private instances, protected by a password using a reverse HTTP proxy.

## screenshots

![screenshot in chromium 0](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc.png)
![screenshot in chromium 1](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc1.png)
![screenshot in chromium 2](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc2.png)
![screenshot in chromium 3](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc3.png)
![screenshot in chromium 4](https://cdn.sijanec.eu/img/2021/04/sear.c_prtsc4.png)