基于SearXNG搭建一个私有且隐私的搜索引擎

大佬们 为了这篇文章我前前后后弄了将近一周,点个关注吧,就当可怜可怜孩子了

现如今的互联网大环境下,我们的信息隐私越来越难以保障,比如使用百度的时候,总是会出现的”广告”;再比如我在百度搜索服务器,没几天某音就开始给我推“XXX云服务器优惠来袭”的广告。那么我们应该如何防止搜索引擎收集我们的个人喜好信息呢,方案之一就是 SearXNG “搜索引擎”。它是SearX搜索引擎的一个分支项目,它的信息来源于其他搜索引擎的信息汇总,(并不会返回广告内容);SearXNG 会为你的每次搜索生成随机浏览器配置文件,而且其他搜索引擎获取到的IP是你的实例IP,这就保证了其他搜索引擎无法获取到你的真实信息。


以下内容摘取自 SearXNG 官方文档 https://docs.searxng.org/

SearXNG 是一个免费的互联网元搜索引擎,它汇总了来自 70 多个搜索服务的结果。用户既不被跟踪也不被分析。

SearXNG 如何保护隐私:

无论实例的类型(私有、公共)如何,SearXNG 都以多种方式保护其用户的隐私。从搜索请求中删除私人数据有三种形式:

  1. 从前往搜索服务的请求中删除私人数据
  2. 不通过搜索服务(例如广告)转发来自第三方服务的任何内容
  3. 从转到结果页面的请求中删除私有数据

删除私人数据意味着不向外部搜索引擎发送 cookie 并为每个请求生成随机浏览器配置文件。因此,公共或私有实例是否处理请求并不重要,因为它在两种情况下都是匿名的。IP 地址将是实例的 IP。

与大多数搜索服务不同,SearXNG 不提供广告或跟踪内容。因此,私人数据不会转发给可能将其货币化的第三方。除了保护用户免受搜索服务之外,引用页面和搜索查询都对访问的结果页面隐藏。


那么接下来我们开始搭建 SearXNG 搜索引擎

1. clone配置文件

我们先为配置文件安排一个路径,官方文档里用的是 /usr/local 路径;cd 到该路径下

cd /usr/local

然后 git clone

git clone https://github.com/searxng/searxng-docker.git

这时候我们发现 /usr/local 目录下多了一个文件夹叫做 searxng-docker

进入该文件夹

cd searxng-docker

2. 修改配置文件

接下来我们修改 SearXNG 所需要的配置文件

2.1 修改 env 配置文件

nano .env

将注释删除,修改<host>为你的域名,修改<email>为你的邮箱,caddy将根据这两个配置项自动为你申请SSL证书

修改完成后按 Ctrl + X 退出,按 Y 保存修改,回车确定

2.2 修改 settings 配置文件

先生成密钥,直接执行命令

sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml

然后按需修改配置文件(其实上面生成密钥就够了,这里完全可以不修改)

nano searxng/settings.yml

修改完成后按 Ctrl + X 退出,按 Y 保存修改,回车确定

2.3 修改 docker-compose 配置文件(如果使用 Nginx 反代请跳过此步)

nano docker-compose.yaml

只需要修改下图方框处的宿主机端口(当然如果你不介意使用8080端口可以不做修改)

修改完成后按 Ctrl + X 退出,按 Y 保存修改,回车确定

如果你刚刚修改了端口的话那么你也需要修改一下 caddy 配置文件 Caddyfile

nano Caddyfile

将文件最后的这个 8080 换成你刚刚修改的端口

3.使用 Nginx 反代来代替 Caddy反代(与步骤2.3二选一)

由于上面使用的是 Caddy 反代,如果你的服务器同时使用 Nginx 运行别的网站的话就会导致你要么无法运行 SearXNG 要么就得放弃那些网站,所以我们可以选择使用 Nginx 来反代 SearXNG (经过我整整一下午的痛苦踩坑+翻阅官方文档,终于成功了 TvT )

下面的步骤我用到了宝塔面板,如不愿使用宝塔面板请自行使用命令行完成下述操作

首先将 docker-compose.yaml 中关于 Caddy 的部分删除

如果有需要的话修改映射端口,然后保存

然后用宝塔添加反代配置,目标URL为 http://127.0.0.1:8080 ,如果上面修改了端口则将 8080 替换为修改的端口,提交

接下来点击配置文件

将里面的内容全部删除

替换为以下配置,如果上面修改了端口则将 8080 替换为修改的端口,保存

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header Connection       $http_connection;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme         $scheme;
    proxy_buffering                   off;
}

Nginx 反代配置完成

4. 启动 SearXNG

4.1 安装 docker(如已安装请忽略)

直接执行一键脚本,等待安装完成

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装完成后启动 Docker 并设置开机自启

systemctl enable docker && systemctl start docker

4.2 安装 docker-compose(如已安装请忽略)

直接执行以下命令,等待安装完成

curl -SL "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4.3 启动 SearXNG

先运行以下命令

sudo docker-compose up

然后访问你的域名,效果如下

我们搜索一下 腾讯云 看看效果

可以看到搜索结果已经出来了,整合了多个搜索引擎的结果并且没有广告

如果没有问题的话就可以 Ctrl + C 然后运行以下命令守护 docker 进程了

sudo docker-compose up -d

接下来就可以愉快的使用 SearXNG 了

目前已知的注意事项

1. 请尽量不要使用国内的服务器进行搭建,否则可能因为服务器无法访问国外某些服务,导致搭建失败。这种情况部分日志如下

searxng  | Traceback (most recent call last):
searxng  |   File "/usr/local/searxng/searx/search/processors/abstract.py", line 75, in initialize
searxng  |     self.engine.init(get_engine_from_settings(self.engine_name))
searxng  |   File "/usr/local/searxng/searx/engines/zlibrary.py", line 39, in init
searxng  |     resp = http_get('https://z-lib.org', timeout=5.0)
searxng  |   File "/usr/local/searxng/searx/network/__init__.py", line 111, in get
searxng  |     return request('get', url, **kwargs)
searxng  |   File "/usr/local/searxng/searx/network/__init__.py", line 88, in request
searxng  |     response = future.result(timeout)
searxng  |   File "/usr/lib/python3.10/concurrent/futures/_base.py", line 446, in result
searxng  |     return self.__get_result()
searxng  |   File "/usr/lib/python3.10/concurrent/futures/_base.py", line 391, in __get_result
searxng  |     raise self._exception
searxng  |   File "/usr/local/searxng/searx/network/network.py", line 268, in request
searxng  |     return await self.call_client(False, method, url, **kwargs)
searxng  |   File "/usr/local/searxng/searx/network/network.py", line 264, in call_client
searxng  |     raise e
searxng  |   File "/usr/local/searxng/searx/network/network.py", line 249, in call_client
searxng  |     response = await client.request(method, url, **kwargs)
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_client.py", line 1513, in request
searxng  |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_client.py", line 1600, in send
searxng  |     response = await self._send_handling_auth(
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_client.py", line 1628, in _send_handling_auth
searxng  |     response = await self._send_handling_redirects(
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_client.py", line 1665, in _send_handling_redirects
searxng  |     response = await self._send_single_request(request)
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_client.py", line 1702, in _send_single_request
searxng  |     response = await transport.handle_async_request(request)
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_transports/default.py", line 307, in handle_async_request
searxng  |     with map_httpcore_exceptions():
searxng  |   File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
searxng  |     self.gen.throw(typ, value, traceback)
searxng  |   File "/usr/lib/python3.10/site-packages/httpx/_transports/default.py", line 77, in map_httpcore_exceptions
searxng  |     raise mapped_exc(message) from exc
searxng  | httpx.ConnectTimeout

2. 请尽量不要在同一台服务器上反复进行搭建-重装-搭建操作,也尽量不要在 .env 文件中反复使用同样的域名和邮箱,否则可能因为 Caddy 申请 SSL 不成功导致搭建失败,在日志中体现为 Caddy 反复申请 SSL 证书但不成功。

3.待更新


腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云 GTS 官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧 。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
基于SearXNG搭建一个私有且隐私的搜索引擎
现如今的互联网大环境下,我们的信息隐私越来越难以保障,比如使用百度的时候,总是会出现的”广告”;再比如我在百度搜索服务器,没几天某音就开始给我推“XXX云服务器...
<<上一篇
下一篇>>