使用Docker部署SearXNG

news2025/2/25 1:40:59

SearXNG 搜索引擎

SearXNG 是一个整合了超过70个搜索服务结果的免费的私有互联网搜索引擎,用户不会被网站跟踪或被建立档案进行特征分析,良好地保障了用户的隐私。知识库可以有效地弥补大模型的知识欠缺问题,但依旧无法补充或弥补知识库和大模型知识陈旧的问题,于是让大模型联网成为了非常重要的功能。

本章将介绍如何使用 Docker Compose 部署属于私人的 SearXNG 服务,项目地址点击即跳转。

Docker Compose 部署

可能会有小伙伴要问为啥不使用 SearXNG 官方维护的 SearXNG-Docker 项目 ?官方的这个项目默认使用的 Caddy 作为反向代理,最有可能出现的一个问题是会和你服务器上的 80 端口出现冲突,导致 SearXNG 无法与你的服务器上的其它网站共存。而注释掉官方项目中 docker-compose.yaml 有关 Caddy 的部分,就不如自行部署了。

首先创建一个路径用于存放配置文件。

mkdir {Your Path}\SearXNG && cd SearXNG

进入该路径之后使用 vim 创建 docker-compose.yaml 文件。

vim docker-compose.yaml

将下面的内容粘贴到文件内并保存

name: searxng

services:
  searxng:
    container_name: searxng
    image: searxng/searxng:latest
    restart: unless-stopped
    ports:
      - 8080:8080
    volumes:
      - ./searxng:/etc/searxng  # 默认在该文件所在的目录层级创建配置文件夹
    environment:
      - SEARXNG_BASE_URL=http://${SEARXNG_HOSTNAME:-localhost}/
      - SEARXNG_SECRET=${SEARXNG_SECRET}
      - SEARXNG_REDIS_URL=${SEARXNG_REDIS_URL:-redis://redis:6379}
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-10}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-10}
		logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
    networks:
      1panel-network:
        ipv4_address: 172.18.0.239

  redis:
    image: redis:alpine
    container_name: searxng-redis
    networks:
      1panel-network:
        ipv4_address: 172.18.0.240
    command: redis-server --bind 0.0.0.0


networks:
  1panel-network:
    external: true

需要注意的是:所有的 Networks 部分需要根据你的 Docker 容器的实际网络配置进行修改,且需要确认分配的 ipv4_address 地址在 Docker 容器的网络内没有被占用。

保存之后使用下面的指令创建、更新并运行容器。

sudo docker-compose up -d

你可以看到,在 {Your Path}\SearXNG 路径之下,创建了一个新的文件夹 searxng,该文件夹用于存放配置文件 settings.yml

在浏览器输入网址 http://Server-IP:Port 即可访问搜索引擎。

SearXNG 搜索页面

定制 SearXNG Engine

Internet Proxy

该项目是一个国外主导的开源私人搜索引擎,因此由于众所周知的原因,只能访问少量的搜索引擎,例如:Bing[通用搜索]、Bilibili[视频搜索]、Github[信息技术]、Arxiv[学术] 等等。如果需要访问更多的搜索引擎,需要使用网络代理服务。

进入到部署路径的 searxng 文件夹,就是刚才生成的那个文件夹,里面有一个 settings.yml 文件,使用具有权限的 vim 打开。

sudo vim settings.yml

配置的位置位于 outgoing 部分,如下下面的这部分前面的 # 删除

  #  proxies:
  #    all://:
  #      - http://proxy1:8080
  #      - http://proxy2:8080

你可以配置一个或多个代理用于访问搜索引擎,需要将 http://proxy:8080 替换成你的代理的地址。

除此之外,还可以设置请求超时.

request_timeout: 3.0

修改完成后需要重启容器,设置立即生效。

Search Formats

项目默认的搜索返回的格式为 html 格式,在使用网络爬虫或其它形式的分析器调用 API 时,希望返回 json 格式,这时就需要修改返回格式。

进入到部署路径的 searxng 文件夹,就是刚才生成的那个文件夹,里面有一个 settings.yml 文件,使用具有权限的 vim 打开。

sudo vim settings.yml

配置的位置位于 search 部分,在 formats 后按照格式添加你需要的格式,如下所示。

# formats: [html, csv, json, rss]
formats:
  - html
  - csv
  - json
  - rss

修改完成之后需要重启容器,设置立即生效。

调用 API 时,可以指定开启的格式:

http://Server-IP:Port/search?q=xxx&format=json

效果如下:

Json 格式返回搜索结果

SearXNG Search API

基础的API地址如下:

http://Server-IP:Port/search

搜索内容 q, required

http://Server-IP:Port/search?q=xxx

返回格式 format, optional

格式有 [ json, csv, rss ],三选一

http://Server-IP:Port/search?q=xxx&format=json

搜索分类 categories, optional

http://Server-IP:Port/search?q=xxx&categories=general

可选的类别有:

分类名称
general综合
images图片
videos视频
news新闻
map地图
music音乐
it信息技术
science科学
files文件
social_media社交媒体

搜索页数 pageno, default 1

搜索第几页的内容,推荐5页及以内。

http://Server-IP:Port/search?q=xxx&pageno=1

搜索引擎 engines, optional

http://Server-IP:Port/search?q=xxx&=apple&engines=google,bing,duckduckgo

具体的搜索引擎查询官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring中关于Bean的复习(IOC和DI)

文章目录 1.spring程序开发步骤1.1 导入spring开发的基本包坐标1.2 编写Dao接口和实现类1.3 创建spring核心配置文件1.4 在spring配置文件中配置UserDaoImpl1.5 使用Spring的Api获得Bean实例 2. Bean实例化的三种方式2.1 无参构造方法实例化2.2 工厂静态方法实例化2.3 工厂实例…

Docker内存芭蕾:优雅调整容器内存的极限艺术

title: “💾 Docker内存芭蕾:优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “🩰💥📊” 当你的容器变成内存吸血鬼时… 🚀 完美内存编排示范 📜 智能内存管家脚本…

一周学会Flask3 Python Web开发-flask3上下文全局变量session,g和current_app

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili flask3提供了session,g和current_app上下文全局变量来方便我们操作访问数据。 以下是一个表格,用于比较Flask中的…

【蓝桥杯单片机】客观题

一、第十三届省赛(一) 二、第十三届省赛(二)

QT中经常出现的用法:组合

在 C 中,一个类包含另一个类的对象称为组合( Composition )。这是一种常见的设计模式,用 于表示一个类是由另一个类的对象组成的。这种关系通常表示一种 " 拥有 " ( "has-a" )的关系。…

下载CentOS 10

1. 进入官网:https://www.centos.org/ 2. 点击右上角的Download进入下载页面。 3. 选择对应的CPU架构,点击ISOs下面的Mirrors开始下载。

简说spring 的设计模式

spring 的设计模式(23种…) (面试题)说说BeanFactory和FactoryBean的实现原理和区别? spring 中你还知道哪些设计模式?? 1.简单工厂模式 实质: 由一个工厂类根据传入的参数,动态决…

【 Avalonia UI 语言国际化 I18n】图文结合教学,保姆级教学,语言国际化就是这么简单(.Net C#)

完整项目地址 github : https://github.com/Crazy-GrowUp/AvaloniaI18nTest/tree/master gitee :https://gitee.com/jack_of_disco/avalonia-i18n-test 0.项目新建 Properties 文件夹 对应的项目配置文件里面就会增加 <Folder Include"Properties\" /> 1.项…

Spring Boot 日志管理(官网文档解读)

摘要 本篇文章详细介绍了SpringBoot 日志管理相关的内容&#xff0c;文章主要参考官网文章的描述内容&#xff0c;并在其基础上进行一定的总结和拓展&#xff0c;以方便学习Spring Boot 的小伙伴能快速掌握Spring Boot 日志管理相关的内容。 日志实现方式 Sping Boot 的日志管…

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…

网络运维学习笔记 021 HCIA-Datacom新增知识点02 SDN与NFV概述

SDN与NFV概述 经典IP网络是一个分布式的、对等控制的网络。 每台网络设备存在独立的数据平面、控制平面和管理平面。 设备的控制平面对等的交互路由协议&#xff0c;然后独立的生成数据平面指导报文转发。 它的优势在于设备与协议解耦&#xff0c;厂家间的兼容性较好且故障场景…

【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型

线程同步 条件变量 当一个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了。 例如&#xff1a;一个线程访问队列时&#xff0c;发现队列为空&#xff0c;它只能等待&#xff0c;直到其它线程将一个节点添加到队列中。这…

Docker Mysql 数据迁移

查看启动命令目录映射 查看容器名称 docker ps查看容器的启动命令 docker inspect mysql8.0 |grep CreateCommand -A 20如下图所示:我这边是把/var/lib/mysql 目录映射到我宿主机的/mnt/mysql/data目录下,而且我的数量比较大使用方法1的话时间比较久,所以我采用方法2 如果没…

四步彻底卸载IDEA!!!

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 大家好&#xff0c;我们今天来学习四步彻底卸载IDEA&#xff01;&#xff01;&#xff01; 首先我要提醒各位 如果你想删除 IDEA 相关&#xf…

HTTP实验(ENSP模拟器实现)

HTTP概述 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff0c;设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP定义了多种请求方法&#xff0c;常用的包括&#xff1a; GET&#xff1a;请求资源。 POST&…

【网络安全】常见的web攻击

1、SQL注入攻击 定义&#xff1a; 攻击者在HTTP请求中注入恶意的SQL代码&#xff0c;当服务器利用参数构建SQL语句的时候&#xff0c;恶意的SQL代码被一起构建,并在数据库中执行。 示例&#xff1a; 用户登录&#xff1a; 输入用户名xx&#xff0c; 密码 or 1 …

登录-05.JWT令牌-介绍

一.JWT令牌 JWT令牌是一种简洁的、自包含的格式&#xff0c;用于在通讯双方之间以json数据格式安全的传输数据。说白了&#xff0c;JWT令牌就是将json格式的数据进行封装&#xff0c;从而实现安全传输。 所谓简洁&#xff0c;就是指JWT令牌就是一个简单的字符串。 所谓自包含…

K8S下redis哨兵集群使用secret隐藏configmap内明文密码方案详解

#作者&#xff1a;朱雷 文章目录 一、背景环境及方案说明1.1、环境说明1.2、方案一&#xff1a;使用配置文件设置密码1.3、方案二&#xff1a;使用args 的命令行传参设置密码 二、redis secret configmap deployment参考2.1 创建secret-redis.yaml参考2.2 修改configmap配置参…

Spring框架基本使用(Maven详解)

前言&#xff1a; 当我们创建项目的时候&#xff0c;第一步少不了搭建环境的相关准备工作。 那么如果想让我们的项目做起来方便快捷&#xff0c;应该引入更多的管理工具&#xff0c;帮我们管理。 Maven的出现帮我们大大解决了管理的难题&#xff01;&#xff01; Maven&#xf…

鸿蒙NEXT应用App测试-专项测试(DevEco Testing)

注意&#xff1a;大家记得先学通用测试在学专项测试 鸿蒙NEXT应用App测试-通用测试-CSDN博客 注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注…