chore: обновление документации, Docker, UI и поисковых компонентов
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Perplexica Search API Documentation
|
||||
# GooSeek Search API Documentation
|
||||
|
||||
## Overview
|
||||
|
||||
Perplexica’s Search API makes it easy to use our AI-powered search engine. You can run different types of searches, pick the models you want to use, and get the most recent info. Follow the following headings to learn more about Perplexica's search API.
|
||||
GooSeek’s Search API makes it easy to use our AI-powered search engine. You can run different types of searches, pick the models you want to use, and get the most recent info. Follow the following headings to learn more about GooSeek's search API.
|
||||
|
||||
## Endpoints
|
||||
|
||||
@@ -53,7 +53,7 @@ Use the `id` field as the `providerId` and the `key` field from the models array
|
||||
|
||||
**Full URL**: `http://localhost:3000/api/search`
|
||||
|
||||
**Note**: Replace `localhost:3000` with your Perplexica instance URL if running on a different host or port
|
||||
**Note**: Replace `localhost:3000` with your GooSeek instance URL if running on a different host or port
|
||||
|
||||
### Request
|
||||
|
||||
@@ -73,12 +73,12 @@ The API accepts a JSON object in the request body, where you define the enabled
|
||||
},
|
||||
"optimizationMode": "speed",
|
||||
"sources": ["web"],
|
||||
"query": "What is Perplexica",
|
||||
"query": "What is GooSeek",
|
||||
"history": [
|
||||
["human", "Hi, how are you?"],
|
||||
["assistant", "I am doing well, how can I help you today?"]
|
||||
],
|
||||
"systemInstructions": "Focus on providing technical details about Perplexica's architecture.",
|
||||
"systemInstructions": "Focus on providing technical details about GooSeek's architecture.",
|
||||
"stream": false
|
||||
}
|
||||
```
|
||||
@@ -115,8 +115,8 @@ The API accepts a JSON object in the request body, where you define the enabled
|
||||
|
||||
```json
|
||||
[
|
||||
["human", "What is Perplexica?"],
|
||||
["assistant", "Perplexica is an AI-powered search engine..."]
|
||||
["human", "What is GooSeek?"],
|
||||
["assistant", "GooSeek is an AI-powered search engine..."]
|
||||
]
|
||||
```
|
||||
|
||||
@@ -130,20 +130,20 @@ The response from the API includes both the final message and the sources used t
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "Perplexica is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online. Here are some key features and characteristics of Perplexica:\n\n- **AI-Powered Technology**: It utilizes advanced machine learning algorithms to not only retrieve information but also to understand the context and intent behind user queries, providing more relevant results [1][5].\n\n- **Open-Source**: Being open-source, Perplexica offers flexibility and transparency, allowing users to explore its functionalities without the constraints of proprietary software [3][10].",
|
||||
"message": "GooSeek is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online. Here are some key features and characteristics of GooSeek:\n\n- **AI-Powered Technology**: It utilizes advanced machine learning algorithms to not only retrieve information but also to understand the context and intent behind user queries, providing more relevant results [1][5].\n\n- **Open-Source**: Being open-source, GooSeek offers flexibility and transparency, allowing users to explore its functionalities without the constraints of proprietary software [3][10].",
|
||||
"sources": [
|
||||
{
|
||||
"content": "Perplexica is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online.",
|
||||
"content": "GooSeek is an innovative, open-source AI-powered search engine designed to enhance the way users search for information online.",
|
||||
"metadata": {
|
||||
"title": "What is Perplexica, and how does it function as an AI-powered search ...",
|
||||
"url": "https://askai.glarity.app/search/What-is-Perplexica--and-how-does-it-function-as-an-AI-powered-search-engine"
|
||||
"title": "What is GooSeek, and how does it function as an AI-powered search ...",
|
||||
"url": "https://askai.glarity.app/search/What-is-GooSeek--and-how-does-it-function-as-an-AI-powered-search-engine"
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "Perplexica is an open-source AI-powered search tool that dives deep into the internet to find precise answers.",
|
||||
"content": "GooSeek is an open-source AI-powered search tool that dives deep into the internet to find precise answers.",
|
||||
"metadata": {
|
||||
"title": "Sahar Mor's Post",
|
||||
"url": "https://www.linkedin.com/posts/sahar-mor_a-new-open-source-project-called-perplexica-activity-7204489745668694016-ncja"
|
||||
"url": "https://www.linkedin.com/posts/sahar-mor_a-new-open-source-project-called-gooseek-activity-7204489745668694016-ncja"
|
||||
}
|
||||
}
|
||||
....
|
||||
@@ -160,7 +160,7 @@ Example of streamed response objects:
|
||||
```
|
||||
{"type":"init","data":"Stream connected"}
|
||||
{"type":"sources","data":[{"content":"...","metadata":{"title":"...","url":"..."}},...]}
|
||||
{"type":"response","data":"Perplexica is an "}
|
||||
{"type":"response","data":"GooSeek is an "}
|
||||
{"type":"response","data":"innovative, open-source "}
|
||||
{"type":"response","data":"AI-powered search engine..."}
|
||||
{"type":"done"}
|
||||
|
||||
348
docs/architecture/MICROSERVICES.md
Normal file
348
docs/architecture/MICROSERVICES.md
Normal file
@@ -0,0 +1,348 @@
|
||||
# Архитектура микросервисов GooSeek
|
||||
|
||||
Документ описывает план разбиения монолитного приложения GooSeek на микросервисы.
|
||||
|
||||
---
|
||||
|
||||
## 1. Текущая архитектура (монолит)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ Next.js Application (monolith) │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ API Routes │ Agents/Search │ Models/Providers │ Data │
|
||||
│ /api/chat │ classifier │ OpenAI, Anthropic │ SQLite│
|
||||
│ /api/search │ researcher │ Ollama, Groq... │ config│
|
||||
│ /api/images │ widgets │ registry │ uploads│
|
||||
│ /api/videos │ writer │ │ │
|
||||
│ /api/uploads │ media (image/video) │ │ │
|
||||
│ /api/chats │ │ │ │
|
||||
│ /api/providers │ │ │ │
|
||||
│ /api/config │ │ │ │
|
||||
│ /api/suggestions │ │ │ │
|
||||
│ /api/weather │ │ │ │
|
||||
│ /api/discover │ │ │ │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ External: SearXNG │ Yahoo Finance │ Open-Meteo │ LLM APIs (OpenAI, etc.) │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Предлагаемые микросервисы
|
||||
|
||||
### 2.1 Общая схема
|
||||
|
||||
```
|
||||
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ Frontend │────▶│ Gateway │────▶│ Chat │────▶│ Research │
|
||||
│ (Next.js) │ │ (BFF/API) │ │ Service │ │ Service │
|
||||
└──────────────┘ └──────────────┘ └──────┬───────┘ └──────┬───────┘
|
||||
│ │ │ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ ▼
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ │ Config/Chats │ │ LLM Proxy │ │ Search │
|
||||
└────────────▶│ Service │ │ Service │ │ Service │
|
||||
└──────────────┘ └──────────────┘ └──────┬───────┘
|
||||
│ │ │
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
||||
│ Storage │ │ Providers │ │ Uploads │
|
||||
│ Service │ │ (external) │ │ Service │
|
||||
└──────────────┘ └──────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Описание сервисов
|
||||
|
||||
### 3.1 Frontend (Next.js UI)
|
||||
|
||||
**Назначение:** Только UI — страницы, компоненты, клиентский state.
|
||||
|
||||
**Содержимое:**
|
||||
- `src/app/page.tsx`, `layout.tsx`, маршруты страниц
|
||||
- `src/components/` — все UI компоненты
|
||||
- `src/lib/hooks/` — клиентские хуки
|
||||
- `src/lib/actions.ts` — вызовы к Gateway API
|
||||
|
||||
**Исключить:** Все API routes (`src/app/api/`), серверная логика агентов, прямые вызовы DB.
|
||||
|
||||
**API:** Вызывает только Gateway.
|
||||
|
||||
---
|
||||
|
||||
### 3.2 Gateway (Backend-for-Frontend / API Gateway)
|
||||
|
||||
**Назначение:** Единая точка входа для клиента, роутинг, валидация, агрегация.
|
||||
|
||||
**Реализация:** Отдельный Node.js сервис (Fastify/Express) или часть Next.js API routes, которая только проксирует.
|
||||
|
||||
**Маршруты:**
|
||||
- `POST /api/chat` → Chat Service
|
||||
- `POST /api/search` → Chat Service (API mode)
|
||||
- `GET/POST /api/chats/*` → Storage Service
|
||||
- `POST /api/uploads` → Uploads Service
|
||||
- `GET/POST /api/providers/*` → Config + LLM Proxy
|
||||
- `GET/POST /api/config/*` → Storage Service (config)
|
||||
- `POST /api/suggestions` → Chat Service
|
||||
- `POST /api/images` → Chat/Media Service
|
||||
- `POST /api/videos` → Chat/Media Service
|
||||
- `GET /api/weather` → Widgets Service (или inline)
|
||||
- `POST /api/discover` → Search Service
|
||||
|
||||
**Зависимости:** Chat, Storage, Uploads, Search. Не содержит бизнес-логики.
|
||||
|
||||
---
|
||||
|
||||
### 3.3 Chat Service (Оркестратор)
|
||||
|
||||
**Назначение:** Главный оркестратор диалога: классификация, планирование, вызов research и writer.
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/agents/search/index.ts` — SearchAgent
|
||||
- `src/lib/agents/search/api.ts` — APISearchAgent
|
||||
- `src/lib/agents/search/classifier.ts`
|
||||
- `src/lib/agents/search/widgets/` — executor + виджеты (weather, stock, calc)
|
||||
- `src/lib/prompts/search/` — classifier, writer, researcher prompts
|
||||
- `src/lib/session.ts`
|
||||
|
||||
**API (внутренние):**
|
||||
- `POST /classify` — классификация запроса
|
||||
- `POST /search` — полный пайплайн (classify → research → widgets → write)
|
||||
- `POST /suggestions` — генерация подсказок
|
||||
|
||||
**Вызывает:**
|
||||
- Research Service — для поиска
|
||||
- LLM Proxy — для LLM вызовов (classify, write, suggestions)
|
||||
- Widgets (внешние API: Yahoo Finance, погода) — можно вынести в отдельный сервис
|
||||
|
||||
**Поток данных:**
|
||||
1. Классификация (LLM)
|
||||
2. Параллельно: Research Service + виджеты
|
||||
3. Генерация ответа (LLM)
|
||||
4. Сохранение в Storage (через Gateway или напрямую)
|
||||
|
||||
---
|
||||
|
||||
### 3.4 Research Service
|
||||
|
||||
**Назначение:** Выполнение исследовательского цикла — tools (web, academic, social, scrape, uploads).
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/agents/search/researcher/` — Researcher, ActionRegistry
|
||||
- `src/lib/agents/search/researcher/actions/` — webSearch, academicSearch, socialSearch, scrapeURL, uploadsSearch, plan, done
|
||||
- `src/lib/prompts/search/researcher.ts`
|
||||
|
||||
**API:**
|
||||
- `POST /research` — вход: classification, query, chatHistory, config → выход: searchFindings, findings
|
||||
|
||||
**Вызывает:**
|
||||
- Search Service — SearXNG (web, academic, social)
|
||||
- Uploads Service — семантический поиск по файлам
|
||||
- LLM Proxy — для researcher agent (tool calls)
|
||||
- Внешние URL — scrape
|
||||
|
||||
**Важно:** Researcher — это LLM-driven agent с tool calls. LLM решает, какой tool вызвать. Либо LLM живёт в Chat Service и вызывает tools по HTTP, либо Research Service сам держит копию researcher LLM — тогда нужно дублировать LLM-вызовы.
|
||||
|
||||
**Рекомендация:** Оставить researcher внутри Chat Service, а в Research Service вынести только **действия** (web search, scrape, uploads search) как отдельные HTTP endpoints. Chat Service вызывает Research Service по каждому tool call. Это уменьшает связанность, но увеличивает сетевые вызовы.
|
||||
|
||||
**Альтернатива:** Research как один сервис с LLM — получает query и classification, сам итерирует и возвращает готовые findings. Меньше round-trips, но дублирование LLM-инфраструктуры.
|
||||
|
||||
---
|
||||
|
||||
### 3.5 Search Service (SearXNG + обёртка)
|
||||
|
||||
**Назначение:** Обёртка над SearXNG для веб/академического/медиа поиска.
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/searxng.ts`
|
||||
- Вызовы: webSearch, academicSearch, socialSearch, image, video — все идут через `searchSearxng`
|
||||
|
||||
**API:**
|
||||
- `GET /search?q=...&engines=...&categories=...`
|
||||
- `GET /images?q=...`
|
||||
- `GET /videos?q=...`
|
||||
|
||||
**Внешняя зависимость:** SearXNG (уже отдельный сервис/контейнер).
|
||||
|
||||
**Реализация:** Минимальный Node.js/Fastify сервис, который проксирует к SearXNG и добавляет логику (rate limiting, fallback, кэш).
|
||||
|
||||
---
|
||||
|
||||
### 3.6 Uploads Service
|
||||
|
||||
**Назначение:** Загрузка файлов, парсинг (PDF, DOCX, TXT), эмбеддинги, семантический поиск.
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/uploads/manager.ts` — UploadManager
|
||||
- `src/lib/uploads/store.ts` — UploadStore (поиск по эмбеддингам)
|
||||
- `src/lib/utils/splitText.ts`, `computeSimilarity.ts`
|
||||
- Зависимости: pdf-parse, officeparser
|
||||
|
||||
**API:**
|
||||
- `POST /upload` — multipart, возвращает fileIds
|
||||
- `POST /search` — query, fileIds → chunks (семантический поиск)
|
||||
- `GET /files/:id` — метаданные файла
|
||||
|
||||
**Вызывает:** LLM Proxy — только для embedding модели (можно вынести в отдельный Embedding Service).
|
||||
|
||||
**Хранение:** Файлы на диске/volume, `uploaded_files.json`, `.content.json` с chunks.
|
||||
|
||||
---
|
||||
|
||||
### 3.7 Storage Service
|
||||
|
||||
**Назначение:** Централизованное хранилище: чаты, сообщения, конфигурация.
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/db/` — schema, migrations, drizzle
|
||||
- `src/lib/config/` — ConfigManager, modelProviders
|
||||
|
||||
**API:**
|
||||
- `GET/POST/PUT/DELETE /chats`
|
||||
- `GET/POST/PUT/DELETE /chats/:id`
|
||||
- `GET/POST/PUT/DELETE /messages`
|
||||
- `GET/POST /config`
|
||||
- `GET/POST /config/providers`
|
||||
|
||||
**База:** SQLite (или PostgreSQL при масштабировании). config.json можно мигрировать в ту же БД или отдельную таблицу.
|
||||
|
||||
---
|
||||
|
||||
### 3.8 LLM Proxy Service (опционально)
|
||||
|
||||
**Назначение:** Единая точка для вызовов LLM и embedding — OpenAI, Anthropic, Ollama, Groq, Gemini и т.д.
|
||||
|
||||
**Исходники:**
|
||||
- `src/lib/models/` — registry, providers, base LLM/Embedding
|
||||
|
||||
**API:**
|
||||
- `POST /chat` — text generation (streaming)
|
||||
- `POST /embed` — embedding
|
||||
- `GET /providers` — список провайдеров и моделей
|
||||
|
||||
**Конфигурация:** Берёт из Storage Service (config/providers) или env.
|
||||
|
||||
**Альтернатива:** LLM Proxy можно не выделять в отдельный сервис — каждый сервис (Chat, Research, Uploads) сам подключается к провайдерам. Но тогда дублирование кода и конфигурации. Рекомендуется вынести в общую библиотеку или отдельный сервис.
|
||||
|
||||
---
|
||||
|
||||
## 4. Матрица зависимостей
|
||||
|
||||
| Сервис | От кого получает вызовы | Кого вызывает |
|
||||
|-------------|----------------------------------|----------------------------------|
|
||||
| Gateway | Frontend | Chat, Storage, Uploads, Search |
|
||||
| Chat | Gateway | Research, LLM Proxy, Storage |
|
||||
| Research | Chat | Search, Uploads, LLM Proxy |
|
||||
| Search | Research, Chat (media) | SearXNG (внешний) |
|
||||
| Uploads | Gateway, Research | LLM Proxy (embedding) |
|
||||
| Storage | Gateway, Chat | — |
|
||||
| LLM Proxy | Chat, Research, Uploads | OpenAI, Anthropic, Ollama... |
|
||||
|
||||
---
|
||||
|
||||
## 5. Разбиение по репозиториям/папкам
|
||||
|
||||
### Вариант A: Монорепо (рекомендуется для старта)
|
||||
|
||||
```
|
||||
gooseek/
|
||||
├── apps/
|
||||
│ ├── frontend/ # Next.js UI
|
||||
│ ├── gateway/ # BFF / API Gateway
|
||||
│ ├── chat-service/ # SearchAgent, classifier, writer, widgets
|
||||
│ ├── research-service/ # Researcher, actions
|
||||
│ ├── search-service/ # SearXNG wrapper
|
||||
│ ├── uploads-service/ # UploadManager, UploadStore
|
||||
│ ├── storage-service/ # DB, config
|
||||
│ └── llm-proxy/ # Models registry, providers
|
||||
├── packages/
|
||||
│ ├── shared-types/ # Общие типы, DTO
|
||||
│ └── shared-utils/ # formatHistory, splitText, computeSimilarity
|
||||
├── docker-compose.yaml
|
||||
└── package.json # Turborepo/nx workspace
|
||||
```
|
||||
|
||||
### Вариант B: polyrepo
|
||||
|
||||
Отдельные репозитории для каждого сервиса. Больше гибкости в деплое, но сложнее координация изменений.
|
||||
|
||||
---
|
||||
|
||||
## 6. Порядок миграции (фазы)
|
||||
|
||||
### Фаза 1: Выделение Search Service
|
||||
- Обернуть SearXNG в отдельный сервис
|
||||
- Chat/Research вызывают его по HTTP вместо прямого импорта `searchSearxng`
|
||||
- **Риск:** Низкий. SearXNG уже внешний.
|
||||
|
||||
### Фаза 2: Выделение Storage Service
|
||||
- Вынести DB + config в отдельный сервис
|
||||
- Gateway и Chat переходят на HTTP к Storage
|
||||
- **Риск:** Средний. Много точек входа в DB.
|
||||
|
||||
### Фаза 3: Выделение Uploads Service
|
||||
- Вынести UploadManager + UploadStore
|
||||
- Research (uploadsSearch action) и Gateway вызывают Uploads по HTTP
|
||||
- **Риск:** Средний. Embedding модель — зависимость.
|
||||
|
||||
### Фаза 4: Выделение LLM Proxy
|
||||
- Общая обёртка над провайдерами
|
||||
- Chat, Research, Uploads вызывают LLM Proxy
|
||||
- **Риск:** Высокий. Много мест используют LLM напрямую.
|
||||
|
||||
### Фаза 5: Выделение Research Service
|
||||
- Researcher + actions в отдельный сервис
|
||||
- Chat вызывает Research по одному endpoint «проведи исследование»
|
||||
- **Риск:** Высокий. Тесная связь с Session, streaming.
|
||||
|
||||
### Фаза 6: Gateway + развязка Frontend
|
||||
- Frontend только UI, все вызовы через Gateway
|
||||
- Gateway — тонкий роутер без бизнес-логики
|
||||
- **Риск:** Средний. Рефакторинг API routes.
|
||||
|
||||
---
|
||||
|
||||
## 7. Ключевые вызовы и риски
|
||||
|
||||
1. **Streaming:** Текущий chat stream идёт от SearchAgent до клиента. При разбиении нужно решить: стримить через Gateway (proxy) или от Chat Service напрямую (WebSocket/SSE через Gateway как туннель).
|
||||
|
||||
2. **Session/state:** SessionManager — in-memory. При масштабировании Chat Service нужен Redis или аналог для shared state.
|
||||
|
||||
3. **Латентность:** Каждый HTTP hop добавляет ~10–50ms. Research делает много итераций — если Research в отдельном сервисе, round-trips умножаются.
|
||||
|
||||
4. **Embedding в Uploads:** Uploads нужна embedding модель. Варианты: вызывать LLM Proxy, или держать тяжёлую модель (transformers) внутри Uploads.
|
||||
|
||||
5. **Конфигурация:** Сейчас config.json на диске. При микросервисах — централизованный config (env, vault, или Storage Service).
|
||||
|
||||
---
|
||||
|
||||
## 8. Минимальный MVP разбиения
|
||||
|
||||
Если цель — не полный microservices, а **модульность и возможность деплоить части отдельно**:
|
||||
|
||||
| Сервис | Код | Отдельный процесс |
|
||||
|---------------|-----------------------------|-------------------|
|
||||
| **search-api**| `searxng.ts` + route | Да (отдельный порт) |
|
||||
| **uploads-api**| `uploads/` + route | Да |
|
||||
| **chat** | Всё остальное (agents, LLM, DB) | Один процесс |
|
||||
| **frontend** | Next.js UI | Отдельно (static/SSR) |
|
||||
|
||||
Так получается 3–4 контейнера вместо 1, но без глубокой декомпозиции логики.
|
||||
|
||||
---
|
||||
|
||||
## 9. Следующие шаги
|
||||
|
||||
1. Определить: полное разбиение или MVP.
|
||||
2. Выбрать стек для каждого сервиса (Node.js/Fastify, Next.js API routes, Go и т.д.).
|
||||
3. Описать контракты API (OpenAPI/JSON Schema) для межсервисного взаимодействия.
|
||||
4. Настроить docker-compose для локальной разработки.
|
||||
5. Внедрить общие пакеты (shared-types, shared-utils) в монорепо.
|
||||
6. Начать с Фазы 1 (Search Service) как пилот.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Perplexica Architecture
|
||||
# GooSeek Architecture
|
||||
|
||||
Perplexica is a Next.js application that combines an AI chat experience with search.
|
||||
GooSeek is a Next.js application that combines an AI chat experience with search.
|
||||
|
||||
For a high level flow, see [WORKING.md](WORKING.md). For deeper implementation details, see [CONTRIBUTING.md](../../CONTRIBUTING.md).
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# How Perplexica Works
|
||||
# How GooSeek Works
|
||||
|
||||
This is a high level overview of how Perplexica answers a question.
|
||||
This is a high level overview of how GooSeek answers a question.
|
||||
|
||||
If you want a component level overview, see [README.md](README.md).
|
||||
|
||||
@@ -58,7 +58,7 @@ We prompt the model to cite the references it used. The UI then renders those ci
|
||||
|
||||
## Search API
|
||||
|
||||
If you are integrating Perplexica into another product, you can call `POST /api/search`.
|
||||
If you are integrating GooSeek into another product, you can call `POST /api/search`.
|
||||
|
||||
It returns:
|
||||
|
||||
|
||||
@@ -1,60 +1,60 @@
|
||||
# Update Perplexica to the latest version
|
||||
# Update GooSeek to the latest version
|
||||
|
||||
To update Perplexica to the latest version, follow these steps:
|
||||
To update GooSeek to the latest version, follow these steps:
|
||||
|
||||
## For Docker users (Using pre-built images)
|
||||
|
||||
Simply pull the latest image and restart your container:
|
||||
|
||||
```bash
|
||||
docker pull itzcrazykns1337/perplexica:latest
|
||||
docker stop perplexica
|
||||
docker rm perplexica
|
||||
docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:latest
|
||||
docker pull itzcrazykns1337/gooseek:latest
|
||||
docker stop gooseek
|
||||
docker rm gooseek
|
||||
docker run -d -p 3000:3000 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:latest
|
||||
```
|
||||
|
||||
For slim version:
|
||||
|
||||
```bash
|
||||
docker pull itzcrazykns1337/perplexica:slim-latest
|
||||
docker stop perplexica
|
||||
docker rm perplexica
|
||||
docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v perplexica-data:/home/perplexica/data --name perplexica itzcrazykns1337/perplexica:slim-latest
|
||||
docker pull itzcrazykns1337/gooseek:slim-latest
|
||||
docker stop gooseek
|
||||
docker rm gooseek
|
||||
docker run -d -p 3000:3000 -e SEARXNG_API_URL=http://your-searxng-url:8080 -v gooseek-data:/home/gooseek/data --name gooseek itzcrazykns1337/gooseek:slim-latest
|
||||
```
|
||||
|
||||
Once updated, go to http://localhost:3000 and verify the latest changes. Your settings are preserved automatically.
|
||||
|
||||
## For Docker users (Building from source)
|
||||
|
||||
1. Navigate to your Perplexica directory and pull the latest changes:
|
||||
1. Navigate to your GooSeek directory and pull the latest changes:
|
||||
|
||||
```bash
|
||||
cd Perplexica
|
||||
cd GooSeek
|
||||
git pull origin master
|
||||
```
|
||||
|
||||
2. Rebuild the Docker image:
|
||||
|
||||
```bash
|
||||
docker build -t perplexica .
|
||||
docker build -t gooseek .
|
||||
```
|
||||
|
||||
3. Stop and remove the old container, then start the new one:
|
||||
|
||||
```bash
|
||||
docker stop perplexica
|
||||
docker rm perplexica
|
||||
docker run -p 3000:3000 -p 8080:8080 --name perplexica perplexica
|
||||
docker stop gooseek
|
||||
docker rm gooseek
|
||||
docker run -p 3000:3000 -p 8080:8080 --name gooseek gooseek
|
||||
```
|
||||
|
||||
4. Once the command completes, go to http://localhost:3000 and verify the latest changes.
|
||||
|
||||
## For non-Docker users
|
||||
|
||||
1. Navigate to your Perplexica directory and pull the latest changes:
|
||||
1. Navigate to your GooSeek directory and pull the latest changes:
|
||||
|
||||
```bash
|
||||
cd Perplexica
|
||||
cd GooSeek
|
||||
git pull origin master
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user