🚀 Tutorial Completo: Open Web UI + SearXNG + Ollama

📋 Pré-requisitos

🔧 PASSO 1: VERIFICAÇÃO INICIAL DO FIREWALL

⚠️ SEMPRE COMECE POR AQUI!

bash

# Verificar status do firewallsudo ufw status verbose  # Se estiver ATIVO, configurar portas necessáriassudo ufw allow 3000/tcp sudo ufw allow 8888/tcp   sudo ufw allow 11434/tcp sudo ufw allow from 172.17.0.0/16 to any  # Recarregar firewallsudo ufw reload

🐳 PASSO 2: CRIAR ESTRUTURA DE DIRETÓRIOS

bash

# Criar diretórios organizadossudo mkdir -p /opt/app/{searxng,open-webui}/{config,data}sudo chown -R $USER:$USER /opt/app cd /opt/app

🔍 PASSO 3: INSTALAR SEARXNG

3.1 Configuração do SearXNG

bash

cat > searxng/config/settings.yml << 'EOF'

general:

  debug: false

  instance_name: "SearXNG"

 

server:

  secret_key: "$(openssl rand -hex 32)"

  limiter: false

  public_instance: true

  base_url: false

 

search:

  safe_search: 0

  autocomplete: ""

  formats:

    - html

    - json

 

ui:

  static_use_hash: false

  default_locale: "en"

  default_theme: "simple"

 

engines:

  - name: duckduckgo

    engine: duckduckgo

    shortcut: dd

    categories: [general]

    disabled: false

 

  - name: google

    engine: google

    shortcut: go

    categories: [general]

    disabled: false

 

  - name: bing

    engine: bing

    shortcut: bi

    categories: [general]

    disabled: false

EOF

3.2 Executar SearXNG

bash

docker run --name searxng -d \     --restart unless-stopped \     -p 8888:8080 \     -v "/opt/app/searxng/config:/etc/searxng" \     -v "/opt/app/searxng/data:/var/cache/searxng" \     docker.io/searxng/searxng:latest

3.3 Verificar SearXNG

bash

# Testar se está respondendocurl -s "http://localhost:8888/search?q=teste&format=json" | jq '.results[0].title' 2>/dev/null

🤖 PASSO 4: INSTALAR OPEN WEB UI

4.1 Executar Open Web UI

bash

docker run --name open-webui -d \     --restart unless-stopped \     -p 3000:8080 \     -v "/opt/app/open-webui/data:/app/backend/data" \     -e OLLAMA_BASE_URL=http://172.17.0.1:11434 \     -e ENABLE_WEB_SEARCH=true \     -e SEARXNG_SEARCH_URL="http://172.17.0.1:8888/search?q={query}&format=json" \     ghcr.io/open-webui/open-webui:main

4.2 Verificar Open Web UI

bash

# Testar acessocurl -s http://localhost:3000 > /dev/null && echo "✅ Open Web UI OK" || echo "❌ Open Web UI Falhou"

⚙️ PASSO 5: CONFIGURAR OLLAMA (OPCIONAL)

bash

# Instalar Ollamacurl -fsSL https://ollama.ai/install.sh | sh# Iniciar serviçosudo systemctl enable ollama sudo systemctl start ollama  # Baixar modelo (exemplo) ollama pull llama2:7b  # Verificarcurl http://localhost:11434/api/tags

🎯 PASSO 6: CONFIGURAÇÃO AVANÇADA (DOCKER COMPOSE)

6.1 Arquivo docker-compose.yml (RECOMENDADO)

bash

cd /opt/app cat > docker-compose.yml << 'EOF'

version: '3.8'

 

services:

  searxng:

    image: docker.io/searxng/searxng:latest

    container_name: searxng

    restart: unless-stopped

    ports:

      - "8888:8080"

    volumes:

      - ./searxng/config:/etc/searxng

      - ./searxng/data:/var/cache/searxng

    networks:

      - app-network

 

  open-webui:

    image: ghcr.io/open-webui/open-webui:main

    container_name: open-webui

    restart: unless-stopped

    ports:

      - "3000:8080"

    environment:

      - OLLAMA_BASE_URL=http://host.docker.internal:11434

      - ENABLE_WEB_SEARCH=true

      - SEARXNG_SEARCH_URL=http://searxng:8080/search?q={query}&format=json

    volumes:

      - ./open-webui/data:/app/backend/data

    depends_on:

      - searxng

    networks:

      - app-network

 

networks:

  app-network:

    driver: bridge

EOF# Executar com composedocker-compose down docker-compose up -d

🔍 PASSO 7: VERIFICAÇÃO FINAL

7.1 Teste de Comunicação

bash

#!/bin/bashecho "=== VERIFICAÇÃO COMPLETA DO SISTEMA ==="echo "1. Firewall:"sudo ufw status | grep -E "(3000|8888|11434)"echo "2. Containers:"docker psecho "3. SearXNG:"curl -s "http://localhost:8888/search?q=teste&format=json" | jq -r '.results[0].title // "❌ Falhou"' 2>/dev/null  echo "4. Open Web UI:"curl -s http://localhost:3000 > /dev/null && echo "✅ OK" || echo "❌ Falhou"echo "5. Ollama:"curl -s http://localhost:11434/api/tags > /dev/null && echo "✅ OK" || echo "❌ Falhou"echo "6. Web Search:"echo "Acesse http://localhost:3000 e teste: /web notícias de hoje"

7.2 Teste no Navegador

🛠️ PASSO 8: SOLUÇÃO DE PROBLEMAS

Problema: Firewall Bloqueando

bash

# Diagnosticardocker run --rm instrumentisto/nmap -p 3000,8888,11434 172.17.0.1  # Corrigirsudo ufw allow from 172.17.0.0/16 to any sudo ufw reload

Problema: Web Search Não Funciona

bash

# Verificar logsdocker logs open-webui | grep -i search  # Testar comunicaçãodocker exec open-webui curl -s "http://searxng:8080/search?q=teste"

Problema: Containers Não Se Comunicam

bash

# Usar Docker Compose (solução recomendada)docker-compose down docker-compose up -d

📝 COMANDOS ÚTEIS PARA MANUTENÇÃO

bash

# Ver logsdocker-compose logs -f# Parar tudodocker-compose down  # Backup dadossudo tar -czf backup-$(date +%Y%m%d).tar.gz /opt/app/open-webui/data /opt/app/searxng/data  # Atualizardocker-compose pull docker-compose up -d

🎉 SISTEMA PRONTO!

Agora você tem:

Acesso:

Uso:

⚠️ LEMBRETE IMPORTANTE PARA SUPORTE

Sempre verifique o firewall primeiro:

bash

sudo ufw status verbose # Se portas 3000, 8888, 11434 não estiverem abertas, configure:sudo ufw allow 3000/tcp sudo ufw allow 8888/tcp sudo ufw allow 11434/tcp sudo ufw reload

Este tutorial resolve 90% dos problemas de comunicação entre containers! 🎯