> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lampac.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Устранение неисправностей Lampac NextGen

> Диагностика и устранение типичных проблем Lampac NextGen: логи, статистика, WebLog и ошибки модулей.

Если Lampac NextGen работает нестабильно или отказывается запускаться, начните с просмотра логов и статистических эндпоинтов. Эта статья описывает встроенные инструменты диагностики и типичные сценарии проблем.

## Статистика сервера

При включённой опции `openstat.enable` в `init.conf` доступны следующие эндпоинты:

| Эндпоинт                     | Описание                                                    |
| ---------------------------- | ----------------------------------------------------------- |
| `GET /stats/gc`              | Память: heap, WorkingSet, PrivateMemory                     |
| `GET /stats/request`         | Счётчики запросов, активные соединения, топ медленных путей |
| `GET /stats/tempdb`          | Кеши и пулы буферов                                         |
| `GET /stats/threadpool`      | Диагностика ThreadPool                                      |
| `GET /stats/browser/context` | Состояние Playwright: контексты, счётчики                   |

> `/stats/gc` доступен всегда. Остальные эндпоинты требуют `"openstat": { "enable": true }`.

Включите статистику в `init.conf`:

```json theme={null}
{
  "openstat": {
    "enable": true
  }
}
```

## WebLog: отладка в реальном времени

Модуль **WebLog** предоставляет страницу `/weblog`, на которой через WebSocket транслируются HTTP-запросы и события Playwright. Для доступа требуется пароль root (файл `passwd`).

<Warning>
  Не включайте WebLog на публично доступном сервере без ограничения доступа. Эндпоинт раскрывает детали входящего трафика и может содержать чувствительные данные.
</Warning>

## Логи

### Linux (systemd)

```bash theme={null}
# Просмотр логов в реальном времени
journalctl -u lampac -f

# Логи за последний час
journalctl -u lampac --since "1 hour ago"

# Логи с момента последнего запуска
journalctl -u lampac -b
```

### Файловые логи

Если включено `"serilog": true` в `init.conf`, логи пишутся в `logs/` с ротацией на 14 дней.

### Docker

```bash theme={null}
# Логи контейнера
docker compose logs -f lampac

# Логи с временной меткой
docker compose logs -f --timestamps lampac
```

## Типичные проблемы

<Accordion title="Сервер не запускается">
  * Проверьте, что порт 9118 (или указанный в `init.conf`) не занят другим процессом.
  * Убедитесь, что .NET 10 Runtime установлен корректно.
  * Посмотрите логи через `journalctl -u lampac` или `docker compose logs`.
  * Проверьте валидность `init.conf` — ошибки JSON или YAML приведут к отказу загрузки.
</Accordion>

<Accordion title="Модуль не загружается">
  * Проверьте `manifest.json` модуля: поле `"enable"` должно быть `true`.
  * Убедитесь, что имя модуля не добавлено в `BaseModule.SkipModules`.
  * Проверьте `BaseModule.LoadModules` — если задан whitelist, модуль должен в него попадать.
  * Для пользовательских модулей проверьте отсутствие синтаксических ошибок в `.cs`-файлах (Roslyn выведет ошибки в лог).
</Accordion>

<Accordion title="WAF блокирует запросы">
  * Проверьте настройки `WAF.countryAllow` — ваш IP может быть из неразрешённой страны.
  * Добавьте свой IP или подсеть в `WAF.whiteIps`.
  * Убедитесь, что вы не превышаете лимиты `limit_map` (например, 10 req/s на `/lite/`).
</Accordion>

<Accordion title="Провайдер не находит контент">
  * Проверьте, что провайдер включён в `init.conf` (например, `"Rezka": { "enable": true }`).
  * Убедитесь, что провайдер не отключён через `BaseModule.SkipModules` или `BaseModule.LoadModules`.
  * Проверьте доступность целевого сайта из сети сервера — возможны блокировки на стороне провайдера интернета.
  * Для провайдеров с токенами (KinoPub, Filmix) проверьте актуальность ключа.
</Accordion>

<Accordion title="Высокое потребление памяти">
  * Включите `lowMemoryMode: true` в `init.conf` — это уменьшает потребление примерно на 140 МБ.
  * Проверьте `/stats/gc` и `/stats/tempdb` для поиска утечек.
  * Ограничьте количество Playwright-инстанций (`chromium.count`, `firefox.count`).
  * Убедитесь, что модуль CacheMedia не кеширует избыточные потоки SISI.
</Accordion>

<Accordion title="Ошибки Playwright">
  * Убедитесь, что браузеры установлены: `playwright install`.
  * Проверьте `/api/chromium/ping` — должен вернуть `pong`.
  * Увеличьте `shm_size` в Docker (рекомендуется `1024mb`).
  * Проверьте логи на наличие ошибок запуска процессов Chromium или Firefox.
</Accordion>
