为何选择SearXNG?项目特性一览
SearXNG是一款自由开源、注重隐私、部署简单的搜索引擎项目,整合了市面上大量的搜索接口并且屏蔽了竞价排名搜索结果 。目前LobeChat和Cherry Studio都已支持SearXNG,通过JSON和HTML结合AI进行更优的搜索结果输出。
1. 注重隐私
- 无追踪搜索:SearXNG不会跟踪用户,也不会分析用户数据
- 匿名搜索:所有的搜索请求都是匿名的,删除搜索请求中的私人输入
2. 开源和可定制
- 源代码完全公开,任何人都可以查看、用户自托管,完全控制自己的搜索数据
3. 多搜索引擎聚合
- 支持聚合多个搜索引擎的结果(如Google、Bing、DuckDuckGo等)
- 可以自定义选择使用提高搜索效率
4. 功能特点
- 隐藏搜索结果页面主题定制,界面美观
完整的SearXNG安装教程(使用Docker和Docker Compose)
本文将结合Docker和Docker Compose进行安装部署,Docker容器化技术使得部署过程一触即达。
第一部分:系统准备
系统要求
- 操作系统:Ubuntu 20.04/22.04 LTS 或 Debian 11/12
- 内存:至少1GB RAM
- 存储:至少10GB可用空间
- 网络:需要访问外网(用于获取搜索结果)
更新系统
# 更新软件包列表
sudo apt update
# 升级已安装的软件包
sudo apt upgrade -y
# 安装必要的依赖
sudo apt install -y curl wget gnupg lsb-release ca-certificates apt-transport-https software-properties-common第二部分:安装 Docker CE
卸载旧版本(如果存在)
sudo apt remove -y docker docker-engine docker.io containerd runc设置 Docker 仓库
方法一:使用官方脚本(推荐)
# 下载并执行Docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh方法二:手动添加仓库
# 添加Docker的GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加Docker仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新软件包列表
sudo apt update安装 Docker CE
# 安装Docker CE
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 或者指定版本安装
# sudo apt install -y docker-ce=5:24.0.7-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.7-1~ubuntu.22.04~jammy containerd.io docker-buildx-plugin docker-compose-plugin配置 Docker
# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 将当前用户添加到docker组(避免每次使用sudo)
sudo usermod -aG docker $USER
# 应用组更改(需要重新登录或执行以下命令)
newgrp docker
# 验证Docker安装
docker --version
docker run hello-world第三部分:安装 Docker Compose
安装 Docker Compose(最新版本)
# 下载最新版本的Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 创建符号链接(可选)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose验证安装
# 检查版本
docker-compose --version
# 或者使用新的docker compose命令
docker compose version
```
#### 3.3 安装 Docker Compose 插件(替代方法)
```bash
# 安装Docker Compose插件
sudo apt install -y docker-compose-plugin
# 验证插件安装
docker compose version第四部分:安装 SearXNG
创建安装目录
# 创建安装目录
sudo mkdir -p /opt/searxng
cd /opt/searxng
# 设置目录权限
sudo chown -R $USER:$USER /opt/searxng创建 Docker Compose 配置文件
创建 docker-compose.yml 文件:
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
EOF创建环境变量文件
# 创建环境变量文件
cat > .env << 'EOF'
# SearXNG 配置
SEARXNG_HOSTNAME=localhost
# 可选:设置时区
TZ=Asia/Shanghai
EOF初始化 SearXNG 配置
# 创建配置目录
mkdir -p searxng
# 启动容器以生成默认配置
docker-compose up -d
# 等待几秒钟后停止
sleep 10
docker-compose down
# 复制示例配置文件
cp searxng/settings.yml.example searxng/settings.yml配置 SearXNG
编辑配置文件 searxng/settings.yml:
# 使用nano或vim编辑配置文件
nano searxng/settings.yml基本配置示例:
# 服务器设置
server:
port: 8080
bind_address: "0.0.0.0"
secret_key: "your-secret-key-here" # 生成随机密钥:openssl rand -hex 32
# 搜索引擎配置
engines:
- name: google
engine: google
shortcut: g
categories: general
timeout: 5.0
enable_http: false
- name: bing
engine: bing
shortcut: b
categories: general
timeout: 5.0
- name: duckduckgo
engine: duckduckgo
shortcut: d
categories: general
timeout: 5.0
# 搜索设置
search:
safe_search: 0 # 0=关闭, 1=中等, 2=严格
autocomplete: google
default_lang: "zh-CN"
# 输出设置
outgoing:
request_timeout: 10.0
pool_connections: 100
pool_maxsize: 100
max_retries: 3
max_redirects: 5启动 SearXNG
# 启动服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f第五部分:配置反向代理(可选 如果没有可以用默认的Caddy)
安装 Nginx
# 安装Nginx
sudo apt install -y nginx
# 启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx创建 Nginx 配置文件
# 创建配置文件
sudo nano /etc/nginx/sites-available/searxng添加以下内容:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或服务器IP
# 安全头部
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
# 客户端设置
client_max_body_size 10M;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 禁止访问敏感文件
location ~ /\. {
deny all;
}
}启用 Nginx 配置
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/searxng /etc/nginx/sites-enabled/
# 删除默认配置
sudo rm -f /etc/nginx/sites-enabled/default
# 测试配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx第六部分:配置 SSL/TLS(HTTPS)
使用 Certbot 获取 SSL 证书
# 安装Certbot
sudo apt install -y certbot python3-certbot-nginx
# 获取SSL证书
sudo certbot --nginx -d your-domain.com
# 按照提示操作,选择是否重定向HTTP到HTTPS自动续期配置
# 测试自动续期
sudo certbot renew --dry-run
# 查看续期定时任务
sudo systemctl list-timers | grep certbot第七部分:防火墙配置
# 安装UFW防火墙
sudo apt install -y ufw
# 配置防火墙规则
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 开放必要端口
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp # 如果直接访问Docker端口
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status verbose第八部分:访问和使用
访问方式
- 直接访问http://服务器IP:8080
- 通过Nginxhttp://your-domain.com
- HTTPS访问https://your-domain.com
验证安装
# 检查容器状态
docker-compose ps
# 检查服务是否响应
curl -I http://localhost:8080
# 查看日志
docker-compose logs --tail=50第九部分:维护和管理
更新 SearXNG
cd /opt/searxng
# 拉取最新镜像
docker-compose pull
# 重启服务
docker-compose up -d
# 清理旧镜像
docker image prune -f备份和恢复
备份配置
cd /opt/searxng
tar -czf searxng-backup-$(date +%Y%m%d-%H%M%S).tar.gz searxng/ docker-compose.yml .env
# 恢复配置
tar -xzf searxng-backup-YYYYMMDD-HHMMSS.tar.gz
docker-compose up -d监控和日志
# 查看实时日志
docker-compose logs -f
# 查看容器资源使用
docker stats
# 查看容器详细信息
docker inspect searxng第十部分:故障排除
常见问题
问题1:端口冲突
# 检查端口占用
sudo netstat -tlnp | grep :8080
# 修改docker-compose.yml中的端口
# 例如改为 8081:8080问题2:权限问题
# 修复目录权限
sudo chown -R 1000:1000 /opt/searxng/searxng
# 检查SELinux状态(CentOS/RHEL)
getenforce问题3:无法访问外网
# 测试网络连接
ping 8.8.8.8
# 测试DNS解析
nslookup google.com
# 检查Docker网络
docker network ls
docker network inspect searxng_default第九部分:Cherry Studio 搜索工具配置
Cherry Studio官网已经提供安装指示,本文仅摘取关键步骤附上。链接如下:SearXNG 本地部署与配置 | Cherry Studio
类似地,仍然使用 Docker 部署。假设你已经按照官方教程在服务器上安装好了最新版 Docker CE,以下提供一条龙命令,适用于 Debian 系统下全新安装:
sudo apt update
sudo apt install git -y
# 拉取官方仓库
cd /opt
git clone https://github.com/searxng/searxng-docker.git
cd /opt/searxng-docker
# 如果你的服务器带宽很小, 可以设置为 false
export IMAGE_PROXY=true
# 修改配置文件
cat <<EOF > /opt/searxng-docker/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: $(openssl rand -hex 32)
limiter: false # can be disabled for a private instance
image_proxy: $IMAGE_PROXY
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
search:
formats:
- html
- json
EOF如果你需要修改本地监听端口、复用本地已有的 nginx,可以编辑
docker-compose.yaml文件,参考如下:
version: "3.7"
services:
# 如果不需要 Caddy 而复用本地已经有的 Nginx, 就把下面的去掉. 我们默认不需要 Caddy.
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"
# 如果不需要 Caddy 而复用本地已经有的 Nginx, 就把上面的去掉. 我们默认不需要 Caddy.
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
# 默认映射到宿主机 8080 端口, 假如你想监听 8000 就改成 "127.0.0.1:8000:8080"
ports:
- "127.0.0.1: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 而复用本地已经有的 Nginx, 就把下面的去掉
caddy-data:
caddy-config:
# 如果不需要 Caddy 而复用本地已经有的 Nginx, 就把上面的去掉
valkey-data2:SearXNG 本地或在服务器部署成功后,接下来是 CherryStudio 的相关配置。
来到网络搜索设置页面,选择 Searxng :

直接输入本地部署的链接发现验证失败,此时不用担心:

因为直接部署后默认并没有配置 json 返回类型,所以无法获取数据,需要修改配置文件。
回到 Docker,来到 Files 标签页找到镜像中找到带标签的文件夹:

展开后继续往下翻,会发现另一个带标签的文件夹:

继续展开,找到 settings.yml 配置文件:

点击打开文件编辑器:

找到 78 行,可以看到类型只有一个 html

添加 json 类型后保存,重新运行镜像


重新回到 Cherry Studio 进行验证,验证成功:

地址既可以填写本地: http://localhost : 端口号 也可以填写 docker 地址:http://host.docker.internal : 端口号
One More Thing:可使用的实例
目前已经部署好了一个可以使用的SearXNG服务器,点击即用:https://sear.indigo-rain.online/
希望大家使用愉快,如果可以的话可以留言让我看到哦。