『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第1张图片

文章目录

    • 一、前言
    • 二、SearXNG 介绍
      • 2.1 SearXNG 如何保护隐私?
    • 三、启动Lightsail实例
    • 四、安装宝塔环境
    • 五、部署SearXNG
      • 5.1 安装python运行环境
      • 5.2 为SearXNG创建用户
      • 5.3 安装SearXNG
      • 5.4 安装项目依赖
      • 5.5 将配置文件移入到/etc目录
      • 5.6 运行SearXNG
      • 5.7 安装redis-server
      • 5.8 再次启动SearXNG
    • 六、配置Nginx反向代理
    • 七、总结

一、前言

随着互联网的发展,搜索引擎越来越智能,提供的信息也通过多种算法推荐,但是毕竟是商业公司在做,难免会有一些商业广告,通过关键字搜索往往前几都是广告联盟,并且还是跟你搜索关键字相匹配的,很多朋友搜索完之后莫名其妙就进入到了广告页面,这都是因为厂商收集了你的搜索所携带的信息,那怎么解决呢?最近看到一个开源的元搜索引擎 SearXNG,你可以理解成集众多主流搜索引擎优势于一身。当我搜索一个问题时,它不但能在GoogleBing找答案,还会同时帮我在其他搜索引擎里头翻翻,这样找到的信息会更丰富全面,而且可以保证你的搜索隐私,搜索请求全部由服务器发送,每次搜索也会生成随机浏览器指纹,这样我们的隐私泄露就大大降低。

然后最酷的一点就是,SearXNG不记录我们的搜索行为,也不会弹出烦人的广告。整个搜索过程很干净简单,你说这不香吗? 我们来一起研究研究如何部署一个吧!

二、SearXNG 介绍

  • 官方文:https://docs.searxng.org/index.html

以下介绍取自官方文档

SearXNG 是一个免费的互联网元搜索引擎,它聚合了 70 多个搜索服务的结果。用户既不会被跟踪,也不会被分析。此外,SearXNG 还可以通过 Tor 来实现在线匿名。

2.1 SearXNG 如何保护隐私?

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

  • 从发送至搜索服务的请求中删除私人数据
  • 不通过搜索服务转发来自第三方服务的任何内容(例如广告)
  • 从进入结果页面的请求中删除私有数据

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

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

三、启动Lightsail实例

我们要想私有化部署,首先得有一台云服务器,这里我使用了AWSLightsail ,因为Lightsail价格很便宜,而且启动的实例非常安全、可用性高

首先我们先进入到Lightsail的控制台,直接在浏览器输入地址,回车进入:

https://lightsail.aws.amazon.com/ls/webapp/home/instances

你会看到如下界面:

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第2张图片
这里是管理实例的列表页,我们点击按钮 Create Instance 进行实例创建

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第3张图片
Lightsail 是有两种启动方式可以选择,一种是 Apps + Os,另一种是 OS Only,对于需要部署自己开发的应用时我们会采用 Os Only,如果我们需要部署的软件在 Apps 中提供了,那么我们可以选择直接选择 Apps+Os,这样可以省去我们部署应用的时间,因为 SearXNG 是不在 Apps 中的,所以我们选择 Os Only

这里我最后的环境是:

  • Platform:Linux/Unix
  • blueprint: OS Only
  • OS: Ubuntu20.04

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第4张图片
套餐我这里选择了专门免费的 2GB 2vCPUs 配置,配置好后滑到最下面点击 Create Instance 即可完成实例创建

四、安装宝塔环境

这里为了方便,我们直接选择集成环境宝塔,它提供了全套的LAMP环境,可以很方便我们部署一些其他应用,并且有可视化界面操作,失误率可以大大降低

大家可以根据自己的操作系统在文档中找到安装方式

  • 官方文档:https://www.bt.cn/new/download.html

如果大家不知道,或者不确定自己是什么系统,那么直接选择通用安装,即万能安装脚本,执行以下命令即可

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

完成安装后会弹出登录入口以及账户密码

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第5张图片
登录后会提示安装软件,点击一键安装即可

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第6张图片

五、部署SearXNG

安装好基本的LAMP环境后,我们要开始部署 SearXNG 了,因为我们是 Ubuntu,所以我们会使用 apt 管理工具进行依赖安装,Centos 的小伙伴需要注意

5.1 安装python运行环境

SearXNG 是通过 PythonFlask 框架提供服务的,所以我们需要先安装一下基础的 Python 环境

sudo -H apt-get install -y \
    python3-dev python3-babel python3-venv \
    uwsgi uwsgi-plugin-python3 \
    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev

5.2 为SearXNG创建用户

为了保证每个用户的权限,以及安全问题,我们需要为 SearXNG 创建一个独立的用户,之后运行全部由这个独立用户操作

# 创建用 并设置家目录 用户名为 searxng
sudo -H useradd --shell /bin/bash --system \
    --home-dir "/usr/local/searxng" \
    --comment 'Privacy-respecting metasearch engine' \
    searxng

# 创建searxng项目目录
sudo -H mkdir "/usr/local/searxng"

# 将项目目录的权限给searxng用户
sudo -H chown -R "searxng:searxng" "/usr/local/searxng"

5.3 安装SearXNG

# 切换到 searxng用户
sudo -H -u searxng -i

#克隆searxng项目
git clone "https://github.com/searxng/searxng" \
                   "/usr/local/searxng/searxng-src"

5.4 安装项目依赖

注意:这个时候的操作都是在 searxng 用户下进行的

(searxng)$ python3 -m venv "/usr/local/searxng/searx-pyenv"
(searxng)$ echo ". /usr/local/searxng/searx-pyenv/bin/activate" \
                   >>  "/usr/local/searxng/.profile"

这里要注意,我们往 .profile 文件里面写内容了,默认是不生效在当前终端的,可以先通过 exit 退出
然后再执行

sudo -H -u searxng -i

然后开始我们的依赖安装

(searxng)$ command -v python && python --version
/usr/local/searxng/searx-pyenv/bin/python
Python 3.8.1

# update pip's boilerplate ..
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml

# jump to SearXNG's working tree and install SearXNG into virtualenv
(searxng)$ cd "/usr/local/searxng/searxng-src"
(searxng)$ pip install -e .

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第7张图片

5.5 将配置文件移入到/etc目录

我们把项目克隆下来的时候会有一份默认配置文件,文件地址在:

/usr/local/searxng/searxng-src/utils/templates/etc/searxng

文件名是:settings.yml

在这里插入图片描述
默认文件配置内容为:

# SearXNG settings

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true
  # public URL of the instance, to ensure correct inbound links. Is overwritten
  # by ${SEARXNG_URL}.
  # base_url: http://example.com/location

redis:
  # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
  url: unix:///usr/local/searxng-redis/run/redis.sock?db=0

ui:
  static_use_hash: true

# preferences:
#   lock:
#     - autocomplete
#     - method

enabled_plugins:
  - 'Hash plugin'
  - 'Self Informations'
  - 'Tracker URL remover'
  - 'Ahmia blacklist'
  # - 'Hostname replace'  # see hostname_replace configuration below
  # - 'Open Access DOI rewrite'

# plugins:
#   - only_show_green_results

这里我们需要修改一下 secret_key,为了安全,SearXNG 不让使用默认的密钥,我们把它改成 123456 来测试

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第8张图片
然后我们 exit 退出当前用户,使用 root 用户建立配置文件目录

$ sudo -H mkdir -p "/etc/searxng"
$ sudo -H cp "/usr/local/searxng/searxng-src/utils/templates/etc/searxng/settings.yml" \
             "/etc/searxng/settings.yml"

5.6 运行SearXNG

  • 开启debug,为了更好调试
$ sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searxng/settings.yml"
  • 切换searxng用户启动
$ sudo -H -u searxng -i
(searxng)$ cd /usr/local/searxng/searxng-src
(searxng)$ export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
(searxng)$ python searx/webapp.py
  • 可选:如果想关闭debug可以使用如下命令
$ sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searxng/settings.yml"

运行启动后我们发现这个 redis 好像连接不上,因为我们压根就没有安装 redis

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第9张图片
通过查看配置文件发现通信是通过 sock 文件的,先不管啥通信吧,我们先把 redis安装一下
在这里插入图片描述

5.7 安装redis-server

  • 使用root用户安装
apt install redis-server
  • 检测是否安装成功并且启动
redis-cli -h 127.0.0.1

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第10张图片
发现已经成功连接上了

5.8 再次启动SearXNG

sudo -H -u searxng -i
cd /usr/local/searxng/searxng-src
python searx/webapp.py

在这里插入图片描述
这次我们就发现没有任何报错了,SearXNG的默认端口是 8888,但是为了安全默认只开放给本地访问,大家可以通过 curl 127.0.0.1:8888 测试是否启动成功。

六、配置Nginx反向代理

为了更方便的管理入口流量和负载均衡,我们将配置一个 Nginx 的反向代理作为流量处理入口,而且作为热门的 web server,他的性能也比较可以,这里我们通过宝塔界面操作即可

找到站点列表,我们使用默认的 ip 站点进行反向代理配置:

  • 代理名称:searxng
  • 目标url:http://127.0.0.1:8888 是我们的searxng端口

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第11张图片
提交保存后,我们通过公网IP就可以直接访问 SearXNG 服务了

『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第12张图片
这里我们尝试搜索一下 AWS,发现非常的干净,没有广告
『亚马逊云科技产品测评』活动征文|基于Lightsail搭建私有匿名搜索引擎SearXNG_第13张图片

七、总结

通过实践,发现Lightsail很适合小型个人或初创项目快速轻松上云,它由很多优点:

  • 简化管理:和传统VPS不同,Lightsail实例搭建和管理极其简单,不需要了解基础设施知识。
  • 无服务器:无需理会操作系统和应用程序安装、软件升级等管理工作,全由AWS自动完成。
  • 预配置程序:提供几种常见系统和应用环境(LAMP、Node.js 等)供直接使用,开箱即用。
  • 精细计费:按每个实例的实际使用量进行精确计费,没有额外费用。
  • 网络已就绪:内外网络接口、公网IP和防火墙规则已经配置完毕。
  • 安全可靠:AWS基础设施的安全和高可用水平提供基础,无需自己搭建网络和存储。
  • 易拓展缩放:随着业务需求的变化,可以随时调整实例的计算和存储资源。
  • 无服务器:无需自己搭建和管理后端服务器基础设施,全交由AWS自动化运行。
  • 成本低廉:较传统主机租用或自建服务成本更低,定价透明明确。

而对于我们这些个人开发者来说,Lightsail就非常适合我们日常项目的部署,既保证了安全也保证了性能、可用性等,希望未来还能体验到亚马逊云科技的更多优秀产品!

你可能感兴趣的:(科技,搜索引擎,网络)