searX 搭建个人聚合搜索引擎教程

  • A+
所属分类:网站技术

最近懒惰附身,有一段时间没更新新内容了。几个月前水了一篇文章:还有什么搜索引擎可以替代百度?里面列举了很多其他搜索引擎作为替代方案。不过呢,介绍的这些搜索引擎也各有优缺点,比如使用谷歌进行搜索,那么搜索结果一般来说非常精确,不过谷歌会尽可能的搜集你的隐私信息,然后精确的给你推荐广告。又如使用 DuckDuckGo ,不会追踪你的个人隐私,不过有时候搜索结果可能没那么精确,这时候还是需要使用 !g 跳转到谷歌搜索。

那么有没有这样一款搜索引擎,既不追踪你的隐私,也能给出非常棒的搜索结果呢?当然还是有的,这个搜索引擎就是 startpage ,不过该搜索引擎在国内已经无法使用,访问需搭梯。

基本上 startpage 已经非常好用了,隐私和搜索结果来说都做得非常好,就日常使用来说已经绰绰有余了。不过呢,对于喜欢折腾的小伙伴来说,如果可以搭建一个类似搜索引擎,并且可以做为个人专属搜索引擎来使用,既无广告,也无隐私泄露,那么是不是也是一件非常 cool 的事情。毕竟,生命不止,折腾不息。:)

扯了这么多废话,终于强行回到了正题(笑cry)。其实今天要介绍的就是如何搭建一个个人搜索引擎 searX 。如果你之前已经了解过了 searX ,那么以下内容请忽略。文章末尾会附上搭建完成后的实例。

关于 searX

关于 searX ,是一个基于 Python 开发的完全免费的开源项目

Github 地址:https://github.com/asciimoo/searx

Searx 从大约 82 种不同的搜索引擎中抓取搜索结果,然后整理优化后展示在前台搜索结果页面上。这些搜索引擎包括 Bing,Google,Reddit,Wikipedia,Yahoo和Yandex 等。而且还可以通过首页“首选项”界面进行设置,可以自定义设置是否启用、关闭某个搜索引擎的抓取结果。而且每次搜索结果会进行分类,分成 全部、文件、图片、IT、地图、音乐、新闻、学术、社交媒体、视频。根据这些分类,很容易找的自己想要的搜索内容。

在开始搭建之前,需要你入手一台国外 vps。为了搭建的简单快速,下面使用 Docker 的方法进行搭建。如果你不了解 Docker,那么在开始操作前,可以先简单了解下 Docker 的基本原理与及使用,关于 Docker 介绍可以参考这个文档:https://yeasy.gitbooks.io/docker_practice/ 。基本了解下镜像、容器,与及常用的创建、删除操作即可。

使用 Docker 搭建 searX

  1. 安装 Docker
  2. #CentOS 6
  3. rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  4. yum update -y
  5. yum -y install docker-io
  6. service docker start
  7. chkconfig docker on
  1. #CentOS 7、Debian、Ubuntu
  2. curl -sSL https://get.docker.com/ | sh
  3. systemctl start docker
  4. systemctl enable docker

构建 Dockerfile

进入 /root 目录(也可以选择其他目录):

  1. cd /root/

searX 搭建个人聚合搜索引擎教程

创建 Dockerfile 文件:

  1. vi Dockerfile

然后往文件里面写入:

  1. FROM python:2.7.15-jessie
  2. WORKDIR /
  3. RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list && \
  4. apt-get -y update && \
  5. apt-get -y install git && \
  6. git clone https://github.com/asciimoo/searx.git && \
  7. cd searx && \
  8. pip install -r requirements.txt && \
  9. sed -i "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml && \
  10. sed -i 's/bind_address : "127.0.0.1"/bind_address : "0.0.0.0"/g' searx/settings.yml && \
  11. sed -i 's/language : "en-US"/language : "zh-CN"/g' searx/settings.yml && \
  12. cd searx/templates/oscar/ && \
  13. sed -i '78d' preferences.html
  14. EXPOSE 8888
  15. CMD python /searx/searx/webapp.py

如图:

searX 搭建个人聚合搜索引擎教程

然后 wq 保存即可。

构建镜像

  1. docker build -t searx .

searX 搭建个人聚合搜索引擎教程

构建成功后如下:

searX 搭建个人聚合搜索引擎教程

启动镜像

  1. docker run -d --name searx -p 8888:8888 searx

searX 搭建个人聚合搜索引擎教程

这样,就搭建完成了,就可以使用 ip + 端口的方式进行访问,比如:http://178.62.73.xxx:8888/ 。访问后首页长这个样子:

searX 搭建个人聚合搜索引擎教程

然后点击又上方的首选项,进入设置选项:

searX 搭建个人聚合搜索引擎教程

可以自己设置是否关闭某项设置,比如开启关闭 duckduckgo、google 等搜索引擎支持,与及配置文件、图片、音乐、学术等搜索引擎。更多配置这里就不详细,如果你搭建后打开就一目了然。

searX 搭建个人聚合搜索引擎教程

如果是自己使用的话,那么使用 ip + 端口的方式已经可以满足了,不过有时候 ip 不好记,如果配置成域名访问,那么会方便很多。下面介绍下如何配置域名访问。

配置域名访问 SearX

首先,需要你已经购买入手了域名。然后把域名解析到你的服务器 ip 。关于域名解析这里忽略。

下载安装 Caddy

  1. curl https://getcaddy.com | bash -s personal
  2. mkdir -p /etc/caddy && mkdir -p /etc/ssl/caddy

searX 搭建个人聚合搜索引擎教程

配置 Caddy 配置文件,执行如下命令:

  1. echo "www.coderschool.cn {
  2. gzip
  3. proxy / 127.0.0.1:8888 {
  4. header_upstream Host {host}
  5. header_upstream X-Real-IP {remote}
  6. header_upstream X-Forwarded-For {remote}
  7. header_upstream X-Forwarded-Proto {scheme}
  8. }
  9. }" > /etc/caddy/Caddyfile
  1. #https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
  2. echo "www.coderschool.cn {
  3. gzip
  4. tls admin@xxxx.com
  5. proxy / 127.0.0.1:8888 {
  6. header_upstream Host {host}
  7. header_upstream X-Real-IP {remote}
  8. header_upstream X-Forwarded-For {remote}
  9. header_upstream X-Forwarded-Proto {scheme}
  10. }
  11. }" > /etc/caddy/Caddyfile

上面两个 echo 命令分开执行即可,注意,上面配置的 www.coderschool.cn 域名记得改为你自己的域名:

searX 搭建个人聚合搜索引擎教程

执行如下命令,创建 systemd 服务文件:

  1. echo "[Unit]
  2. Description=Caddy HTTP/2 web server
  3. Documentation=https://caddyserver.com/docs
  4. After=network-online.target
  5. Wants=network-online.target systemd-networkd-wait-online.service
  6. [Service]
  7. Restart=on-abnormal
  8. User=root
  9. Group=root
  10. Environment=CADDYPATH=/etc/ssl/caddy
  11. ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile
  12. ExecReload=/bin/kill -USR1 \$MAINPID
  13. KillMode=mixed
  14. KillSignal=SIGQUIT
  15. TimeoutStopSec=5s
  16. [Install]
  17. WantedBy=multi-user.target" > /etc/systemd/system/caddy.service

searX 搭建个人聚合搜索引擎教程

然后启动Caddy:

  1. systemctl start caddy
  2. systemctl enable caddy

上面会自动签发 https 免费证书,使用的是 Let's Encrypt。然后重新使用域名访问,就可以正常访问了。

一个搭建完的实例:https://srx.sx/ 。(非本站搭建,收集与互联网,本站搭建完成的测试实例就不公开了)。如果开启了谷歌抓取,用的人多可能会无法抓取到结果,受到谷歌验证码限制。所以建议搭建完后,仅个人使用。

关于 searX 的搭建和配置就介绍到这,如果有什么问题,欢迎留言。

图片引用自网络