一.WSL 里装 Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# WSL Ubuntu 里执行
sudo apt-get update && sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo service docker start
sudo usermod -aG docker $USER

二.部署 SearXNG

1
2
3
4
5
6
7
8
mkdir ~/searxng && cd ~/searxng
mkdir config data

docker run --name searxng -d \
-p 8888:8080 \
-v "./config:/etc/searxng/" \
-v "./data:/var/cache/searxng/" \
docker.io/searxng/searxng:latest

访问 http://localhost:8888 能看到搜索页就成功了 。

如果遇到 Permission Denied 问题,当前 session 没有刷新,新权限还没生效。

1
2
3
4
5
6
7
8
9
10
11
#执行这一行就够了,不用重启 WSL。
newgrp docker

#然后,重新跑:
cd ~/searxng

docker run --name searxng -d \
-p 8888:8080 \
-v "./config:/etc/searxng/" \
-v "./data:/var/cache/searxng/" \
docker.io/searxng/searxng:latest

跑成功后检查:

1
2
3
4
5
6
7
8
# 确认容器在跑
docker ps

# 看看 config 有没有文件了
ls ~/searxng/config/

# 测试 8888 能不能访问
curl http://localhost:8888

三.配置搜索

Brave + DuckDuckGo 直连完全够用,质量和 Google 差距很小。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
engines:
- name: brave
engine: brave
enabled: true
- name: duckduckgo
engine: duckduckgo
enabled: true
- name: bing
engine: bing
enabled: true
- name: wikipedia
engine: wikipedia
enabled: true
- name: google
engine: google
enabled: false # 关掉
- name: baidu
engine: baidu
enabled: false # 关掉

如果没有windows没有权限改,需要用nano,或者用命令改。
1.先把所有引擎关掉

1
2
3
4
5
# 先备份
sudo cp ~/searxng/config/settings.yml ~/searxng/config/settings.yml.bak

# 把所有 "disabled: false" 统统改成 true
sudo sed -i 's/disabled: false/disabled: true/g' ~/searxng/config/settings.yml

2.再只打开你要的几个

1
2
3
4
5
# Brave / Bing / DuckDuckGo / Wikipedia
sudo sed -i '/name: brave/,/disabled:/ s/disabled: true/disabled: false/' ~/searxng/config/settings.yml
sudo sed -i '/name: bing/,/disabled:/ s/disabled: true/disabled: false/' ~/searxng/config/settings.yml
sudo sed -i '/name: duckduckgo/,/disabled:/ s/disabled: true/disabled: false/' ~/searxng/config/settings.yml
sudo sed -i '/name: wikipedia/,/disabled:/ s/disabled: true/disabled: false/' ~/searxng/config/settings.yml

3.重启

1
docker restart searxng

四.接入SearXNG

1.用环境变量告诉 OpenClaw SearXNG 的地址:

OpenClaw 识别的是 SEARXNG_URL 这个环境变量:

1
2
# 在 Windows 系统环境变量里加(PowerShell)
[System.Environment]::SetEnvironmentVariable("SEARXNG_URL", "http://localhost:8888", "User")

或者在 WSL 里加到 .bashrc:

1
2
echo 'export SEARXNG_URL=http://localhost:8888' >> ~/.bashrc
source ~/.bashrc

2.查看文件

在 nano 里用 Ctrl+W 搜索 formats,找到类似这样的内容:

1
2
3
4
5
sudo nano ~/searxng/config/settings.yml
# 找到 search: 部分,确认有这一行:
# formats:
# - html
# - json ← 手动添加,不要用命令改

Ctrl+O 保存,Ctrl+X 退出,然后:

1
docker restart searxng

等 5 秒再访问 http://localhost:8888。 YAML 对缩进极其敏感,sed 加 \n 经常搞乱缩进,这种情况手动改更稳。

.
.
.
.
.
.
.
.
.
.
.
.


如果网络问题安装不了docker,用阿里云镜像绕过:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 第一步:装依赖(你已经有了,跳过)

# 第二步:用阿里云镜像拉 GPG key(替换原来那条失败的命令)
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 第三步:加阿里云 apt 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 第四步:安装
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 第五步:启动并加权限
sudo service docker start
sudo usermod -aG docker $USER
newgrp docker

# 验证
docker --version

然后还需要配 Docker 的镜像拉取源
装完 Docker 之后,拉 SearXNG 镜像时 docker.io 也可能不行,提前配好:

1
2
3
4
5
6
7
8
9
10
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
sudo service docker restart

配完之后再继续拉 SearXNG 就顺畅了。


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.