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

news/2025/2/21 3:07:34

         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 版本:

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:

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:

# 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

cd E:\python_project\searxng-docker-master

然后输入启动命令:

docker-compose up -d

结果如图:

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

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

搜索问题:

部署成功。

此时我们打开Docker Desktop:

就会发现容器在运行中。

最后不要 忘记关闭:

也是在PowerShell中输入:

docker compose down

关闭成功。 


http://www.niftyadmin.cn/n/5860138.html

相关文章

自学Java-面向对象高级(代码块、内部类、函数式编程、常用API、GUI编程)

自学Java-面向对象高级(代码块、内部类、函数式编程、常用API、GUI编程) 一、代码块1、认识代码块 二、内部类1、认识内部类2、成员内部类小结 3、静态内部类小结 4、局部内部类4、匿名内部类1、认识匿名内部类2、小结3、常见使用形式4、应用场景 三、函…

独立开发者灵感日报:关系代理,而不是另一个 CRM

独立开发者产品日刊,每日汇集 ProductHunt 热榜产品介绍,⚡️ 1 句 Slogan 榨干产品灵魂,这是日刊第 26 篇文章。 Andsend Slogan:关系代理,而不是另一个 CRM标签:生产力人工智能CRM为什么值得推荐&#x…

android,flutter 混合开发,pigeon通信,传参

文章目录 app效果native和flutter通信的基础知识1. 编解码器 一致性和完整性,安全性,性能优化2. android代码3. dart代码 1. 创建flutter_module2.修改 Android 项目的 settings.gradle,添加 Flutter module3. 在 Android app 的 build.gradl…

常用的 React Hooks 的介绍和示例

目录 1. useState2. useEffect3. useContext4. useReducer5. useCallback6. useMemo7. useRef8. useImperativeHandle9. useLayoutEffect10. useDebugValue 常用的 React Hooks 的介绍和示例: 1. useState useState 是一个用于在函数组件中添加状态的 Hook。 impo…

面试题之手写call,apply,bind

在面试中,手写call,apply,bind是常见的题目,主要考察对JavaScript中函数上下文(this)和参数传递的理解。对于我这个小菜鸟来说,这无疑也是一道难题呢,嘤嘤嘤 1. 手写 call call 方法…

《DeepSeek-V3:人工智能大语言模型》

《DeepSeek-V3:人工智能大语言模型》 1. 引言 我们介绍了 DeepSeek-V3,这是一个强大的专家混合 (MoE) 语言模型,总共有 671B 个参数,每个令牌激活了 37B。 为了实现高效的推理和具有成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 DeepSeekMoE 架构,这些…

Spring Boot中API响应结构的最佳实践

在Spring Boot应用程序中,设计一个清晰、一致的API响应结构是确保代码可维护性和可扩展性的关键。本文将探讨如何在Spring Boot中构建最佳的API响应结构,以便于前端开发人员理解和使用,同时为后端开发人员提供灵活的扩展能力。 1. 标准化的响…

java网络编程02 - HTTP、HTTPS详解

HTTP、HTTPS详解 文章目录 HTTP、HTTPS详解一:HTTP超文本传输协议1:HTTP协议的工作流程2:URI和URL2.1:DNS域名解析 3:HTTP报文的组成结构3.1:请求报文3.2:响应报文3.3:HTTP报文字段3…