1. 项目概述:为什么要在群晖NAS上部署SearXNG?
在信息爆炸的时代,我们每天都要面对各种商业搜索引擎的广告轰炸和算法推荐。SearXNG作为一款开源的元搜索引擎,能够聚合Google、Bing、DuckDuckGo等主流搜索引擎的结果,同时过滤广告、保护隐私。而群晖NAS作为家庭和小型企业的数据中枢,7x24小时稳定运行,正是部署这类服务的理想平台。
我选择在DS220+上部署SearXNG已经稳定运行半年多,实测相比直接使用商业搜索引擎,不仅搜索结果更加客观中立,而且通过NAS的本地缓存还能提升重复搜索的响应速度。特别是在需要跨语言搜索时,SearXNG的多语言支持非常实用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的准备工作
2.1 硬件与系统要求
建议使用至少DS218+及以上型号的群晖设备,确保有足够的CPU和内存资源。我的DS220+配备Intel Celeron J4025双核处理器和2GB内存(可升级至6GB),运行Docker版SearXNG非常流畅。
系统方面需要:
- DSM 7.0或更新版本
- 已安装并配置好Docker套件
- 至少5GB的可用存储空间(用于存放Docker镜像和配置文件)
2.2 网络环境配置
由于SearXNG需要访问外部搜索引擎API,建议:
- 在群晖控制面板 > 网络 > 常规中,确保已正确配置DNS服务器(推荐使用1.1.1.1或8.8.8.8)
- 如果使用代理,需要在Docker环境变量中配置http_proxy和https_proxy
- 检查防火墙设置,确保不会阻止SearXNG容器的出站连接
注意:某些搜索引擎API可能会对频繁请求进行限制,建议在家庭网络环境下使用,避免使用公司或学校网络可能导致的问题。
3. 通过Docker部署SearXNG
3.1 获取SearXNG镜像
打开群晖的Docker套件,按照以下步骤操作:
- 在注册表中搜索"searxng/searxng"
- 选择最新稳定版镜像(目前是2024.04版本)
- 点击下载,等待镜像拉取完成
3.2 配置SearXNG容器
下载完成后,点击"映像"选项卡,选择searxng/searxng镜像并点击"启动",进行以下配置:
常规设置:
- 容器名称:searxng(便于识别)
- 勾选"启用自动重新启动"(确保NAS重启后服务自动恢复)
端口设置:
- 本地端口:8080(或其他未被占用的端口)
- 容器端口:8080
存储空间设置:
添加两个文件夹挂载:
- /etc/searxng → 创建新的docker/searxng/config文件夹
- /var/log/searxng → 创建新的docker/searxng/logs文件夹
环境变量:
添加以下变量:
- INSTANCE_NAME=MySearXNG
- SECRET_KEY=$(openssl rand -hex 32) # 生成随机密钥
3.3 高级设置与优化
在"高级设置"中建议调整:
- 资源限制:CPU限制为50%-70%,内存限制为512MB
- 日志配置:选择json-file日志驱动,方便问题排查
- 重启策略:配置为"总是重启"
点击"应用"后启动容器,等待约1-2分钟初始化完成。
4. 配置与优化SearXNG
4.1 基本配置修改
通过SSH连接到群晖,编辑配置文件:
bash复制sudo vi /volume1/docker/searxng/config/settings.yml
关键配置项修改:
yaml复制server:
secret_key: "your_generated_secret_key" # 与Docker环境变量一致
base_url: "https://your-nas-domain.com/searxng/" # 如果有域名
search:
safe_search: 0 # 关闭安全搜索
autocomplete: "google" # 使用Google的自动补全
engines:
- name: google
shortcut: g
enabled: True
- name: bing
shortcut: b
enabled: True
4.2 主题与界面定制
在同一个配置文件中可以修改:
yaml复制ui:
theme: simple # 可选simple、dark等
results_on_new_tab: True # 在新标签打开结果
infinite_scroll: False # 关闭无限滚动
4.3 性能优化配置
yaml复制redis:
url: redis://redis:6379/0 # 如果配置了Redis缓存
outgoing:
pool_connections: 20 # 连接池大小
pool_maxsize: 20
max_retries: 2 # 重试次数
5. 反向代理与安全配置
5.1 使用群晖反向代理
- 打开控制面板 > 登录门户 > 高级 > 反向代理服务器
- 添加新规则:
- 来源:https://your-nas-domain.com/searxng
- 目标:http://localhost:8080
- 勾选"启用HSTS"和"HTTP/2"
5.2 配置HTTPS证书
- 在控制面板 > 安全性 > 证书中申请或导入SSL证书
- 将证书分配给反向代理规则
5.3 访问控制
建议在反向代理中配置:
- 基本身份验证
- IP白名单(仅允许家庭网络访问)
6. 日常维护与问题排查
6.1 日志监控
查看容器日志的两种方式:
- 通过Docker套件界面查看实时日志
- 通过SSH查看持久化日志:
bash复制tail -f /volume1/docker/searxng/logs/searxng.log
6.2 定期更新
建议每月检查并更新镜像:
- 在Docker套件中停止容器
- 删除旧容器(保留数据卷)
- 拉取最新镜像并重新创建容器
6.3 常见问题解决
问题1:搜索结果返回缓慢
- 检查网络连接
- 调整engines配置,禁用响应慢的搜索引擎
- 增加outgoing.pool_connections值
问题2:某些搜索引擎不返回结果
- 检查该引擎是否被屏蔽
- 尝试更换API端点(如使用google镜像站)
问题3:内存占用过高
- 限制容器内存为512MB
- 禁用不常用的搜索引擎
- 添加Redis缓存
7. 高级应用与扩展
7.1 集成到浏览器
在Chrome/Firefox中设置默认搜索引擎:
- 访问你的SearXNG实例
- 右键点击搜索框,选择"添加为搜索引擎"
- 设置关键词如"sx"
7.2 移动端使用
创建PWA应用:
- 在手机浏览器中访问SearXNG
- 添加到主屏幕
- 配置为默认搜索引擎(iOS需通过快捷指令实现)
7.3 与Home Assistant集成
通过REST API将搜索结果集成到智能家居系统:
yaml复制rest_command:
search_web:
url: "http://localhost:8080/?q={{ query }}&format=json"
method: GET
8. 性能实测与使用体验
在我的DS220+上运行SearXNG的实测数据:
- 平均搜索响应时间:1.2-1.8秒
- 内存占用:约300MB(空闲时150MB)
- 同时处理搜索请求:15-20个
相比直接使用商业搜索引擎的优势:
- 无个性化过滤,结果更加客观
- 聚合多个来源,覆盖面更广
- 隐私保护,不记录搜索历史
- 可通过NAS的本地缓存加速重复查询
经过半年的使用,已经完全替代了Google作为我的默认搜索引擎。特别是在技术问题排查时,能够同时看到来自StackOverflow、官方文档和社区论坛的不同观点,大大提高了问题解决的效率。
