详细教程:在 Linux 服务器(宝塔面板)上搭建私有搜索引擎 SearXNG

本教程将指导你从零开始,在云服务器上通过宝塔面板和 Docker 部署开源、不追踪隐私的元搜索引擎 SearXNG。全程步骤详尽,包含配置调优与常见问题解答。
教程中的服务器环境由 Mango 计算mangoidc.mysxl.cn)提供,有需要的用户可以自行访问了解。


一、准备工作:服务器与域名

1.1 云服务器选购

你需要一台带公网 IP 的 Linux 云服务器。推荐配置:

  • CPU:1 核以上
  • 内存:2 GB 及以上
  • 系统:CentOS 7.9+ 或 Ubuntu 20.04/22.04
  • 带宽:按需选择,建议 3 Mbps 以上以保证搜索响应速度

购买时请记下 服务器 IP、root 密码,并确保 22 端口(SSH)和 8888 端口(宝塔面板)在安全组中放行。

1.2 域名准备

准备一个域名(如 search.yourdomain.com),在域名解析后台添加一条 A 记录,指向服务器 IP。解析生效可能需要几分钟。

说明:本教程示例服务器选购自 Mango 计算mangoidc.mysxl.cn),实际使用时你可选择任意云厂商。只要系统满足要求,流程完全一致。


二、连接服务器并安装宝塔面板

2.1 SSH 远程登录

使用终端或 SSH 工具连接:

ssh root@你的服务器IP

输入密码后进入系统。

2.2 安装宝塔面板

根据系统类型执行对应命令:

CentOS 系统:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

Ubuntu/Debian 系统:

wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

安装过程大约 3~5 分钟。完成后终端会显示:

  • 面板地址:http://你的IP:8888/随机路径
  • 用户名和密码

务必保存好这些信息。如果忘记,可在终端执行 bt default 查看。


三、宝塔面板基础环境配置

3.1 登录与软件安装

浏览器访问面板地址,登录后可能会弹出推荐安装套件,直接关闭即可,我们手动安装所需软件。

进入 软件商店,搜索并安装以下两个软件:

  1. Nginx(选择最新稳定版,极速安装)
  2. Docker 管理器(安装后会自动部署 Docker 环境)

等待两者均显示为“已安装”状态。

3.2 检查 Docker 是否运行正常

SSH 终端执行:

docker --version
docker ps

若能看到 Docker 版本信息且无错误,说明 Docker 已就绪。


四、部署 SearXNG 搜索引擎

SearXNG 通过 Docker Compose 部署最为简便。我们会把配置持久化在宿主机,方便后期修改。

4.1 创建项目目录

在终端创建目录并进入:

mkdir -p /opt/searxng/searxng
cd /opt/searxng

4.2 编写 docker-compose.yml

/opt/searxng 下新建 docker-compose.yml 文件,粘贴以下内容(务必替换域名):

version: '3.7'

services:
  searxng:
    image: searxng/searxng:latest
    container_name: searxng
    ports:
      - "8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://你的真实域名.com/
      - UWSGI_WORKERS=4
      - UWSGI_THREADS=4
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    restart: unless-stopped
  • SEARXNG_BASE_URL 必须填写完整的域名并带 https://(即使尚未开启 HTTPS 也先这样写,后续我们会申请证书)。
  • 端口映射 8080:8080 使容器服务在服务器本地 8080 端口可用。

4.3 启动容器

执行:

docker-compose up -d

首次执行会下载 SearXNG 镜像,稍等片刻。用 docker ps 确认容器状态为 Up

4.4 生成并配置密钥

容器运行后需要生成唯一的 secret_key

docker exec -it searxng searxng-generate-secret-key

终端会输出一串类似 a1b2c3... 的字符串,复制备用。

编辑配置文件 /opt/searxng/searxng/settings.yml(可使用宝塔文件管理器或 vi):

vi /opt/searxng/searxng/settings.yml

找到 server 段,修改为:

server:
  bind_address: "0.0.0.0"
  port: 8080
  secret_key: "粘贴你生成的密钥"
  base_url: https://你的域名.com/
  image_proxy: true   # 启用图片代理,增强隐私
  # 可选:限制每分钟搜索次数,防止滥用
  limiter: false

其他部分可暂时保留默认值。保存并退出(vi 中按 Esc 后输入 :wq)。

为使配置生效,重启容器:

docker-compose restart

4.5 本地验证

在浏览器中访问 http://你的服务器IP:8080,如果出现 SearXNG 搜索首页,说明引擎运行正常。我们接着让它通过域名对外服务。


五、宝塔面板站点配置与反向代理

5.1 添加站点

进入宝塔面板 -> 网站 -> 添加站点

  • 域名:填写你准备的完整域名
  • 根目录:默认即可(无需修改)
  • FTP、数据库:不创建
    点击“提交”。

5.2 设置反向代理

在网站列表中点击刚创建的域名右侧的 设置 -> 反向代理 -> 添加反向代理

  • 代理名称:随意(如 searxng
  • 目标 URL:http://127.0.0.1:8080
  • 发送域名:$host
    其他保持默认,保存。

此时,通过域名 http://你的域名 应该已经能访问搜索引擎了(暂时为 HTTP)。

5.3 申请 SSL 证书并开启 HTTPS

在网站设置中进入 SSL -> Let’s Encrypt

  • 勾选你的域名
  • 点击“申请”按钮。宝塔会自动验证域名并签发证书。
  • 申请成功后,打开右上角的 强制 HTTPS 开关。

稍等片刻,使用 https://你的域名 访问,浏览器地址栏即显示安全锁标志。

5.4 加固安全

  • 建议关闭 8080 端口的外网访问:在宝塔 安全 页面,检查防火墙规则,确保 8080 端口 没有对外放行(或者直接删除 8080 端口的规则)。SearXNG 仅通过 Nginx 代理被访问,这样更安全。
  • 如果不需要面板 8888 端口对外,也可以改为仅在特定 IP 下访问。

六、SearXNG 常用配置优化

默认配置已可用,但为了获得更好的体验,可以按需调整。所有修改均在 /opt/searxng/searxng/settings.yml 中进行,修改后记得重启容器。

6.1 自定义实例信息

general:
  instance_name: "我的搜索"   # 浏览器标签页显示的名称
  debug: false
  privacypolicy_url: false
  contact_url: false

6.2 选择启用的搜索引擎

SearXNG 支持上百种搜索源。在 engines 段落中可自由增减。例如只保留常用的:

engines:
  - name: duckduckgo
    engine: duckduckgo
    shortcut: ddg
    disabled: false

  - name: google
    engine: google
    shortcut: g
    disabled: false

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

  - name: wikipedia
    engine: wikipedia
    shortcut: wp
    disabled: false

不想使用某个引擎,设置 disabled: true 即可。

6.3 开启结果缓存(可选)

缓存可以加速重复搜索,减少资源消耗。在配置中添加 Redis 支持(需另外安装 Redis):

redis:
  url: redis://127.0.0.1:6379/0

如果你不需要缓存,可忽略此步骤。

6.4 设置默认语言与时区

search:
  default_lang: "zh-CN"    # 默认搜索语言
ui:
  default_theme: simple    # 界面主题
  default_locale: zh-Hans-CN

修改后重启容器使配置生效:

cd /opt/searxng
docker-compose restart

七、搜索引擎日常维护

7.1 更新 SearXNG 版本

定期更新可以获得新功能和安全修复:

cd /opt/searxng
docker-compose pull
docker-compose up -d

7.2 日志查看

如果运行异常,可查看容器日志排查问题:

docker logs searxng

7.3 数据备份

配置文件目录挂载在宿主机 /opt/searxng/searxng,备份该目录即可:

tar -czf searxng_backup.tar.gz /opt/searxng/searxng

八、常见问题与解答(FAQ)

Q1:访问域名出现 502 Bad Gateway

  • 检查 SearXNG 容器是否正在运行:docker ps
  • 检查宝塔反向代理目标 URL 是否正确:http://127.0.0.1:8080
  • 确保 SELinux 或防火墙没有拦截本地 8080 端口回环(通常不会,但可尝试在 SSH 中执行 curl http://127.0.0.1:8080,有返回 HTML 则正常)

Q2:搜索结果全是英文,如何设置中文为主?

修改 settings.ymlsearch.default_lang"zh-CN" 并重启容器。同时可以在搜索页面底部手动选择默认语言。

Q3:为什么修改配置文件后不起作用?

必须重启容器才能加载新配置:docker-compose restart。另外,浏览器可能有缓存,可尝试无痕模式验证。

Q4:如何禁止他人使用我的搜索引擎?

最简单的办法是在宝塔网站设置中,给站点添加 密码访问(访问控制 -> 密码访问),为搜索页面设置一个私有账号密码。也可以在 SearXNG 配置中启用内置的基本认证,但宝塔的方式更简单。

Q5:搭建过程中遇到端口冲突怎么办?

默认使用 8080 端口,如有冲突可修改 docker-compose.yml 中左侧端口(如改为 "9090:8080"),同时宝塔反向代理目标 URL 同步更改为对应端口。

Q6:本教程的服务器从哪里购买比较好?

文中示例环境部署于 Mango 计算mangoidc.mysxl.cn),该平台提供稳定云服务器与域名注册,性价比适合个人项目和中小企业。当然,你完全可以选用其他云服务商,只要系统兼容,步骤完全相同。


至此,你已经拥有了一台功能完整、尊重隐私的个人搜索引擎。后续可进一步探索 SearXNG 的更多配置选项,或配合浏览器插件使用,让搜索回归纯净。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐