Docker部署SearXNG搜索服务

用国内镜像源一键安装 Docker

1
2
3
4
5
6
7
8
# 先删除失败的脚本
rm -f get-docker.sh

# 执行阿里云镜像版 Docker 安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 验证安装
docker --version

设置 Docker 权限

1
2
3
4
5
6
7
8
# 1. 将当前用户加入 docker 组(永久解决权限问题)
sudo usermod -aG docker $USER

# 2. 立即生效权限(无需重启系统,重新加载用户组)
newgrp docker

# 验证权限:执行以下命令无报错即成功
docker ps

配置 searxng 支持 valkey

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
mkdir -p ~/searxng && cd ~/searxng

# 进入 searxng 目录
cd ~/searxng

# 编辑配置文件
nano docker-compose.yml

# 输入如下内容
services:
  searxng:
    # 拉取指定版本镜像 https://github.com/searxng/searxng/pkgs/container/searxng
    image: ghcr.io/searxng/searxng:2026.3.16-4c4ed4b19
    container_name: searxng
    # 开机自启,避免服务器重启后容器停止
    restart: always
    # 强制指定可靠DNS
    dns:
      - 114.114.114.114
      - 223.5.5.5
      - 8.8.8.8
    # 端口映射:宿主机8080 → 容器8080(若8080被占用,改前面的数字,如9090:8080)
    ports:
      - "192.168.1.197:8080:8080"
    depends_on:
      - valkey
    environment:
      - SEARXNG_SECRET=REPLACE_WITH_RANDOM_32_CHARSdsf2464xx
      - SEARXNG_VALKEY_URL=valkey://valkey:6379/0  # 环境变量优先级最高
      - SEARXNG_LIMITER_TOKENS=120
      - SEARXNG_LIMITER_WINDOW=60
    # 数据卷持久化:配置/缓存不会因容器删除丢失
    volumes:
      - searxng-data-2026:/usr/local/searxng/data
      - ./searxng/settings.yml:/etc/searxng/settings.yml:ro

  valkey:
    # 通过镜像拉取valkey最新版本
    image: docker.1ms.run/valkey/valkey:9.0.3
    container_name: searxng-valkey
    command: valkey-server --appendonly yes
    volumes:
      - valkey-data:/data

# 数据卷名称(自动创建,无需手动操作)
volumes:
  searxng-data-2026:
  valkey-data:
    
1
2
`Ctrl + X → 退出 nano 编辑器,选“Y"保存 
运行 `docker compose config`检查语法是否正确

启动 SearXNG并配置 json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 启动容器
docker compose up -d

# 配置支持 json 
# 官方模板 https://raw.githubusercontent.com/searxng/searxng/master/utils/templates/etc/searxng/settings.yml
# 设置 settings.yml
vi ./searxng/settings.yml

# 将 `json`格式添加到允许的格式列表中。
    # 找到或添加以下部分
    search:
      formats:
        - html  # 默认允许的网页格式
        - json  # 必须添加此行,以允许通过 ?format=json 访问
    
# 重启 SearXNG 容器
docker compose restart searxng

curl -s "http://localhost:8080/search?q=test&format=json"
# {"query": "test", "number_of_results": 0, "results": [], "answers": [], "corrections": [], "infoboxes": [], "suggestions": [], "unresponsive_engines": [["brave", "timeout"], ["duckduckgo", "timeout"], ["google", "timeout"], ["startpage", "timeout"], ["wikipedia", "timeout"]]}a

# 查看容器状态(显示 Up 则成功)
docker compose ps

searxng   docker.io/searxng/searxng:latest   "/usr/local/searxng/…"   searxng   11 minutes ago   Up About a minute   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp

#访问,右上角“首选项”配置选择开启搜索引擎
http://ip:8080/

#进入容器终端:
docker exec -it searxng sh
cd searx
ls -l

#进入容器终端:
docker exec searxng grep formats /etc/searxng/settings.yml
# 配置检查
docker inspect searxng | grep -A5 Mounts
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/xxxx/searxng/searxng/settings.yml",
                "Destination": "/etc/searxng/settings.yml",
                "Mode": "ro",


# 想知道当前运行的所有项目和服务,用以下命令:
# 查看所有容器(含所属项目)
docker compose ps -a  # 执行在任意目录,会显示所有项目的容器
# 或更直观的:
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# 进入项目目录停止 
cd /opt/searxng 
docker compose down # 停止并删除容器(保留卷和网络) 
# 彻底删除(含卷、网络): 
docker compose down -v

# 启动容器
docker compose up -d

#查看容器日志
docker logs searxng | grep -i "start"
#查看容器最新50条日志
docker logs searxng --tail 50


#查看进程
ps aux | grep searxng

在 OpenClaw 中使用

部署成功后,你的 SearXNG 实例地址为 http://你的服务器IP:8080
在 OpenClaw 中,你可以通过 web_fetch工具直接调用:

1
2
3
4
5
curl -s "http://localhost:8080/search?q=test&format=json"

# 示例:搜索 "Python"
url = 'http://localhost:8080/search?q=Python&format=json'
print(web_fetch(url=url))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# SearXNG settings
use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG-AI"
  show_unresponsive_engines: false
  log_level: "WARNING"

search:
  safe_search: 1
  autocomplete: "duckduckgo"
  default_lang: zh
  max_results: 10
  formats:
    - html
    - json

server:
  #bind_address: "0.0.0.0"
  #port: 8080
  secret_key: "CHANGE_ME必须修改"

  limiter: true #if 'Too Many Requests' false 
  image_proxy: false
  version: false

valkey:
  # 使用默认 valkey(docker-compose 可扩展)
  url: valkey://localhost:6379/0

# 可选:锁定部分偏好(高级)
# preferences:
#   lock:
#     - autocomplete
#     - method

engines:

  - name: bing
    engine: bing
    shortcut: bi
    disabled: false

  - name: baidu
    engine: baidu
    shortcut: bd
    disabled: false

  - name: sogou
    engine: sogou
    shortcut: sg
    disabled: false
    
  - name: ahmia
    disabled: true
  - name: torch
    disabled: true

  # ===== 禁用所有问题引擎 =====
  - name: wikidata
    disabled: true
  - name: wikiversity
    disabled: true
  - name: wikispecies
    disabled: true
  - name: wikisource
    disabled: true
  - name: wikibooks
    disabled: true
  - name: wikiquote
    disabled: true
  - name: wikivoyage
    disabled: true

engine_params:
  bing:
    timeout: 2.0
  baidu:
    timeout: 2.0
原文链接: https://www.17you.com/programming/openclaw%E9%85%8D%E7%BD%AE%E6%9C%AC%E5%9C%B0searxng%E6%90%9C%E7%B4%A2/ 已复制!
编程和技术

寻找技术支持帮助和技术合伙人一起搞事。

请点击联系我


相关内容