From cd2c2d235d469c55307d0c96610a78dd185f94c1 Mon Sep 17 00:00:00 2001 From: drholy Date: Sun, 3 Aug 2025 10:46:06 +0000 Subject: [PATCH] add sample data --- .gitignore | 1 - Dockerfile | 4 +- app/config.py | 3 +- app/data/docs/1-1.md | 18 +++++++++ app/data/docs/1-2.md | 40 +++++++++++++++++++ app/data/docs/1-3.md | 21 ++++++++++ app/data/docs/1-4.md | 24 +++++++++++ app/data/docs/2-1.md | 22 ++++++++++ app/data/docs/2-2.md | 29 ++++++++++++++ app/data/docs/2-3.md | 23 +++++++++++ app/data/docs/2-4.md | 33 +++++++++++++++ app/data/docs/3-1.md | 15 +++++++ app/data/docs/3-2.md | 15 +++++++ app/data/docs/3-3.md | 21 ++++++++++ app/data/docs/3-4.md | 34 ++++++++++++++++ app/data/docs/4-1.md | 17 ++++++++ app/data/docs/4-2.md | 22 ++++++++++ app/data/docs/4-3.md | 19 +++++++++ app/data/docs/4-4.md | 23 +++++++++++ app/main.py | 19 ++++----- docker-compose.yml | 5 +-- install.sh | 22 +++++----- .../requirements.txt => requirements.txt | 0 23 files changed, 401 insertions(+), 29 deletions(-) create mode 100644 app/data/docs/1-1.md create mode 100644 app/data/docs/1-2.md create mode 100644 app/data/docs/1-3.md create mode 100644 app/data/docs/1-4.md create mode 100644 app/data/docs/2-1.md create mode 100644 app/data/docs/2-2.md create mode 100644 app/data/docs/2-3.md create mode 100644 app/data/docs/2-4.md create mode 100644 app/data/docs/3-1.md create mode 100644 app/data/docs/3-2.md create mode 100644 app/data/docs/3-3.md create mode 100644 app/data/docs/3-4.md create mode 100644 app/data/docs/4-1.md create mode 100644 app/data/docs/4-2.md create mode 100644 app/data/docs/4-3.md create mode 100644 app/data/docs/4-4.md rename offline_packages/requirements.txt => requirements.txt (100%) diff --git a/.gitignore b/.gitignore index b78df82..fc01a90 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ /app/core /app/data/chroma_db /app/data/parsed_json/ -/app/data/docs/ /app/__pycache__ /models /cache diff --git a/Dockerfile b/Dockerfile index 8f93be0..a5edd0a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ RUN pip install --upgrade pip && \ WORKDIR /app # Копируем только requirements.txt для кэширования слоя -COPY offline_packages/requirements.txt /app/requirements.txt +COPY requirements.txt /app/requirements.txt # Установка зависимостей (включая GPU-версии) RUN pip install --no-cache-dir -r /app/requirements.txt @@ -37,4 +37,4 @@ RUN pip install --no-cache-dir -r /app/requirements.txt COPY app /app # Запуск приложения -CMD ["python", "main.py"] \ No newline at end of file +#CMD ["python", "main.py"] \ No newline at end of file diff --git a/app/config.py b/app/config.py index da70882..7e3810e 100644 --- a/app/config.py +++ b/app/config.py @@ -1,5 +1,4 @@ import os - from pydantic import SecretStr from pydantic_settings import BaseSettings, SettingsConfigDict @@ -13,7 +12,7 @@ class Config(BaseSettings): MAX_CHUNK_SIZE: int = 512 CHUNK_OVERLAP: int = 50 LM_MODEL_NAME: str = "/models/paraphrase-multilingual-MiniLM-L12-v2" - LOCAL_LLM_NAME: str = "/models/Qwen3-4B" + LOCAL_LLM_NAME: str = "/models/Qwen3-8B" QWEN_MODEL_NAME: str = "qwen3-chat" diff --git a/app/data/docs/1-1.md b/app/data/docs/1-1.md new file mode 100644 index 0000000..9b15c4c --- /dev/null +++ b/app/data/docs/1-1.md @@ -0,0 +1,18 @@ +### Как определить цели и требования для домашнего сервера** + +Перед сборкой сервера чётко сформулируйте, зачем он вам нужен. Это определит выбор железа. + +#### **Ключевые параметры:** +- **Оперативная память:** минимум 32 ГБ, желательно до 64 ГБ (с запасом на будущее). +- **Процессор:** 8+ потоков. Приоритет — количество ядер, а не высокая частота. +- **Диски:** минимум 6 слотов для HDD, лучше 8 и более. +- **Габариты:** высота до ~30 см (чтобы влез на полку). +- **Расширяемость:** возможность добавить: + - Видеокарту (для транскодинга видео) + - 10 Гбит сеть + - SATA-контроллер +- **Энергопотребление:** не более 100–150 Вт под нагрузкой. +- **Тишина:** не должен шуметь как пылесос. +- **Бюджет:** до 50 000 ₽ (с учётом продажи старого оборудования). + +> ✅ **Итог:** Вы получите чёткий список требований, по которому можно выбирать комплектующие. \ No newline at end of file diff --git a/app/data/docs/1-2.md b/app/data/docs/1-2.md new file mode 100644 index 0000000..04951ad --- /dev/null +++ b/app/data/docs/1-2.md @@ -0,0 +1,40 @@ +### Подбор комплектующих для домашнего сервера** + +На основе требований выберите совместимые и эффективные компоненты. + +#### **1. Корпус — Fractal Design Node 804** +- Поддерживает до 8 дисков (6×3.5" + 2×2.5"). +- Удобные салазки для HDD. +- Совет: ставьте корпус боком (дисками наружу) — легче менять диски. + +#### **2. Материнская плата — ASRock X470D4U** +- Сокет AM4, поддержка до 128 ГБ RAM. +- 8 SATA-портов — не нужен дополнительный контроллер. +- 2× гигабитных LAN, IPMI, встроенная графика. +- Минусы: только 4 USB-порта, M.2 работает на PCIe 3.0 x2. + +#### **3. Процессор — AMD Ryzen 7 3700 (8 ядер / 16 потоков)** +- Энергоэффективный (~65 Вт). +- Поддерживается материнкой без проблем (в отличие от R7 1700). + +#### **4. Охлаждение — DeepCool GAMMAXX 300** +- Достаточно для R7 3700. +- Тихий, дешёвый, эффективный. + +#### **5. Оперативная память — 32 ГБ (2×16 ГБ DDR4 2666 MHz)** +- UDIMM — совместима с ASRock X470D4U. +- Без ECC (экономия), но можно апгрейдить до 64+ ГБ. + +#### **6. Блок питания — be quiet! Pure Power 11, 400–500 Вт** +- Расчёт: ~100 Вт (CPU) + 80 Вт (HDD) + 100 Вт (материнка, SSD) + запас = 400 Вт хватит. + +#### **7. Диски — 33 ТБ (перенос со старого сервера)** +- HDD: 8×2, 6×1, 5×1, 3×2 ТБ. +- SSD: 2×1–2 ТБ — под кэш, Docker, VM. + +#### **8. Дополнительно (по мере необходимости)** +- SATA-контроллер в M.2 (чтобы не тратить PCI-E слот). +- Видеокарта (позже, для транскодинга). +- 10 Гбит сеть — не сейчас. + +> ✅ **Итог:** Вы собрали список проверенных и совместимых комплектующих с учётом будущего апгрейда. \ No newline at end of file diff --git a/app/data/docs/1-3.md b/app/data/docs/1-3.md new file mode 100644 index 0000000..c963aa3 --- /dev/null +++ b/app/data/docs/1-3.md @@ -0,0 +1,21 @@ +### Сборка сервера — пошагово** + +Соберите сервер, не повредив компоненты. + +#### **Шаги:** +1. **Установите материнскую плату** в корпус. +2. **Вставьте CPU** в сокет, закройте фиксатор. +3. **Нанесите термопасту**, установите кулер. +4. **Установите RAM** в слоты (2×16 ГБ). +5. **Подключите питание**: + - 24-pin от БП к материнке. + - 8-pin CPU к материнке. +6. **Установите диски** в салазки, подключите: + - SATA-кабели к материнке. + - Питание от БП. +7. **Подключите переднюю панель** (USB, аудио, кнопки включения). +8. **Установите блок питания**, закрепите. +9. **Подключите все компоненты**, проверьте, нет ли болтающих проводов. +10. **Включите, проверьте запуск.** + +> ✅ **Итог:** Сервер собран, готов к установке ОС. \ No newline at end of file diff --git a/app/data/docs/1-4.md b/app/data/docs/1-4.md new file mode 100644 index 0000000..29d1908 --- /dev/null +++ b/app/data/docs/1-4.md @@ -0,0 +1,24 @@ +### Финансы и итоговая конфигурация** + +Проверьте бюджет и оцените результат. + +#### **Затраты:** +- Корпус: 12 000 ₽ +- Материнка: 22 000 ₽ +- CPU: 9 000 ₽ +- Память (замена на десктопе): ~10 000 ₽ +- Кулер (замена на десктопе): ~3 000 ₽ +- **Итого: ~56 000 ₽** + +#### **Компенсация:** +- Продажа старого HP Microserver: ~30 000 ₽ +- Скидка в магазине +- **Чистые затраты: ~10–15 000 ₽** + +#### **Итоговая конфигурация:** +- **Производительность:** Ryzen 7 3700 + 32 ГБ RAM → мощнее старого Xeon. +- **Хранение:** 33 ТБ + SSD-кэш. +- **Гибкость:** 8+ дисков, M.2, PCI-E, IPMI. +- **Расширяемость:** можно добавить GPU, 10 Гбит, больше RAM. + +> ✅ **Итог:** Вы получили мощный, тихий, энергоэффективный сервер за разумные деньги. Готов к установке Unraid, Proxmox или другой ОС. \ No newline at end of file diff --git a/app/data/docs/2-1.md b/app/data/docs/2-1.md new file mode 100644 index 0000000..ebee1e3 --- /dev/null +++ b/app/data/docs/2-1.md @@ -0,0 +1,22 @@ +### Как выбрать ОС для домашнего сервера** + +При замене Windows Server нужно выбрать современную, гибкую систему, сочетающую NAS, виртуализацию и контейнеры. + +#### **Варианты:** +| Система | Подходит, если… | Минусы | +|--------|------------------|--------| +| **Unraid** | Нужна гибкость, Docker, VM, диски любого объёма | Платная лицензия | +| **TrueNAS** | Важна отказоустойчивость (ZFS), энтерпрайз-подход | Требователен к RAM, неудобен с разными дисками | +| **OpenMediaVault** | Хочется лёгкий Linux-сервер | Устаревший интерфейс, меньше интеграций | +| **Proxmox VE** | Серьёзная виртуализация — основная задача | Неудобный веб-интерфейс | +| **ESXi / XCP-ng** | Работа в enterprise-среде | Сложность, неудобство для домашнего использования | + +#### **Финальный выбор — Unraid:** +- ✅ Поддержка дисков **любого объёма** +- ✅ Встроенная **отказоустойчивость (parity)** +- ✅ Удобный **Docker** и **виртуализация (KVM)** +- ✅ Проброс GPU, USB, SATA +- ✅ SSD-кэш, плагины, Community Appstore +- ❌ Платно: 89$ (до 12 дисков) + +> ✅ **Итог:** Unraid — лучший баланс между простотой, функциональностью и гибкостью для домашнего сервера. diff --git a/app/data/docs/2-2.md b/app/data/docs/2-2.md new file mode 100644 index 0000000..2b677a7 --- /dev/null +++ b/app/data/docs/2-2.md @@ -0,0 +1,29 @@ +### Настройка дискового массива в Unraid** + +Unraid позволяет собрать массив из дисков разного объёма с защитой от сбоев. + +#### **Ключевые понятия:** +- **Data-диски** — хранят данные. +- **Parity-диск** — один или два диска для защиты от потери (аналог RAID). +- **Кэш-диск (SSD)** — ускоряет запись и доступ. +- **Флешка** — хранит ОС и настройки (не участвует в массиве). + +#### **Как настроить:** +1. Подключите все диски. +2. В веб-интерфейсе (`http://tower`) назначьте: + - Один диск как **Parity** + - Остальные как **Data** + - SSD — как **Cache** +3. Запустите массив. + +#### **Гибкость:** +- Можно добавлять, удалять, заменять диски. +- Замена: только на диск **равного или большего объёма**. +- При разборе массива данные остаются на дисках. + +#### **Важно:** +- **Ребилд parity** занимает 12–18 часов (при 8 ТБ). +- Во время ребилда массив **без защиты**. +- Для экономии времени: можно сначала собрать массив **без parity**, заполнить данными, потом добавить parity и сделать ребилд. + +> ✅ **Итог:** Unraid даёт максимальную гибкость в управлении дисками при наличии отказоустойчивости. diff --git a/app/data/docs/2-3.md b/app/data/docs/2-3.md new file mode 100644 index 0000000..3431fe1 --- /dev/null +++ b/app/data/docs/2-3.md @@ -0,0 +1,23 @@ +### Миграция сервисов на Unraid** + +Перенесите ключевые сервисы со старого сервера в Docker и виртуальные машины. + +#### **Как заменить каждый сервис:** + +| Было | Стало | Как настроить | +|------|-------|----------------| +| **Файловое хранилище** | SMB в Unraid | Создайте шары (shared folders), включите SMB | +| **Торрент-клиент** | qBittorrent / Deluge (Docker) | Через Community Appstore | +| **Медиасервер** | Plex (Docker) | Подключите старую базу, укажите пути | +| **Резервное копирование** | Duplicati → OneDrive | Docker-контейнер, шифрование, версии | +| **Синхронизация** | Robocopy / GoodSync | Syncthing (Docker) — для ноутбуков | +| **Виртуальные машины** | VirtualBox | KVM в Unraid (поддержка проброса GPU/USB) | +| **Удалённый доступ** | RDP | Виртуалка с Windows + RDP | +| **Хостинг (Bitwarden и др.)** | Виртуалки | Docker-контейнеры (проще и надёжнее) | + +#### **Советы:** +- Используйте **Community Applications** для установки контейнеров. +- Для управления множеством Docker — поставьте **Portainer**. +- Проброс USB-флешки: через `/dev/disk/by-id/...` как raw-устройство. + +> ✅ **Итог:** Все сервисы легко переносятся в Unraid с помощью Docker и KVM. diff --git a/app/data/docs/2-4.md b/app/data/docs/2-4.md new file mode 100644 index 0000000..53f832a --- /dev/null +++ b/app/data/docs/2-4.md @@ -0,0 +1,33 @@ +### Планирование улучшений и бэкапов** + +Unraid — это основа. Его можно расширять по мере роста потребностей. + +#### **Что добавить позже:** +- **Видеокарта** — NVIDIA с NVENC для аппаратного транскодинга (Plex/Jellyfin). +- **10 Гбит сеть** — при обновлении роутера и кабелей. +- **Portainer** — для удобного управления Docker-контейнерами. +- **ZFS через плагин** — если понадобится (не основная ФС). +- **Автоматизация** — через плагины `CA User Scripts` или `Dynamix`. + +#### **Обязательные бэкапы:** +1. **Конфигурация Unraid:** + - Экспортируйте: `Settings → Flash → Backup` + - Сохраните на флешку или в облако. +2. **Папки:** + - `/config` — настройки сервера + - `/docker` — контейнеры + - `/vm` — виртуальные машины +3. **Внешние бэкапы:** + - Используйте **Duplicati (Docker)** → OneDrive, Mail.ru, Backblaze. + - Настройте хранение: ежедневно (неделя), еженедельно (месяц), ежемесячно (год). + +#### **Итоговая архитектура:** +``` +Unraid +├── Массив: 6× HDD + 1× Parity + SSD Cache +├── Docker: Plex, qBittorrent, Duplicati, Syncthing +├── VM: Windows (RDP), Linux (тесты) +└── Плагины: Community Apps, Dynamix, CA User Scripts +``` + +> ✅ **Итог:** Unraid легко масштабируется. Главное — регулярно бэкапить конфигурацию и данные. \ No newline at end of file diff --git a/app/data/docs/3-1.md b/app/data/docs/3-1.md new file mode 100644 index 0000000..7da027f --- /dev/null +++ b/app/data/docs/3-1.md @@ -0,0 +1,15 @@ +### Проверка совместимости и выбор процессора** + +Перед запуском сервера убедитесь, что железо работает стабильно. + +#### **Ключевые шаги:** +1. Проверьте **официальную поддержку CPU** материнской платой. + - Пример: Ryzen 7 1700 на ASRock X470D4U работал с зависаниями при нагрузке (например, `rsync`). +2. Если процессор не в списке поддержки — ожидайте проблем. +3. Замените нестабильный CPU на официально поддерживаемый: + - Успешный выбор: **Ryzen 7 3700** (8 ядер, 16 потоков, AM4). +4. После замены: + - Обновите BIOS, если нужно. + - Проверьте стабильность под нагрузкой (чтение/запись массива, запуск VM). + +> ✅ **Итог:** Используйте только проверенные и поддерживаемые процессоры — это основа стабильной работы. diff --git a/app/data/docs/3-2.md b/app/data/docs/3-2.md new file mode 100644 index 0000000..e126a7e --- /dev/null +++ b/app/data/docs/3-2.md @@ -0,0 +1,15 @@ +### Организация охлаждения** + +Правильное охлаждение критично для долговечности HDD и CPU. + +#### **Схема вентиляции:** +- **Передняя панель:** 120 мм вентилятор на **вдув**. +- **Задняя панель:** 140 мм вентилятор на **выдув**. +- **Верх корпуса:** 140 мм вентилятор на **выдув** — для отвода горячего воздуха от CPU-кулера. + +#### **Требования:** +- Все вентиляторы — **4-pin PWM** (ASRock X470D4U не управляет 3-pin). +- Кулер: **DeepCool GAMMAXX 300** — подходит для Ryzen 3700. +- Цель: температура HDD под нагрузкой — **не выше 40°C**. + +> ✅ **Итог:** Трёхвентиляторная схема обеспечивает стабильную температуру даже в жару. diff --git a/app/data/docs/3-3.md b/app/data/docs/3-3.md new file mode 100644 index 0000000..0e1dc15 --- /dev/null +++ b/app/data/docs/3-3.md @@ -0,0 +1,21 @@ +### Энергопотребление и реальные цифры** + +Знайте, сколько сервер потребляет, чтобы оценить стоимость эксплуатации. + +#### **Измерения (конфигурация):** +- CPU: Ryzen 7 3700 @3.6 ГГц +- RAM: 32 ГБ +- Диски: 6× HDD, 2× SSD + +#### **Потребление:** +| Состояние | Потребление | +|----------|-------------| +| Выключен (IPMI работает) | 4–6 Вт | +| Пик при включении | 120 Вт | +| Холостой ход (диски крутятся) | 70–73 Вт | +| Холостой ход (диски остановлены) | 42–43 Вт | +| Работа (массив, VM, Docker) | 80–83 Вт | +| Проверка parity | 90–95 Вт | +| Максимальная нагрузка | 120–125 Вт | + +> ✅ **Итог:** Среднее потребление — **~100 Вт**, что даёт около **300 руб/мес** при непрерывной работе. diff --git a/app/data/docs/3-4.md b/app/data/docs/3-4.md new file mode 100644 index 0000000..2615290 --- /dev/null +++ b/app/data/docs/3-4.md @@ -0,0 +1,34 @@ +### Установка аддонов и аккуратная укладка кабелей** + +Оптимизируйте внутреннее пространство и добавьте удобные доработки. + +#### **1. SATA-контроллер в M.2** +- Задача: не тратить PCI-E слот. +- Решение: M.2 → 5× SATA контроллер (PCIe 2.0 x4). +- Скорость: до 900 МБ/с — хватает для HDD. +- Подключение: второй корзине HDD. + +#### **2. Внутренний свитч (временное решение)** +- Проблема: 2 порта на материнке, но 1 свободный на роутере. +- Решение: + - Установите 5-портовый свитч **внутри корпуса**. + - Запитайте от БП. + - Подключите: LAN + IPMI → свитч → роутер. +- Минус: при выключении питания — свитч гаснет. + +#### **3. USB-хаб** +- Проблема: всего 4 USB-порта. +- Решение: + - Используйте **внешний хаб** в задних USB-портах. + - Закрепите на корпусе. + - Передние порты — подключите напрямую к материнке. + +#### **4. Укладка кабелей** +- **Питание HDD:** 40 см кабели с 4 разъёмами — удобно для корзин. +- **SATA-шлейфы:** 50 см, 4 разъёма — меньше мусора. +- **Трассировка:** + - Не пересекайте кабели. + - Используйте штатные стяжки. + - Оставьте запас для извлечения корзин. + +> ✅ **Итог:** Аккуратная сборка упрощает обслуживание и улучшает охлаждение. \ No newline at end of file diff --git a/app/data/docs/4-1.md b/app/data/docs/4-1.md new file mode 100644 index 0000000..62ca1d0 --- /dev/null +++ b/app/data/docs/4-1.md @@ -0,0 +1,17 @@ +### Установка Unraid и первоначальная настройка** + +Начните с установки ОС и базовой конфигурации. + +#### **Шаги:** +1. Скачайте образ Unraid с официального сайта. +2. Запишите его на USB-флешку (через Rufus, Balena Etcher и т.п.). +3. Вставьте флешку в сервер, включите — загрузитесь с неё. +4. Откройте в браузере: `http://tower` (или IP сервера). +5. Настройте: + - Пароль администратора. + - Сетевые интерфейсы (LAN, IPMI — при необходимости). + - Подключите диски (они появятся в интерфейсе). + +> **Важно:** Unraid загружается в RAM, вся конфигурация хранится на флешке. + +> ✅ **Совет:** Используйте свежие гайды от **SpaceInvader One** или **iBracorp** — они покрывают все основы. diff --git a/app/data/docs/4-2.md b/app/data/docs/4-2.md new file mode 100644 index 0000000..d6fe865 --- /dev/null +++ b/app/data/docs/4-2.md @@ -0,0 +1,22 @@ +### Настройка дискового массива и parity** + +Организуйте надёжное хранилище с защитой от сбоев. + +#### **Основные шаги:** +1. Назначьте один диск как **Parity** (желательно CMR, например, Toshiba 8 ТБ). +2. Остальные диски — как **Data**. +3. (Опционально) Добавьте второй **Parity** — защита от двух сбоев. +4. Назначьте SSD как **Cache** (ускоряет запись и доступ к Docker/VM). +5. Запустите массив. + +#### **Гибкость:** +- Диски могут быть **разного объёма**. +- Можно добавлять, удалять, заменять без потери данных. +- При удалении: остановите массив → пересоздайте без диска → ребилд parity. + +#### **Добавление диска (без очистки):** +1. Подключите диск как **Unassigned Device**. +2. Отформатируйте в XFS. +3. Остановите массив → извлеките parity → добавьте диск → верните parity → дождитесь ребилда. + +> ✅ **Совет:** Для экономии времени сначала соберите массив **без parity**, заполните данными, потом добавьте parity. diff --git a/app/data/docs/4-3.md b/app/data/docs/4-3.md new file mode 100644 index 0000000..8536799 --- /dev/null +++ b/app/data/docs/4-3.md @@ -0,0 +1,19 @@ +### Установка и настройка ключевых сервисов** + +Разверните основные сервисы через Docker и виртуальные машины. + +#### **Какие сервисы и как:** + +| Сервис | Решение | +|--------|--------| +| **Торрент-клиент** | `qBittorrent` или `Deluge` (Docker) | +| **Медиасервер** | `Plex` (Docker) — подключите старую базу и укажите новые пути | +| **Резервное копирование** | `Duplicati` (Docker) → OneDrive (шифрование, версии) | +| | Увеличьте размер архива (до 300 МБ) для больших файлов (RAW-фото) | +| | Проблема: `/tmp` заполняется → смонтируйте внешнюю папку | +| **Синхронизация** | `Syncthing` (Docker) — для ноутбуков, авто-сброс при отключении | +| **Удалённый доступ** | Виртуалка с Windows + RDP или `Apache Guacamole` (Docker) — веб-доступ | +| **Внутренний хостинг** | `Bitwarden`, `Nginx Proxy Manager` (Docker) | +| | Проброс портов: 80/443 | + +> ✅ **Совет:** Установите **Portainer** — он упрощает управление множеством контейнеров. diff --git a/app/data/docs/4-4.md b/app/data/docs/4-4.md new file mode 100644 index 0000000..f4efb30 --- /dev/null +++ b/app/data/docs/4-4.md @@ -0,0 +1,23 @@ +### Плагины, бэкапы и полезные доработки** + +Настройте расширения и защитите конфигурацию. + +#### **Полезные плагины:** +- **Community Applications** — App Store для Docker и плагинов. +- **Unassigned Devices** — управление дисками вне массива. +- **Dynamix** — мониторинг температур, дисков, настройка. +- **CA User Scripts** — автоматизация (бэкапы, запуск скриптов). +- **Unbalance** — перенос данных с диска перед удалением. + +#### **Бэкап конфигурации (обязательно!):** +1. Экспортируйте: + - `Settings → Flash → Backup` (вся конфигурация). + - Папки: `/config`, `/docker`, `/vm`. +2. Храните на внешней флешке или в облаке. + +#### **Дополнительно:** +- Настройте **rclone** → подключите Mail.ru (1 ТБ) как диск (O:). +- Используйте для синхронизации музыки, книг, видео. +- Расшарьте через веб или виртуалку. + +> ✅ **Итог:** Unraid становится мощной и надёжной платформой. Главное — регулярно бэкапьте конфигурацию. \ No newline at end of file diff --git a/app/main.py b/app/main.py index 55b2ae7..21aab63 100644 --- a/app/main.py +++ b/app/main.py @@ -27,7 +27,7 @@ class ChatWithAI: self.tokenizer = AutoTokenizer.from_pretrained(model_name) self.model = AutoModelForCausalLM.from_pretrained( model_name, - torch_dtype=torch.float32, + torch_dtype=torch.float16, device_map="cuda", ) @@ -85,17 +85,17 @@ class ChatWithAI: messages = [ { "role": "system", - "content": """Ты — внутренний менеджер компании Mazban. Отвечаешь по делу без лишних вступлений. + "content": """Ты — внутренний менеджер помощи пользоватклям по вопросам настройки серверов. Отвечаешь по делу без лишних вступлений. Правила: 1. Сразу переходи к сути, без фраз типа "На основе контекста" -2. Используй только факты. Если точных данных нет — отвечай общими фразами об Marzban, но не придумывай конкретику +2. Используй только факты. Если точных данных нет — отвечай общими фразами об настройки серверов и подбору железа, но не придумывай конкретику 3. Используй обычный текст без форматирования 4. Включай ссылки только если они есть в контексте 5. Говори от первого лица множественного числа: "Мы предоставляем", "У нас есть" 6. При упоминании файлов делай это естественно, например: "Я прикреплю инструкцию, где подробно описаны шаги" 7. На приветствия отвечай доброжелательно, на негатив — с легким юмором -8. Можешь при ответах использовать общую информацию из открытых источников по Marzban, но опирайся на контекст +8. Можешь при ответах использовать общую информацию из открытых источников по настройке сервером и подбору железа, но опирайся на контекст 9. Если пользователь спрашивает о ценах, планах или технических характеристиках — давай конкретные ответы из контекста 10. При технических вопросах предлагай практические решения @@ -128,7 +128,7 @@ class ChatWithAI: generate_kwargs = { "input_ids": inputs["input_ids"], "max_new_tokens": 512, - "temperature": 0.7, + "temperature": 0.5, "do_sample": True, "top_p": 0.9, "pad_token_id": self.tokenizer.eos_token_id, @@ -160,12 +160,13 @@ def main(): demo = gr.ChatInterface( fn=respond, - title="Помощник настройки Marzban", + title="Помощник настройки сервера и подбора железа", description="Задайте вопрос — получите ответ от внутреннего менеджера.", examples=[ - "Как подключить Marzban?", - "Как настроить telegram бота?", - "Что такое marzban?" + "Как определить цели и требования для домашнего сервера?", + "Как выбрать ОС для домашнего сервера?", + "Проверка совместимости и выбор процессора", + "Установка Unraid и первоначальная настройка" ], ) demo.launch(server_name="0.0.0.0", server_port=8080, share=False) diff --git a/docker-compose.yml b/docker-compose.yml index 47966b0..5d7b71f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,10 +17,7 @@ services: volumes: - ./app:/app - ./models:/models - - ./cache/cache:/root/.cache - - ./cache/site-packages:/usr/local/lib/python3.10/site-packages - - ./offline_packages:/offline_packages - # entrypoint: sleep 1000000 #./app/entrypoint.sh + entrypoint: sleep 1000000 #./app/entrypoint.sh ports: - "8080:8080" networks: diff --git a/install.sh b/install.sh index b5ae071..0dbb8c6 100644 --- a/install.sh +++ b/install.sh @@ -9,17 +9,6 @@ echo \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ tee /etc/apt/sources.list.d/docker.list > /dev/null -echo \ -'{ \ - "runtimes": { \ - "nvidia": { \ - "path": "nvidia-container-runtime", \ - "runtimeArgs": [] \ - } \ - }, \ - "default-runtime": "nvidia" \ -}' > /etc/docker/daemon.json - curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && \ curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ @@ -38,5 +27,16 @@ apt-get install -y \ git lfs install +echo \ +'{ \ + "runtimes": { \ + "nvidia": { \ + "path": "nvidia-container-runtime", \ + "runtimeArgs": [] \ + } \ + }, \ + "default-runtime": "nvidia" \ +}' > /etc/docker/daemon.json + lspci -k | grep -EA2 'VGA|3D' nvidia-smi diff --git a/offline_packages/requirements.txt b/requirements.txt similarity index 100% rename from offline_packages/requirements.txt rename to requirements.txt