【Docker项目】SearXNG自建搜索引擎

📘 教程 · 2023-06-23
【Docker项目】SearXNG自建搜索引擎

一个完全开源的搜索引擎聚合平台,提供来自 Google、Bing、Yahoo 等 70 多种各大视频、图片、搜索、磁力等网站结果展示,并对搜索结果进行优化,同时不会存储任何搜索信息。

项目介绍

一个基于 Python 的完全开源免费搜索引擎平台,为你提供来自 Google、Bing、Yahoo 等 70 多种各大视频、图片、搜索、磁力等网站结果展示,并对搜索结果进行优化,同时不会存储你的任何搜索信息,搭建也很方便。

该项目不包含百度搜索等国内搜素引擎,因此建议在国外服务器上搭建。
如搭建在国内服务器上,建议使用代理。

尊重隐私、可定制的元搜索引擎。

SearXNG是searx的一个分支。(原因是内部对项目发展的想法不一)

以下是一些特性:

  • 桌面、平板和手机上自适应显示
  • 支持暗夜模式(你可以在首选项中选择)
  • 支持从右到左的语言
  • 查看屏幕截图
  • 支持Docker部署,还可以为ARM64和ARM/v7架构构建镜像(树莓派也能安装)

官方GitHub仓库:https://github.com/searxng/searxng

官方Docker GitHub仓库: https://github.com/searxng/searxng-docker

官方DockerHub仓库: https://hub.docker.com/r/searxng/searxng

官方文档:https://docs.searxng.org

官方Demo:https://searx.space

本人自建Demo:https://search.nice2cu.cc

项目搭建

  1. 创建安装目录
mkdir root/docker_data/searxng
  1. 在创建的文件夹下拉取官方GitHub仓库
cd root/docker_data/searxng
git clone https://github.com/searxng/searxng-docker.git
  1. 进入到克隆下来的目录,编辑docker-compose.yaml文件
  • 官方GitHub仓库中的yaml文件使用的是caddy反代,有一个问题就是可能会和你网站上的80端口冲突,导致searXNG与你服务器上的其他网站无法共存,我们这边把caddy部分注释掉或者删掉,改为采用NginxProxyManager配置反代。
version: '3.7'

services:

  # caddy:
  #   container_name: caddy
  #   image: caddy:2-alpine
  #   network_mode: host
  #   volumes:
  #     - ./Caddyfile:/etc/caddy/Caddyfile:ro
  #     - caddy-data:/data:rw
  #     - caddy-config:/config:rw
  #   environment:
  #     - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost:80}
  #     - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
  #   cap_drop:
  #     - ALL
  #   cap_add:
  #     - NET_BIND_SERVICE

  redis:
    container_name: redis
    image: "redis:alpine"
    command: redis-server --save "" --appendonly "no"
    networks:
      - searxng
    tmpfs:
      - /var/lib/redis
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE

  searxng:
    container_name: searxng
    image: searxng/searxng:latest
    networks:
      - searxng
    ports:
     - "127.0.0.1:8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
networks:
  searxng:
    ipam:
      driver: default

# volumes:
#   caddy-data:
#   caddy-config:
  1. 如果需要配置反向代理,使用域名访问,则需要编辑目录下的.env文件,取消SEARXNG_HOSTNAME注释,添加自己的域名
# By default listen on https://localhost
# To change this:
# * uncomment SEARXNG_HOSTNAME, and replace <host> by the SearXNG hostname
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)

SEARXNG_HOSTNAME=yourdomain.com
# LETSENCRYPT_EMAIL=<email>
  1. yaml文件路径下,运行以下代码,运行docker容器
docker-compose up -d
  1. 访问容器

容器运行后使用ip:8080即可访问SearXNG。如果不能访问,请查看防火墙是否放行该端口(腾讯云,阿里云,华为云,甲骨文等服务器提供商需在控制台面板手动关闭防火墙并放行端口)。如果配置了反代,则通过域名就可以访问。

  1. 更新命令
cd root/docker_data/searxng/searxng-docker
docker-compose up -d    # 重新拉取镜像并运行镜像
docker image prune    # 删除旧版本的镜像

反向代理

查看【Docker项目】Nginx Proxy Manager反向代理)

配置文件编辑

docker文件路径下的./searxng/settings.yml可以更改搜索引擎的一些默认设置。比如默认开启的搜索引擎,搜索引擎的自动补全以及一些界面的设置。

具体的设置和可选项详见官方文档:https://docs.searxng.org

Docker
Theme Jasmine by Kent Liao