Docker Compose 部署searxng
时间: 2025-08-10 10:58:07 浏览: 2
<think>我们根据提供的引用内容,特别是引用[1][2][3],来整理一个使用Docker Compose部署SearXNG搜索引擎的教程。同时,我们注意到引用[2]中提到官方项目可能存在的端口冲突问题,因此本教程将采用自行部署的方式,避免使用Caddy反向代理,以便与其他服务共存。
步骤概览:
1. 克隆官方仓库(但我们将不使用其中的Caddy部分)
2. 修改docker-compose.yaml文件(去除Caddy服务,调整设置)
3. 修改settings.yaml文件(配置SearXNG实例)
4. 启动服务
详细步骤:
步骤1:克隆官方仓库(但我们将不使用其中的Caddy部分)
引用[1]中提到的仓库是:https://github.com/searxng/searxng-docker
我们可以克隆这个仓库,然后修改docker-compose.yaml文件。
步骤2:修改docker-compose.yaml文件
根据引用[2]的建议,为了避免与现有服务的80端口冲突,我们将去除Caddy服务,并让SearXNG服务直接暴露端口(或者使用其他反向代理,如Nginx)。这里我们假设直接暴露SearXNG的8080端口(SearXNG默认监听8080端口)。
修改后的docker-compose.yaml文件示例(去除了caddy服务,并确保searxng服务暴露端口):
```yaml
version: '3.7'
services:
redis:
container_name: searxng-redis
image: "redis:alpine"
command: redis-server --save "" --appendonly "no"
networks:
- searxng
restart: always
searxng:
container_name: searxng
image: searxng/searxng:latest
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_HOSTNAME=0.0.0.0:8080
ports:
- "8080:8080"
networks:
- searxng
restart: always
depends_on:
- redis
networks:
searxng:
name: searxng
```
步骤3:修改searxng文件夹中的settings.yaml文件
引用[3]提供了详细的配置项修改。我们按照引用[3]的说明进行修改,但也可以根据实际需求调整。
创建或修改`./searxng/settings.yml`文件(注意:在docker-compose.yaml中我们将searxng的配置文件目录映射为`./searxng`,所以在此目录下创建settings.yml):
配置示例:
```yaml
general:
debug: false
instance_name: "MySearch" # 自定义实例名称,将显示在网页标题
server:
secret_key: "your_secret_key_here" # 设置一个安全的密钥
base_url: "http://your-domain-or-ip:8080/" # 替换为你的域名或IP,如果通过反向代理访问,则设置为代理后的URL
image_proxy: true # 启用图片代理
search:
autocomplete: "baidu" # 自动完成建议使用百度
default_lang: "zh-CN" # 默认搜索语言为中文
formats: # 响应格式,增加json以便第三方调用
- html
- json
ui:
autocomplete: "baidu" # 自动完成建议使用百度
default_locale: "zh-Hans-CN" # 默认界面语言为中文
simple_style: auto # 主题风格:light, dark, auto
```
步骤4:启动服务
在包含docker-compose.yaml的目录下运行:
```bash
docker-compose up -d
```
之后,SearXNG服务将在本机的8080端口运行。
注意事项:
1. 如果服务器上有防火墙,确保8080端口开放。
2. 如果需要使用域名访问,可以配置Nginx等反向代理,将80/443端口代理到本地的8080端口。
3. 引用[3]中提到的secret_key需要设置一个强密钥,可以使用以下命令生成:`openssl rand -hex 32`
引用说明:
本教程参考了引用[1][2][3]的内容,特别是关于去除Caddy服务以避免端口冲突(引用[2])和settings.yml的配置(引用[3])。
相关问题:
1. 如何为SearXNG配置HTTPS?
2. 如何配置Nginx作为SearXNG的反向代理?
3. 如何更新SearXNG的Docker镜像?</think>### Docker Compose部署SearXNG搜索引擎教程
以下是使用Docker Compose部署SearXNG的完整步骤:
#### 1. 准备环境
```bash
# 安装Docker和Docker Compose
sudo apt update && sudo apt install docker.io docker-compose
```
#### 2. 创建项目目录
```bash
mkdir searxng-docker && cd searxng-docker
```
#### 3. 创建`docker-compose.yml`文件
```yaml
version: '3.7'
services:
redis:
image: "redis:alpine"
container_name: searxng-redis
command: redis-server --save "" --appendonly "no"
networks:
- searxng-net
restart: unless-stopped
searxng:
image: searxng/searxng:latest
container_name: searxng
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_HOSTNAME=0.0.0.0:8080
ports:
- "8080:8080"
networks:
- searxng-net
restart: unless-stopped
depends_on:
- redis
networks:
searxng-net:
name: searxng-network
```
#### 4. 创建配置文件目录
```bash
mkdir searxng
```
#### 5. 配置`settings.yml`文件
在`searxng/settings.yml`中添加:
```yaml
general:
debug: false
instance_name: "我的私人搜索引擎" # 自定义名称
server:
secret_key: "生成强密码" # 使用openssl rand -hex 32生成
base_url: "http://你的IP或域名:8080/"
image_proxy: true # 启用图片代理
search:
autocomplete: "baidu" # 自动完成建议源
default_lang: "zh-CN" # 默认搜索语言
formats:
- html
- json # 支持API调用
ui:
default_locale: "zh-Hans-CN" # 界面语言
simple_style: auto # light/dark/auto
query_in_title: true
```
> **重要提示**:使用`openssl rand -hex 32`生成强密码替换`secret_key`[^3]
#### 6. 启动服务
```bash
docker-compose up -d
```
#### 7. 验证部署
访问`http://服务器IP:8080`,应看到搜索界面。检查日志:
```bash
docker-compose logs -f
```
#### 8. 配置反向代理(可选)
使用Nginx代理并添加HTTPS:
```nginx
server {
listen 80;
server_name search.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name search.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
### 关键配置说明
1. **端口冲突解决**:直接暴露8080端口,避免与Caddy的80端口冲突[^2]
2. **中文优化**:设置`default_lang: zh-CN`和`default_locale: zh-Hans-CN`[^3]
3. **百度集成**:配置`autocomplete: baidu`使用百度建议[^3]
4. **API支持**:添加`json`格式支持第三方调用[^3]
### 管理命令
```bash
# 停止服务
docker-compose down
# 更新版本
docker-compose pull
docker-compose up -d --force-recreate
# 清除缓存
docker exec searxng redis-cli FLUSHALL
```
### 常见问题解决
1. **端口冲突**:修改`docker-compose.yml`中的端口映射(如`8081:8080`)
2. **启动失败**:检查`settings.yml`的YAML格式是否正确
3. **无法访问**:确保防火墙开放8080端口:`sudo ufw allow 8080`
阅读全文
相关推荐




















