开源元搜索引擎SearXNG:使用Docker详细搭建部署与使用

SearXNG 是一款基于Python开发的开源免费互联网元搜索引擎,于2021年从SearX 分叉而来。它聚合了来自如Google、Bing等众多搜索引擎及不同数据库的结果,集成超100种公开搜索引擎资源,覆盖综合、新闻、图片等11大类。SearXNG极其注重隐私保护,不会追踪用户或建立档案,采用随机浏览器档案、以实例IP为来源、不使用Cookie等措施。它支持用户自定义搜索引擎,可根据喜好调整默认语言等设置,还具有多语言支持、安全加密连接等特点,并且能轻松部署在NAS、通过Docker部署或手动部署在服务器上,为用户提供了一个私密、可定制、功能强大的搜索工具。

本文将详细介绍在Windows系统上使用Docker搭建Searxng的步骤以及使用,注意:项目的部署需要用户了解并熟悉Anaconda、Pytorch等框架;

项目地址: https://github.com/searxng/searxng-docker

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

安装 Docker 和 Docker Compose

在开始部署 SearXNG 之前,需要在电脑上安装Docker Desktop

下载完毕后,确保 Docker Desktop 已经正确安装并且正在运行。你可以在任务栏或系统托盘中找到 Docker 图标来确认其状态。

若未能启动或显示Docker stopping,请参考Docker安装与部署文章。

对于docker compose,

通常 Docker Compose 已经自动包含在内。你可以通过以下步骤进行验证:打开命令提示符或 PowerShell,输入以下命令查看 Docker Compose 版本:

bash 复制代码
docker compose version

如果显示出版本信息,说明 Docker Compose 已正确安装;若提示找不到命令,可尝试重新安装 Docker Desktop 来解决。

部署Searxng

若不使用Git方法下载镜像的话,打开Searxng的项目地址:

点击Download ZIP

将下载的压缩包解压 到任意位置,如:E:\python_project\searxng-docker-master

注意此时要修改以下几处:

主要修改docker-compose.yamlsearxng/settings.yml:(直接复制粘贴即可)

docker-compose.yaml:

bash 复制代码
version: "3.7"

services:
  caddy:
    container_name: caddy
    image: docker.io/library/caddy:2-alpine
    network_mode: host
    restart: unless-stopped
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data:rw
      - caddy-config:/config:rw
    environment:
      - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost}
      - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

  redis:
    container_name: redis
    image: docker.io/valkey/valkey:8-alpine
    command: valkey-server --save 30 1 --loglevel warning
    restart: unless-stopped
    networks:
      - searxng
    volumes:
      - valkey-data2:/data
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    networks:
      - searxng
    ports:
      - "8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

networks:
  searxng:

volumes:
  caddy-data:
  caddy-config:
  valkey-data2:

这里主要是修改了端口映射:- "127.0.0.1:8080:8080"改成了- "8080:8080"。这样可以使用允许任意ip访问。

searxng/settings.yml:

bash 复制代码
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: "这里填你随便一个密码即可"  # change this!
  limiter: true  # can be disabled for a private instance
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0
search:
  safe_search: 0
  autocomplete: ""
  default_lang: ""
  formats:
    - html
    - json
    - csv
    - rss
ratelimit:
    enabled: true
    # 调整每秒允许的请求数
    per_second: 5  
    # 调整每分钟允许的请求数
    per_minute: 60  

这里主要是修改了secret_key,不允许为默认值,调整了每秒每分允许的请求数,避免在运行时出错,以及search的formats允许返回json格式(一定要加,否则报403错误)。下面就可以直接启动服务了。

运行Searxng

运行Searxng时,一定要确保Docker在运行中,

打开win+r

输入:PowerShell

进入Searxng所在的文件夹,例如:E:\python_project\searxng-docker-master

bash 复制代码
cd E:\python_project\searxng-docker-master

然后输入启动命令:

bash 复制代码
docker-compose up -d

结果如图:

表示启动成功,接下来验证是否有效,

打开电脑浏览器,在地址栏输入:http://localhost:8080/search

搜索问题:

部署成功。

此时我们打开Docker Desktop:

就会发现容器在运行中。

最后不要 忘记关闭:

也是在PowerShell中输入:

bash 复制代码
docker compose down

关闭成功。

相关推荐
love530love1 小时前
Windows 下部署 SUNA 项目:虚拟环境尝试与最终方案
前端·人工智能·windows·后端·docker·rust·开源
Elastic 中国社区官方博客1 小时前
连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
zwjapple3 小时前
docker创建postgreSql带多个init的sql
docker·postgresql
太空1号4 小时前
飞腾D2000,麒麟系统V10,docker,ubuntu1804,小白入门喂饭级教程
linux·c++·docker
liux35284 小时前
彻底掌握 Containerd:生产环境安装部署全解析
运维·docker·容器
arui24 小时前
Docker部署与应用、指令
阿里云·docker·容器
junyuz5 小时前
Dify docker内网部署常见问题记录
python·docker
自在的LEE5 小时前
当 AI 大模型遇上企业级架构:LLMProxy 实战指南
人工智能·后端·容器
落幕__6 小时前
Docker (一)
运维·docker
Hoking6 小时前
Docker或Docker-Compose时间时区配置
java·docker·容器