【Docker】使用 Docker 部署 Searxng 的完整指南_searxng docker部署
本文介绍如何使用 Docker 部署 Searxng。本指南专注于两种主要方法:使用 docker-compose(推荐生产环境)和 docker run(适合测试环境)。
使用 Docker 部署 Searxng 的完整指南
Searxng 是一个开源、注重隐私的元搜索引擎,Docker 部署方式因其容器化特性和跨平台支持而广受欢迎。本指南详细介绍两种部署方法:使用 docker-compose(结合 Caddy 反向代理,适合生产环境)和 docker run(快速测试)。以下步骤假设你已安装 Docker 和 Docker Compose(参考 Docker 安装指南)。
准备工作
- 确认环境:
- 系统:Linux、Mac 或 Windows,推荐 Linux(如 Ubuntu)。
 - 安装 Docker 和 Docker Compose(版本 2.x 或更高)。
 - 确保有 
git和openssl(用于生成密钥)。 - 检查端口可用性(如 8080 或 80/443),避免冲突。
 
 - 创建工作目录:
- 运行 
mkdir searxng-deployment && cd searxng-deployment。 
 - 运行 
 - 权限设置:
- 确保当前用户有 Docker 执行权限(Linux 用户运行 
sudo usermod -aG docker $USER并重新登录)。 
 - 确保当前用户有 Docker 执行权限(Linux 用户运行 
 
方法 1:使用 docker-compose 部署(推荐生产环境)
此方法基于 Searxng Docker 仓库,集成了 Caddy 反向代理,自动配置 HTTPS,适合生产环境或初学者。
步骤
- 
克隆仓库:
git clone https://github.com/searxng/searxng-docker.gitcd searxng-docker建议将仓库克隆到
/usr/local/searxng-docker等系统目录。 - 
配置
.env文件:- 编辑 
.env,设置域名和邮箱:echo -e \"SEARXNG_HOSTNAME=yourdomain.com\\nLETSENCRYPT_EMAIL=your@email.com\" > .env - 说明:
SEARXNG_HOSTNAME是你的域名,LETSENCRYPT_EMAIL用于 Let’s Encrypt 证书。 
 - 编辑 
 - 
生成密钥:
- 替换 
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 
 - Linux:
 - 这为 Searxng 实例生成唯一密钥,增强安全性。
 
 - 替换 
 - 
调整
docker-compose.yaml(首次运行):- 打开 
docker-compose.yaml,找到searxng服务部分,注释或删除以下行:cap_drop: - ALL - 说明:首次运行需要更高权限以创建 
/etc/searxng/uwsgi.ini,完成后需恢复此设置。 
 - 打开 
 - 
启动服务:
docker compose up -d- 说明:这将启动 Searxng 和 Caddy 容器,Caddy 自动配置 HTTPS。
 - 如果使用旧版 Docker Compose,运行 
docker-compose up -d。 
 - 
恢复安全设置:
- 首次运行成功后,编辑 
docker-compose.yaml,恢复cap_drop: - ALL。 - 重启服务:
docker compose downdocker compose up -d 
 - 首次运行成功后,编辑 
 - 
验证访问:
- 浏览器访问 
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,适合快速测试或开发环境,无需反向代理。
步骤
- 
创建目录:
mkdir my-searxngcd my-searxng - 
设置端口:
export PORT=8080- 说明:可根据需要更改端口,确保不冲突。
 
 - 
拉取镜像:
docker pull searxng/searxng - 
运行容器:
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 和实例名称。
 
 - 说明:
 - 
验证访问:
- 浏览器访问 
http://localhost:8080,确认 Searxng 运行。 - 检查容器:
docker container ls。 
 - 浏览器访问 
 - 
配置 Searxng:
- 编辑 
./searxng/settings.yml调整设置。 - 重启容器:
docker container restart(通过docker container ls获取 ID)。 
 - 编辑 
 
后续管理
- 停止容器:
docker container stop。 - 查看日志:
docker logs。 - 进入容器:
docker exec -it sh。 - 更新:重新拉取镜像并运行新容器:
docker pull searxng/searxng 
常见问题与解决方案
- 权限问题:
- 问题:挂载目录(如 
./searxng)无写入权限,导致容器失败。 - 解决:运行 
chmod -R 777 searxng或使用 root 用户。 
 - 问题:挂载目录(如 
 - 端口冲突:
- 问题:8080 或 80/443 端口被占用。
 - 解决:更改 
PORT或-p参数,如-p 8081:8080。 
 - 首次运行失败(
docker-compose):- 问题:未移除 
cap_drop: - ALL,导致无法创建uwsgi.ini。 - 解决:按步骤 4 注释该行,运行后恢复。
 
 - 问题:未移除 
 - HTTPS 配置:
docker-compose:Caddy 自动处理,需正确设置.env。docker run:需手动配置反向代理(如 Nginx)并申请证书。
 
两种方法对比
.env 和 settings.yml)cap_drop 和 systemd)高级选项
- 自定义设置:编辑 
searxng/settings.yml调整搜索引擎、主题或语言,参考 Searxng 文档。 - 性能优化:通过环境变量 
UWSGI_WORKERS和UWSGI_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)。


