用国内镜像源一键安装 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
|