> 技术文档 > 【Docker】使用 Docker 部署 Searxng 的完整指南_searxng docker部署

【Docker】使用 Docker 部署 Searxng 的完整指南_searxng docker部署

本文介绍如何使用 Docker 部署 Searxng。本指南专注于两种主要方法:使用 docker-compose(推荐生产环境)和 docker run(适合测试环境)。


使用 Docker 部署 Searxng 的完整指南

Searxng 是一个开源、注重隐私的元搜索引擎,Docker 部署方式因其容器化特性和跨平台支持而广受欢迎。本指南详细介绍两种部署方法:使用 docker-compose(结合 Caddy 反向代理,适合生产环境)和 docker run(快速测试)。以下步骤假设你已安装 Docker 和 Docker Compose(参考 Docker 安装指南)。


准备工作

  1. 确认环境
    • 系统:Linux、Mac 或 Windows,推荐 Linux(如 Ubuntu)。
    • 安装 Docker 和 Docker Compose(版本 2.x 或更高)。
    • 确保有 gitopenssl(用于生成密钥)。
    • 检查端口可用性(如 8080 或 80/443),避免冲突。
  2. 创建工作目录
    • 运行 mkdir searxng-deployment && cd searxng-deployment
  3. 权限设置
    • 确保当前用户有 Docker 执行权限(Linux 用户运行 sudo usermod -aG docker $USER 并重新登录)。

方法 1:使用 docker-compose 部署(推荐生产环境)

此方法基于 Searxng Docker 仓库,集成了 Caddy 反向代理,自动配置 HTTPS,适合生产环境或初学者。

步骤
  1. 克隆仓库

    git clone https://github.com/searxng/searxng-docker.gitcd searxng-docker

    建议将仓库克隆到 /usr/local/searxng-docker 等系统目录。

  2. 配置 .env 文件

    • 编辑 .env,设置域名和邮箱:
      echo -e \"SEARXNG_HOSTNAME=yourdomain.com\\nLETSENCRYPT_EMAIL=your@email.com\" > .env
    • 说明:SEARXNG_HOSTNAME 是你的域名,LETSENCRYPT_EMAIL 用于 Let’s Encrypt 证书。
  3. 生成密钥

    • 替换 searxng/settings.yml 中的默认密钥:
      • Linux:
        sed -i \"s|ultrasecretkey|$(openssl rand -hex 32)|g\" searxng/settings.yml
      • Mac:
        sed -i \'\' \"s|ultrasecretkey|$(openssl rand -hex 32)|g\" searxng/settings.yml
    • 这为 Searxng 实例生成唯一密钥,增强安全性。
  4. 调整 docker-compose.yaml(首次运行)

    • 打开 docker-compose.yaml,找到 searxng 服务部分,注释或删除以下行:
      cap_drop: - ALL
    • 说明:首次运行需要更高权限以创建 /etc/searxng/uwsgi.ini,完成后需恢复此设置。
  5. 启动服务

    docker compose up -d
    • 说明:这将启动 Searxng 和 Caddy 容器,Caddy 自动配置 HTTPS。
    • 如果使用旧版 Docker Compose,运行 docker-compose up -d
  6. 恢复安全设置

    • 首次运行成功后,编辑 docker-compose.yaml,恢复 cap_drop: - ALL
    • 重启服务:
      docker compose downdocker compose up -d
  7. 验证访问

    • 浏览器访问 https://yourdomain.com,确认 Searxng 运行正常。
    • 检查日志:docker compose logs -f
后续管理
  • 更新:运行以下命令保持最新:
    git pulldocker compose pulldocker compose up -d
  • 配置 Searxng:编辑 searxng/settings.yml 调整搜索引擎、语言等,重启服务生效。
  • Systemd 集成(可选)
    • 复制模板:cp searxng-docker.service.template searxng-docker.service
    • 编辑 WorkingDirectory 为仓库路径(如 /usr/local/searxng-docker)。
    • 启用服务:
      sudo systemctl enable $(pwd)/searxng-docker.servicesudo systemctl start searxng-docker.service

方法 2:使用 docker run 部署(适合测试环境)

此方法基于官方镜像 searxng/searxng,适合快速测试或开发环境,无需反向代理。

步骤
  1. 创建目录

    mkdir my-searxngcd my-searxng
  2. 设置端口

    export PORT=8080
    • 说明:可根据需要更改端口,确保不冲突。
  3. 拉取镜像

    docker pull searxng/searxng
  4. 运行容器

    docker run --rm -d -p ${PORT}:8080 -v \"${PWD}/searxng:/etc/searxng\" -e \"BASE_URL=http://localhost:$PORT/\" -e \"INSTANCE_NAME=my-searxng\" searxng/searxng
    • 说明:
      • --rm:容器停止后自动删除(测试用,生产可移除)。
      • -p ${PORT}:8080:映射主机端口到容器 8080。
      • -v \"${PWD}/searxng:/etc/searxng\":挂载配置文件目录。
      • -e:设置基础 URL 和实例名称。
  5. 验证访问

    • 浏览器访问 http://localhost:8080,确认 Searxng 运行。
    • 检查容器:docker container ls
  6. 配置 Searxng

    • 编辑 ./searxng/settings.yml 调整设置。
    • 重启容器:docker container restart (通过 docker container ls 获取 ID)。
后续管理
  • 停止容器docker container stop
  • 查看日志docker logs
  • 进入容器docker exec -it sh
  • 更新:重新拉取镜像并运行新容器:
    docker pull searxng/searxng

常见问题与解决方案

  1. 权限问题
    • 问题:挂载目录(如 ./searxng)无写入权限,导致容器失败。
    • 解决:运行 chmod -R 777 searxng 或使用 root 用户。
  2. 端口冲突
    • 问题:8080 或 80/443 端口被占用。
    • 解决:更改 PORT-p 参数,如 -p 8081:8080
  3. 首次运行失败(docker-compose
    • 问题:未移除 cap_drop: - ALL,导致无法创建 uwsgi.ini
    • 解决:按步骤 4 注释该行,运行后恢复。
  4. HTTPS 配置
    • docker-compose:Caddy 自动处理,需正确设置 .env
    • docker run:需手动配置反向代理(如 Nginx)并申请证书。

两种方法对比

特性 docker-compose (Caddy) docker run 适用场景 生产环境、初学者、需 HTTPS 测试环境、快速部署 HTTPS 支持 自动(Caddy) 手动配置 配置复杂度 中等(需配置 .envsettings.yml) 简单(仅环境变量) 安全性 高(支持 cap_drop 和 systemd) 中等(手动管理) 依赖 Docker Compose、Caddy 仅 Docker

高级选项

  • 自定义设置:编辑 searxng/settings.yml 调整搜索引擎、主题或语言,参考 Searxng 文档。
  • 性能优化:通过环境变量 UWSGI_WORKERSUWSGI_THREADS 调整 uWSGI 性能。
  • 手动反向代理:已有 Nginx/HAProxy 的用户可移除 Caddy,配置代理指向 Searxng 的 8080 端口。
  • 构建镜像:从源代码构建:
    git clone https://github.com/searxng/searxng.gitcd searxngmake docker.build

总结

  • 生产环境:选择 docker-compose 方法,结合 Caddy 自动 HTTPS,适合长期运行和公开访问。
  • 测试环境:选择 docker run 方法,快速部署,适合开发或临时使用。
  • 关键注意:确保权限正确、端口可用,docker-compose 首次运行需调整 cap_drop

通过以上步骤,可以轻松部署 Searxng。如需进一步定制或遇到问题,可参考 Searxng 官方文档 或社区资源(如 DB Tech Reviews)。