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

本文介绍如何使用 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.git
    cd 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 down
      docker compose up -d
      
  7. 验证访问

    • 浏览器访问 https://yourdomain.com,确认 Searxng 运行正常。
    • 检查日志:docker compose logs -f
后续管理
  • 更新:运行以下命令保持最新:
    git pull
    docker compose pull
    docker 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.service
      sudo systemctl start searxng-docker.service
      

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

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

步骤
  1. 创建目录

    mkdir my-searxng
    cd 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 <容器ID>(通过 docker container ls 获取 ID)。
后续管理
  • 停止容器docker container stop <容器ID>
  • 查看日志docker logs <容器ID>
  • 进入容器docker exec -it <容器ID> 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.git
    cd searxng
    make docker.build
    

总结

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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值