
🔐 Безопасная информационная панель мониторинга в реальном времени для агентов OpenClaw AI. Аутентификация, TOTP MFA, отслеживание затрат, живая лента, браузер памяти и многое другое.
Красивая, безопасная панель мониторинга в реальном времени для агентов OpenClaw. Отслеживайте сеансы, контролируйте использование API, просматривайте расходы, управляйте файлами памяти и следите за состоянием системы — всё в одном месте.

| Обзор | Сеансы | Стоимость |
|---|---|---|
![]() | ![]() | ![]() |
| Ограничения | Прямой эфир | Логи |
|---|---|---|
![]() | ![]() | ![]() |
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git cd openclaw-dashboard
export WORKSPACE_DIR=/path/to/your/openclaw/workspace
node server.js
Посетите `http://localhost:7000` в вашем браузере. При первом посещении вы увидите **экран регистрации**, где нужно создать имя пользователя и пароль. После регистрации войдите с помощью своих учетных данных.
## 📦 Установка
### Предварительные требования
- **Node.js** версии 18 или выше (проверьте с помощью `node --version`)
- **OpenClaw** установлен и запущен
- **Systemd** (опционально, для установки службы в Linux)
#### Опциональные зависимости
| Инструмент | Назначение | Установка |
|------------|------------|-----------|
| `jq` | Страница управления Docker | `sudo apt install jq` |
| `tmux` | Сборщик использования Claude CLI | `sudo apt install tmux` |
| `python3` | Парсер использования Claude CLI | Обычно предустановлен |
| `docker` | Страница управления Docker | [docs.docker.com](https://docs.docker.com/engine/install/) |
### Установка вручную
1. **Клонируйте репозиторий** ```bash
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git
cd openclaw-dashboard
Сервер выведет: ``` 🚀 Dashboard running on http://localhost:7000 🔑 Recovery token: abc123def456...
**Сохраните токен восстановления** — он понадобится, если вы забудете пароль.
4. **Доступ к панели управления**
Откройте `http://localhost:7000` и зарегистрируйте свою учетную запись.
### Системная служба Systemd (install.sh)
Чтобы запустить панель управления как системную службу с автоматическим запуском и восстановлением после сбоев:```bash
sudo ./install.sh
Это позволит:
/etc/systemd/system/agent-dashboard.service/etc/systemd/system/agent-dashboard.service.d/override.confПросмотр логов:```bash journalctl -u agent-dashboard -f
### Docker```bash
# Build
docker build -t openclaw-dashboard .
# Run
docker run -d \
--name openclaw-dashboard \
-p 3001:3001 \
-e WORKSPACE_DIR=/app/workspace \
-e DASHBOARD_ALLOW_HTTP=true \
-v ~/.openclaw:/home/node/.openclaw:ro \
-v ~/.openclaw/workspace:/app/workspace \
openclaw-dashboard
Для доступа к странице управления Docker передайте сокет Docker:```bash
docker run -d
--name openclaw-dashboard
-p 3001:3001
-e WORKSPACE_DIR=/app/workspace
-e DASHBOARD_ALLOW_HTTP=true
-v ~/.openclaw:/home/node/.openclaw:ro
-v ~/.openclaw/workspace:/app/workspace
-v /var/run/docker.sock:/var/run/docker.sock:ro
--group-add $(stat -c '%g' /var/run/docker.sock)
openclaw-dashboard
### Переменные окружения
| Variable | Описание | По умолчанию |
|----------|----------|--------------|
| `DASHBOARD_PORT` | Порт сервера | `7000` |
| `DASHBOARD_TOKEN` | Восстановительный токен для сброса пароля | Генерируется автоматически при запуске |
| `WORKSPACE_DIR` | Путь к рабочей области OpenClaw | `$OPENCLAW_WORKSPACE` или текущий каталог |
| `OPENCLAW_DIR` | Каталог конфигурации OpenClaw | `~/.openclaw` |
| `OPENCLAW_AGENT` | ID агента для мониторинга | `main` |
| `DASHBOARD_ALLOW_HTTP` | Разрешить HTTP с нелокальных IP | `false` |
**Примеры:**```bash
# Custom port
DASHBOARD_PORT=8080 node server.js
# Custom recovery token
DASHBOARD_TOKEN=my_secret_token_12345 node server.js
# Different workspace
WORKSPACE_DIR=/mnt/data/openclaw node server.js
Панель использует аутентификацию по имени пользователя и паролю с защищенными сессиями на стороне сервера.
http://localhost:7000)localStorage)sessionStorage)Для предотвращения атак перебором:
Добавьте дополнительный уровень безопасности с помощью одноразовых паролей на основе времени (TOTP).
После включения каждый вход требует:
Если вы потеряли доступ к приложению-аутентификатору (потеря телефона, удаление приложения и т.д.):
Важно: Измените путь /root/clawd/data/credentials.json, если ваше рабочее пространство находится в другом месте.
Если вы забыли свой пароль:
Токен восстановления (DASHBOARD_TOKEN) выводится при запуске сервера. Вы можете найти его в нескольких местах:
journalctl -u agent-dashboard | grep "Recovery token"
Вывод:```
🔑 Recovery token: 3e6b91f352418b486a9aa9d82fbbc1b1
cat /etc/systemd/system/agent-dashboard.service.d/override.conf
Ищите:```ini
Environment=DASHBOARD_TOKEN=3e6b91f352418b486a9aa9d82fbbc1b1
Если вы установили ее вручную:```bash echo $DASHBOARD_TOKEN
### Изменение вашего пароля
Чтобы изменить пароль, находясь в системе:
1. Перейдите на страницу **Безопасность**
2. Введите ваш **текущий пароль**
3. Введите ваш **новый пароль**
4. Нажмите **"Сменить пароль"**
5. Все остальные сеансы будут аннулированы (вам придется снова войти в систему на других устройствах)
### Полный сброс учетной записи (Ядерный вариант)
Если все заблокировано и вы не можете войти:
1. **Подключитесь по SSH к вашему серверу**
2. **Удалите файл учетных данных**: ```bash
rm /root/clawd/data/credentials.json
Предупреждение: Это удалит ваше имя пользователя, пароль и настройки MFA. Файлы памяти и журналы аудита не затрагиваются.
Панель управления создана с использованием лучших практик безопасности:
data/audit.log*) не разрешены.bak создаются перед перезаписью файлов рабочей областиПанель управления предназначена для локального доступа или доступа через Tailscale:
http://localhost:7000http://100.x.x.x:7000
DASHBOARD_ALLOW_HTTP=true)По умолчанию панель управления блокирует HTTP-доступ с нелокальных IP-адресов. Исключения:
Для других сетей панель управления требует HTTPS или заголовка X-Forwarded-Proto: https (от обратного прокси).
Чтобы разрешить HTTP со всех IP-адресов (не рекомендуется):```bash DASHBOARD_ALLOW_HTTP=true node server.js
### Не подвергайте воздействию общедоступного Интернета
**Эта панель управления НЕ защищена для работы в общедоступном Интернете.** Хотя она имеет аутентификацию и ограничение частоты запросов, она предназначена для частных сетей. Если вам всё же необходимо её открыть:
- Используйте обратный прокси-сервер (nginx, Caddy) с HTTPS
- Добавьте белый список IP-адресов
- Вместо этого рассмотрите VPN (Tailscale, WireGuard)
## 🛠️ Устранение неполадок
### "Слишком много неудачных попыток"
**Проблема:** Вы видите сообщение "Слишком много неудачных попыток входа. Пожалуйста, повторите попытку позже."
**Решения:**
- Подождите **15 минут**, пока истечёт временная блокировка
- Перезапустите службу, чтобы сбросить ограничения частоты: ```bash
systemctl restart agent-dashboard
Problem: Ваш пароль был изменен, но вы не можете войти.
Solution: Используйте процедуру "Forgot password?" с вашим токеном восстановления, чтобы установить новый пароль.
Problem: 6-значный код TOTP отклоняется.
Решения:
Problem: В браузере отображается пустая страница или ошибка соединения.
Решения:
Должен вернуть: ```json {"authenticated": false, "requiresRegistration": false}
### Ошибка "Требуется HTTPS"
**Проблема:** Браузер показывает "Требуется HTTPS. Доступ через localhost, Tailscale или включите HTTPS."
**Решения:**
- Доступ через **localhost**: `http://localhost:7000`
- Доступ через **Tailscale**: `http://100.x.x.x:7000`
- Установите `DASHBOARD_ALLOW_HTTP=true` в окружении (не рекомендуется): ```bash
# Add to /etc/systemd/system/agent-dashboard.service.d/override.conf
Environment=DASHBOARD_ALLOW_HTTP=true
# Reload and restart
systemctl daemon-reload
systemctl restart agent-dashboard
Проблема: Панель управления показывает пустую страницу после получения нового кода.
Решения:
Ctrl+Shift+R (Windows/Linux) или Cmd+Shift+R (macOS)Панель управления предоставляет REST API для программного доступа. Все конечные точки требуют аутентификации через заголовок Authorization: Bearer <sessionToken>.
GET /api/auth/status — Проверка статуса аутентификацииPOST /api/auth/login — Вход с именем пользователя/паролем (+ TOTP если MFA включён)POST /api/auth/register — Регистрация новой учётной записи (только если нет учётных данных)POST /api/auth/reset-password — Сброс пароля с помощью токена восстановленияВсе остальные конечные точки требуют аутентификации:
GET /api/config — Конфигурация панели управленияGET /api/sessions — Список всех сессий агентовGET /api/usage — Данные об использовании за скользящее окно в 5 часовGET /api/costs — Данные о расходах по дням, моделям и сессиямGET /api/system — Метрики здоровья системыGET /api/memory-files — Список файлов памятиGET /api/memory-file?path=<path> — Чтение файла памятиGET /api/key-files — Список файлов рабочей области (навыки, конфиги)GET /api/key-file?path=<name> — Чтение файла рабочей областиPOST /api/key-file — Запись в файл рабочей области (с резервной копией)GET /api/crons — Список cron-задачPOST /api/cron/<id>/toggle — Включение/отключение cron-задачиЗа подробными примерами запросов/ответов обратитесь к предыдущей версии этого README или изучите API на вкладке Network в браузере.
Панель управления хранит данные в вашей рабочей директории:
Структура файла учётных данных:```json { "username": "admin", "passwordHash": "pbkdf2_sha512$100000$...", "salt": "...", "mfaSecret": "BASE32SECRET..." // Only if MFA enabled }
## 🔗 Интеграция с OpenClaw
Панель управления автоматически обнаруживает:
- **Сессии** из `$OPENCLAW_DIR/agents/$AGENT_ID/sessions/`
- **Задачи Cron** из `$OPENCLAW_DIR/cron/jobs.json`
- **Файлы памяти** из `$WORKSPACE_DIR/MEMORY.md`, `HEARTBEAT.md` и `memory/*.md`
- **Git-репозитории** из `$WORKSPACE_DIR/projects/*/`
- **Данные о состоянии** сохранены в `$WORKSPACE_DIR/data/health-history.json`
### Необходимые файлы
Панель управления работает лучше всего, когда существуют следующие файлы:
- `$WORKSPACE_DIR/MEMORY.md` - Долгосрочная память агента
- `$WORKSPACE_DIR/HEARTBEAT.md` - Список задач Heartbeat
- `$WORKSPACE_DIR/memory/YYYY-MM-DD.md` - Ежедневные записи памяти
- `$WORKSPACE_DIR/scripts/scrape-claude-usage.sh` - Сборщик использования Claude
- `$WORKSPACE_DIR/scripts/parse-claude-usage.py` - Анализатор использования Claude
- `$WORKSPACE_DIR/scripts/scrape-gemini-usage.sh` - Сборщик использования Gemini
- `$WORKSPACE_DIR/scripts/parse-gemini-usage.py` - Анализатор использования Gemini
## ⌨️ Сочетания клавиш
| Клавиша | Действие |
|-----|--------|
| `1` | Переключиться на Обзор |
| `2` | Переключиться на Сессии |
| `3` | Переключиться на Затраты |
| `4` | Переключиться на Лимиты запросов |
| `5` | Переключиться на Память |
| `6` | Переключиться на Файлы |
| `7` | Переключиться на Ленту в реальном времени |
| `8` | Переключиться на Логи |
| `9` | Переключиться на Безопасность |
| `Space` | Приостановить/Возобновить ленту (на странице ленты в реальном времени) |
| `/` | Фокус на поле поиска |
| `Esc` | Закрыть модальные окна и наложения |
| `?` | Показать справку по сочетаниям клавиш |
## 🤝 Участие в разработке
Вклад приветствуется! Пожалуйста, следуйте этим правилам:
1. **Форкните** репозиторий
2. **Создайте** ветку функции (`git checkout -b feature/amazing-feature`)
3. **Зафиксируйте** ваши изменения (`git commit -m 'Add amazing feature'`)
4. **Отправьте** изменения в ветку (`git push origin feature/amazing-feature`)
5. **Откройте** Pull Request
### Настройка среды разработки```bash
git clone https://github.com/tugcantopaloglu/openclaw-dashboard.git
cd openclaw-dashboard
export WORKSPACE_DIR=/path/to/test/workspace
node server.js
Панель управления не требует сборки — редактируйте server.js или index.html и перезагрузите страницу.
Лицензия MIT — подробнее в файле LICENSE.
Сделано с ✨ Tuğcan Topaloğlu
jq (страница Docker), tmux + python3 (сбор данных об использовании Claude CLI), docker (управление Docker)POST /api/cron/<id>/run — Ручной запуск cron-задачиGET /api/logs?service=<service>&lines=<N> — Получение системных журналовPOST /api/action/<action> — Выполнение быстрых действий (restart-openclaw, restart-dashboard и т.д.)POST /api/claude-usage-scrape — Запуск сбора данных об использовании ClaudeGET /api/claude-usage — Получение последних собранных данных об использовании ClaudePOST /api/gemini-usage-scrape — Запуск сбора данных об использовании GeminiGET /api/gemini-usage — Получение последних собранных данных об использовании GeminiGET /api/live — Поток событий от сервера (Server-Sent Events) с сообщениями в реальном времениGET /api/notifications?limit=<N> — События аудита для центра уведомленийPOST /api/reauth — Повторная аутентификация для конфиденциальных страниц (Безопасность, Конфигурация)GET /api/openclaw-config — Чтение конфигурационного файла OpenClawPUT /api/openclaw-config — Сохранение конфигурации с автоматическим резервным копированием и перезапуском шлюзаGET /api/sys-security — Информация о безопасности системы (UFW, порты, fail2ban, журналы SSH)GET /api/docker — Список контейнеров Docker, образов и использование системыPOST /api/docker/action — Действия с Docker (запуск/остановка/перезапуск контейнера, очистка)GET /api/services — Список служб systemdPOST /api/services/action — Действия со службами (запуск/остановка/перезапуск, только из белого списка)| Файл | Назначение |
|---|
data/credentials.json | Имя пользователя + хешированный пароль + секрет MFA |
data/audit.log | Журнал аудита безопасности (автоматическая ротация при 10 МБ) |
data/health-history.json | История CPU/ОЗУ/Темп/Диск для спарклайнов |
data/claude-usage.json | Последние собранные данные об использовании Claude |
data/gemini-usage.json | Последние собранные данные об использовании Gemini |