静看光阴荏苒
不管不顾不问不说也不念

一个聚合搜索引擎:searX

searx是一个用python开发的尊重隐私的聚合搜索引擎,搜索结果还是从各大搜索引擎抓取的,但不会记录你的cookie等信息,可以避免搜索引擎的追踪/AD精准投放等。。

这里水两种/两个系统的安装方法。。。

第一种使用Docker快速体验,开始前你需要准备一个域名解析到你的VPS。然后安装docker:

yum -y install curl 或者 apt -y install curl
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

安装docker-compose:

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

新建一个docker-compose的配置文件:

mkdir -p /opt/searx-docker && cd /opt/searx-docker && nano /opt/searx-docker/docker-compose.yml

写入如下配置:

version: "3"

services:
  searx:
    image: wonderfall/searx
    restart: always
    environment:
      BASE_URL: "https://searx.koko.cat"
      IMAGE_PROXY: "True"

  caddy:
    image: abiosoft/caddy
    restart: always
    volumes:
      - ./Caddyfile:/etc/Caddyfile:ro
      - caddycerts:/root/.caddy
    ports:
      - 80:80
      - 443:443
    environment:
      ACME_AGREE: "true" 
      DOMAIN: "searx.koko.cat"
      EMAIL: "example@gmail.com"
volumes:
  caddycerts:

上面这个配置文件有3个要改动的地方:BASE_URL/DOMAIN/EMAIL

接着再新建一个Caddy的配置文件:

nano Caddyfile

什么都不用改动,直接写入如下配置:

{$DOMAIN} {
    log stdout
    gzip
    tls {$EMAIL}
    proxy / searx:8888 {
        header_upstream Host {host}
        header_upstream X-Real-IP {remote}
        header_upstream X-Forwarded-For {remote}
        header_upstream X-Forwarded-Port {server_port}
        header_upstream X-Forwarded-Proto {scheme}
        }
}

如果是使用的CentOS7,那么需要放行80/443:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

启动:

docker-compose up -d

下面是手动安装的方法,手动的话肯定复杂一点,但也可以更详细的“定制”一下。。

CentOS7安装所需的依赖包:

yum -y groupinstall "Development Tools"
yum -y install git python-babel python-devel \
python-virtualenv zlib-devel libffi-devel libxslt-devel \
openssl-devel uwsgi uwsgi-plugin-python supervisor

Debian9安装所需的依赖包:

apt -y install git build-essential python-babel \
python-dev python-virtualenv zlib1g-dev libffi-dev \
libxslt-dev libssl-dev uwsgi uwsgi-plugin-python supervisor

CentOS7安装Golang:

wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -xzvf go1.12.5.linux-amd64.tar.gz -C /usr/bin
echo "export PATH=$PATH:/usr/bin/go/bin" >> ~/.bash_profile
source ~/.bash_profile

Debian9安装Golang:

wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -xzvf go1.12.5.linux-amd64.tar.gz -C /usr/bin
echo "export PATH=$PATH:/usr/bin/go/bin" >> ~/.profile
source ~/.profile

构建morty,这是一个额外的小工具,作用是可以去掉网页内的一些恶意元素,不是一定要部署的,但如果你选择部署那么此时就得再准备一个二级域名解析到你的VPS,然后执行下面的命令:

cd /opt && mkdir morty && export GOPATH=$PWD/morty
go get -u github.com/asciimoo/morty
cp /opt/morty/bin/morty /usr/bin

拉取searx的项目文件:

cd /opt
git clone https://github.com/asciimoo/searx.git

执行两次如下命令,将生成出来的随机数复制保存:

openssl rand -hex 16

编辑searx的配置文件:

nano /opt/searx/searx/settings.yml

要改动的地方如下:

search:
    language : "zh-CN"

server:
    port : 8888
    bind_address : "127.0.0.1"
    secret_key : "a1a3a826a9f80fc077ebf6d27f4dc4ff"

ui:
    default_locale : "zh"

result_proxy:
    url : https://morty.koko.cat
    key : f02574f55b75a74ddbcf31f1fcc545df

注:其中的secret_key/key使用你之前生成的随机数替换

启用py的虚拟环境/安装项目所需依赖:

cd /opt/searx
virtualenv searx-prod
source searx-prod/bin/activate
pip install --upgrade pip
pip install --upgrade setuptools
pip install --upgrade gunicorn
./manage.sh update_packages

CentOS7新建supervisor的配置文件:

nano /etc/supervisord.d/searx.ini

Debian9新建supervisor的配置文件:

nano /etc/supervisor/conf.d/searx.conf

写入如下配置:

[supervisord]
nodaemon=false

[program:searx]
priority=1
directory=/opt/searx
command=/opt/searx/searx-prod/bin/gunicorn -b 127.0.0.1:8888 searx.webapp:app
autorestart=true

[program:morty]
priority=1
directory=/usr/bin
command=/usr/bin/morty -listen 127.0.0.1:3000 -key f02574f55b75a74ddbcf31f1fcc545df
autorestart=true

注:morty启动参数后面的key要和之前在settings.yml内配置的保持一致。

CentOS7重启supervisor使其生效:

systemctl restart supervisord
systemctl enable supervisord

Debian9重启supervisor使其生效:

systemctl restart supervisor
systemctl enable supervisor

安装并新建Caddy的配置文件:

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

caddy的配置如下:

searx.koko.cat {
    log stdout
    gzip
    tls example@gmail.com
    proxy / 127.0.0.1:8888 {
        header_upstream Host {host}
        header_upstream X-Real-IP {remote}
        header_upstream X-Forwarded-For {remote}
        header_upstream X-Forwarded-Port {server_port}
        header_upstream X-Forwarded-Proto {scheme}
        }
}

morty.koko.cat {
    log stdout
    gzip
    tls example@gmail.com
    proxy / 127.0.0.1:3000 {
        header_upstream Host {host}
        header_upstream X-Real-IP {remote}
        header_upstream X-Forwarded-For {remote}
        header_upstream X-Forwarded-Port {server_port}
        header_upstream X-Forwarded-Proto {scheme}
        }
}

新建systemd服务文件:

nano /etc/systemd/system/caddy.service

写入如下配置:

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Restart=on-abnormal
User=root
Group=root
Environment=CADDYPATH=/etc/ssl/caddy
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile
ExecReload=/bin/kill -USR1 \$MAINPID
KillMode=mixed
KillSignal=SIGQUIT
TimeoutStopSec=5s

[Install]
WantedBy=multi-user.target

启动Caddy:

systemctl start caddy
systemctl enable caddy

有个小bug要修一下。。也谈不上是修。。这个最新版本如果用默认的主题+中文的话,preferences(首选项)的页面打不开,会报错500。。

如果你碰到了上述问题,我暂时的解决办法是,编辑如下文件:

nano /opt/searx/searx/templates/oscar/preferences.html

把如图的78行给删掉:

重启searx:

supervisorctl
restart searx

怎么说呢,用还是阔以用的,就是得设置一下,首先我建议你打开首选项,把Google的搜索给关闭了,然后启用duckduckgo/yahoo:

因为Google搜索的时候可能会弹一个人机验证的验证码,这个程序无法处理验证码,导致程序会报错。当然如果你VPS的IP比较干净的话,应该不会频繁出验证码就是。。

随便试试?搜个稍微敏感点的话题:

赞(7)
未经允许不得转载:荒岛 » 一个聚合搜索引擎:searX
分享到: 更多 (0)

评论 6

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    一直对这个很心动,不用越墙就能调用google的搜索结果。只是最近好像有些问题,老是提示“ Error! Engines cannot retrieve results.
    google (unexpected crash: CAPTCHA required)
    Please, try again later or find another searx instance.”

    还有一个小bug,将“Interface language”设为中文以后 ,再点击右上角的设置按钮就会崩溃,提示“Internal Server Error”

    yr6年前 (2019-06-19) Firefox 60.0 Firefox 60.0 Windows 7 Windows 7回复
    • google (unexpected crash: CAPTCHA required)和服务器的IP有一点关系。
      Internal Server Error的bug文末给出了一个临时解决办法。

      LALA6年前 (2019-06-20) Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    推荐这个https://dogedoge.com/

    TSLi6年前 (2019-06-20) Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 这个感觉真是近几年最好的小众搜索了,搜索又快又准。

      minzhu5年前 (2019-06-23) Google Chrome 75.0.3770.80 Google Chrome 75.0.3770.80 Windows 8.1 x64 Edition Windows 8.1 x64 Edition回复
    • 貌似不错,干净整洁

      lala5年前 (2019-06-27) Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿