授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道
随着互联网的发展,搜索引擎越来越智能,提供的信息也通过多种算法推荐,但是毕竟是商业公司在做,难免会有一些商业广告,通过关键字搜索往往前几都是广告联盟,并且还是跟你搜索关键字相匹配的,很多朋友搜索完之后莫名其妙就进入到了广告页面,这都是因为厂商收集了你的搜索所携带的信息,那怎么解决呢?最近看到一个开源的元搜索引擎 SearXNG
,你可以理解成集众多主流搜索引擎优势于一身。当我搜索一个问题时,它不但能在Google
或Bing
找答案,还会同时帮我在其他搜索引擎里头翻翻,这样找到的信息会更丰富全面,而且可以保证你的搜索隐私,搜索请求全部由服务器发送,每次搜索也会生成随机浏览器指纹,这样我们的隐私泄露就大大降低。
然后最酷的一点就是,SearXNG
不记录我们的搜索行为,也不会弹出烦人的广告。整个搜索过程很干净简单,你说这不香吗? 我们来一起研究研究如何部署一个吧!
以下介绍取自官方文档
SearXNG
是一个免费的互联网元搜索引擎,它聚合了 70 多个搜索服务的结果。用户既不会被跟踪,也不会被分析。此外,SearXNG
还可以通过 Tor 来实现在线匿名。
无论实例类型如何(私有、公共),SearXNG
都以多种方式保护用户的隐私。从搜索请求中删除私人数据有以下三种形式:
删除私人数据意味着不向外部搜索引擎发送 cookie
并为每个请求生成随机浏览器配置文件。因此,公共实例还是私有实例处理请求并不重要,因为在这两种情况下它都是匿名的。IP 地址将是实例的 IP。但 SearXNG 可以配置为使用代理或 Tor
。 也支持结果代理。
与大多数搜索服务不同,SearXNG
不提供广告或跟踪内容。因此,私人数据不会转发给可能将其货币化的第三方。除了保护用户免受搜索服务的影响之外,引用页面和搜索查询都对访问的结果页面隐藏。
我们要想私有化部署,首先得有一台云服务器,这里我使用了AWS
的 Lightsail
,因为Lightsail
价格很便宜,而且启动的实例非常安全、可用性高
首先我们先进入到Lightsail
的控制台,直接在浏览器输入地址,回车进入:
https://lightsail.aws.amazon.com/ls/webapp/home/instances
你会看到如下界面:
这里是管理实例的列表页,我们点击按钮 Create Instance
进行实例创建
Lightsail
是有两种启动方式可以选择,一种是 Apps + Os
,另一种是 OS Only
,对于需要部署自己开发的应用时我们会采用 Os Only
,如果我们需要部署的软件在 Apps
中提供了,那么我们可以选择直接选择 Apps+Os
,这样可以省去我们部署应用的时间,因为 SearXNG
是不在 Apps
中的,所以我们选择 Os Only
这里我最后的环境是:
套餐我这里选择了专门免费的 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
完成安装后会弹出登录入口以及账户密码
安装好基本的LAMP
环境后,我们要开始部署 SearXNG
了,因为我们是 Ubuntu
,所以我们会使用 apt
管理工具进行依赖安装,Centos
的小伙伴需要注意
SearXNG
是通过 Python
的 Flask
框架提供服务的,所以我们需要先安装一下基础的 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
为了保证每个用户的权限,以及安全问题,我们需要为 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"
# 切换到 searxng用户
sudo -H -u searxng -i
#克隆searxng项目
git clone "https://github.com/searxng/searxng" \
"/usr/local/searxng/searxng-src"
注意:这个时候的操作都是在 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 .
我们把项目克隆下来的时候会有一份默认配置文件,文件地址在:
/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
来测试
然后我们 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"
$ sudo -H sed -i -e "s/debug : False/debug : True/g" "/etc/searxng/settings.yml"
$ 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
$ sudo -H sed -i -e "s/debug : True/debug : False/g" "/etc/searxng/settings.yml"
运行启动后我们发现这个 redis
好像连接不上,因为我们压根就没有安装 redis
通过查看配置文件发现通信是通过 sock
文件的,先不管啥通信吧,我们先把 redis
安装一下
apt install redis-server
redis-cli -h 127.0.0.1
sudo -H -u searxng -i
cd /usr/local/searxng/searxng-src
python searx/webapp.py
这次我们就发现没有任何报错了,SearXNG
的默认端口是 8888
,但是为了安全默认只开放给本地访问,大家可以通过 curl 127.0.0.1:8888
测试是否启动成功。
为了更方便的管理入口流量和负载均衡,我们将配置一个 Nginx
的反向代理作为流量处理入口,而且作为热门的 web server
,他的性能也比较可以,这里我们通过宝塔界面操作即可
找到站点列表,我们使用默认的 ip 站点进行反向代理配置:
提交保存后,我们通过公网IP就可以直接访问 SearXNG
服务了
通过实践,发现Lightsail
很适合小型个人或初创项目快速轻松上云,它由很多优点:
VPS
不同,Lightsail
实例搭建和管理极其简单,不需要了解基础设施知识。AWS
自动完成。AWS
基础设施的安全和高可用水平提供基础,无需自己搭建网络和存储。AWS
自动化运行。而对于我们这些个人开发者来说,Lightsail
就非常适合我们日常项目的部署,既保证了安全也保证了性能、可用性等,希望未来还能体验到亚马逊云科技的更多优秀产品!