daily update 2026-03-29
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
# Проект: docs.a2v.space — Персональная документация
|
||||
|
||||
## Техническое задание
|
||||
|
||||
### Каркас
|
||||
- Hugo static site generator (уже установлен)
|
||||
- Кастомная тема на Bootstrap 5 (не использовать готовые темы, создать свою)
|
||||
- Bootstrap 5 через CDN
|
||||
- Тёплая цветовая палитра: бежевый (#f5f0e8), терракота (#c4623a), тёплый серый (#6b6560), тёмно-коричневый (#3d3530), акцент — золотистый (#d4a853)
|
||||
- Шрифт: системный sans-serif, читаемый, не мелкий
|
||||
|
||||
### Навигация
|
||||
- **Горизонтальное меню в шапке** — 5 разделов: Дневник, База знаний, Планы, Инструкции, Креды
|
||||
- **Боковое меню слева** — фильтры/подразделы для каждого раздела (теги, категории, статусы)
|
||||
- **Мобильная адаптация** — hamburger menu, боковое меню скрывается, контент на всю ширину
|
||||
|
||||
### Разделы
|
||||
|
||||
#### 1. Дневник (Diary) — `/diary/`
|
||||
- Формат блога, постинг по датам
|
||||
- Каждый пост = один день
|
||||
- Внутри поста: записи с указанием времени обсуждения и кратким описанием
|
||||
- Timeline-вид на странице списка (дата → превью)
|
||||
- Front matter: date, title, tags
|
||||
|
||||
#### 2. База знаний (Knowledge Base) — `/kb/`
|
||||
- Сквозной список статей (одностраничных)
|
||||
- Теги для категоризации
|
||||
- Боковое меню: список тегов как фильтр
|
||||
- Поиск по заголовкам и содержимому (client-side, fuse.js)
|
||||
|
||||
#### 3. Планы (Plans) — `/plans/`
|
||||
- Список планов-карточек
|
||||
- Статусы: 🟡 Запланировано, 🟠 В процессе, ✅ Сделано, ❌ Отменено
|
||||
- **Ранжирование**: завершённые (✅, ❌) в конце по дате завершения, предстоящие (🟡, 🟠) — ближайшая дата первой
|
||||
- На карточке: что планируется, когда планируем, статус, когда и при каких обстоятельствах запланировали (с цитатой автора)
|
||||
- Front matter: title, date, plan_date (когда планируется), status (planned/in_progress/done/cancelled), done_date, context_quote
|
||||
|
||||
#### 4. Инструкции (Guides) — `/guides/`
|
||||
- Аналогичен Базе знаний
|
||||
- Пошаговые инструкции
|
||||
- Теги, боковое меню с фильтрами
|
||||
|
||||
#### 5. Креды (Credentials) — `/creds/`
|
||||
- Одни креды = одна запись
|
||||
- **Шифрование содержимого**: пароли хранятся зашифрованными (AES через Web Crypto API)
|
||||
- При загрузке страницы — кнопка "Расшифровать", пользователь вводит мастер-пароль
|
||||
- Без мастер-пароля видны только названия/описания, значения скрыты
|
||||
- Front matter: title, description, service
|
||||
- Тело: зашифрованный JSON с полями (user, password, host, port, notes и т.д.)
|
||||
|
||||
### Шифрование кредов (ВАЖНО!)
|
||||
Реализовать через JavaScript Web Crypto API:
|
||||
1. При создании записи — JS-скрипт шифрует JSON с кредами мастер-паролем → сохраняет encrypted payload в Markdown
|
||||
2. При просмотре — кнопка "Расшифровать" → prompt для мастер-пароля → AES-GCM дешифровка → показать поля
|
||||
3. Использовать PBKDF2 для деривации ключа из пароля, AES-256-GCM для шифрования
|
||||
4.Salt и IV хранить вместе с payload (base64 encoded)
|
||||
|
||||
### Поиск
|
||||
- Client-side поиск через Fuse.js (CDN)
|
||||
- Индекс строится при сборке Hugo (JSON index)
|
||||
- Поле поиска в шапке
|
||||
|
||||
### Адаптивность
|
||||
- Mobile-first
|
||||
- На мобильных: hamburger menu, без боковой панели, контент на полную ширину
|
||||
- На планшетах: боковая панель сворачиваемая
|
||||
- На десктопе: полная навигация + боковая панель
|
||||
|
||||
---
|
||||
|
||||
## Контент для наполнения
|
||||
|
||||
### База знаний — API Eversolo
|
||||
|
||||
Создать статью `/content/kb/eversolo-api.md`:
|
||||
|
||||
Eversolo T8 — музыкальный стример, IP: 192.168.0.156, порт API: 9529, без авторизации.
|
||||
|
||||
#### Воспроизведение
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Play/Pause | `/ZidooMusicControl/v2/playOrPause` |
|
||||
| Следующий трек | `/ZidooMusicControl/v2/playNext` |
|
||||
| Предыдущий трек | `/ZidooMusicControl/v2/playLast` |
|
||||
| Перемотка (ms) | `/ZidooMusicControl/v2/seekTo?time=<ms>` |
|
||||
| Воспроизвести по ID | `/ZidooMusicControl/v2/playMusic?type=4&id=<id>` |
|
||||
| Состояние | `/ZidooMusicControl/v2/getState` |
|
||||
|
||||
#### Громкость
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Громкость вверх | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp` |
|
||||
| Громкость вниз | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown` |
|
||||
| Точная громкость | `/ZidooMusicControl/v2/setDevicesVolume?volume=<0-200>` |
|
||||
| Mute | `/ZidooMusicControl/v2/setMuteVolume?isMute=1` |
|
||||
| Unmute | `/ZidooMusicControl/v2/setMuteVolume?isMute=0` |
|
||||
|
||||
#### Входы/Выходы
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Получить список | `/ZidooMusicControl/v2/getInputAndOutputList` |
|
||||
| Установить вход | `/ZidooMusicControl/v2/setInputList?tag=<tag>&index=<n>` |
|
||||
| Установить выход | `/ZidooMusicControl/v2/setOutInputList?tag=<tag>&index=<n>` |
|
||||
| Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB |
|
||||
|
||||
#### Дисплей
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Яркость экрана (get) | `/SystemSettings/displaySettings/getScreenBrightness` |
|
||||
| Яркость экрана (set) | `/SystemSettings/displaySettings/setScreenBrightness?index=<0-115>` |
|
||||
| Яркость ручки (get) | `/SystemSettings/displaySettings/getKnobBrightness` |
|
||||
| Яркость ручки (set) | `/SystemSettings/displaySettings/setKnobBrightness?index=<0-255>` |
|
||||
| VU-режим (get) | `/SystemSettings/displaySettings/getVUModeList` |
|
||||
| VU-режим (set) | `/SystemSettings/displaySettings/setVUMode?index=<n>` |
|
||||
| Спектр (get) | `/SystemSettings/displaySettings/getSpPlayModeList` |
|
||||
| Спектр (set) | `/SystemSettings/displaySettings/setSpPlayModeList?index=<n>` |
|
||||
| Переключить VU/Спектр | `/ZidooMusicControl/v2/changVUDisplay?openType=<0|1>` |
|
||||
|
||||
#### Питание
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Параметры питания | `/ZidooMusicControl/v2/getPowerOption` |
|
||||
| Перезагрузка | `/ZidooMusicControl/v2/setPowerOption?tag=reboot` |
|
||||
| Выключение | `/ZidooMusicControl/v2/setPowerOption?tag=poweroff` |
|
||||
| Переключить экран | `/ZidooMusicControl/v2/setPowerOption?tag=screen` |
|
||||
| Включить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.ON` |
|
||||
| Выключить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.OFF` |
|
||||
|
||||
#### Поиск
|
||||
| Поиск | URL |
|
||||
|-------|-----|
|
||||
| По трекам | `/ZidooMusicControl/v2/searchMusicV2?key=<text>&start=0&count=100` |
|
||||
| По артистам | `/ZidooMusicControl/v2/searchArtistV2?key=<text>&start=0&count=100` |
|
||||
| По альбомам | `/ZidooMusicControl/v2/searchAlbumV2?key=<text>&start=0&count=100` |
|
||||
|
||||
#### Обложки и устройство
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Обложка по ID | `/ZidooMusicControl/v2/getImage?id=<song_id>&target=16` |
|
||||
| Модель устройства | `/ControlCenter/getModel` |
|
||||
|
||||
Источники:
|
||||
- Форум Zidoo: https://forum.zidoo.tv/index.php?threads/some-api.96983/
|
||||
- HA интеграция: https://github.com/hchris1/Eversolo/blob/main/custom_components/eversolo/api.py
|
||||
|
||||
---
|
||||
|
||||
### Инструкции
|
||||
|
||||
#### Инструкция: Подключение claw.a2v.space (OpenClaw)
|
||||
|
||||
**Архитектура:** Mac Studio (192.168.0.37:18789) → autossh SSH-туннель → VPS 95.163.232.9:8080 → nginx HTTPS → https://claw.a2v.space
|
||||
|
||||
**Шаги:**
|
||||
1. DNS: A-запись claw.a2v.space → 95.163.232.9 (ns1/ns2.hosting.reg.ru)
|
||||
2. Mac Studio: OpenClaw запущен на порту 18789, конфиг ~/.openclaw/openclaw.json
|
||||
3. SSH-туннель: launchd plist `~/Library/LaunchAgents/com.openclaw.sshtunnel.plist` с `-R 8080:localhost:18789`
|
||||
4. VPS nginx конфиг:
|
||||
- listen 80 → redirect to https
|
||||
- listen 443 ssl, cert `/etc/letsencrypt/live/claw.a2v.space/`
|
||||
- proxy_pass http://127.0.0.1:8080
|
||||
- proxy_set_header Host $host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto
|
||||
5. SSL: certbot certonly --nginx -d claw.a2v.space
|
||||
6. OpenClaw config: allowedOrigins ["https://claw.a2v.space"], trustedProxies
|
||||
|
||||
#### Инструкция: Подключение code.a2v.space (OpenCode)
|
||||
|
||||
**Порт:** 4096, pm2 процесс "opencode"
|
||||
**SSH-туннель:** `-R 8081:localhost:4096`
|
||||
**nginx:** proxy_pass http://127.0.0.1:8081
|
||||
**SSL:** /etc/letsencrypt/live/code.a2v.space/
|
||||
|
||||
#### Инструкция: Подключение sand.a2v.space (Leadera Project)
|
||||
|
||||
**Порты:** Frontend 4200 (Angular, pm2 leadera-fe), Backend 8080 (Go, pm2 leadera-api)
|
||||
**SSH-туннель:** `-R 8082:localhost:4200 -R 8083:localhost:8080`
|
||||
**nginx:** location / → proxy_pass :8082, location /api → proxy_pass :8083
|
||||
**SSL:** /etc/letsencrypt/live/sand.a2v.space/
|
||||
**БД:** PostgreSQL 16 в Docker (Colima), container app-leadera-db
|
||||
|
||||
#### Инструкция: Настройка VPS как реверс-прокси
|
||||
|
||||
Общая схема: Mac Studio (локальная сеть) → autossh (SSH-туннели) → VPS 95.163.232.9 (Debian) → nginx (HTTPS reverse proxy) → интернет
|
||||
|
||||
**Что нужно на VPS:**
|
||||
- nginx + certbot (Let's Encrypt)
|
||||
- SSH-доступ с ключами с Mac Studio
|
||||
- Для каждого домена: server block с SSL, proxy_pass на localhost-порт туннеля
|
||||
|
||||
**Что нужно на Mac Studio:**
|
||||
- autossh через launchd (com.openclaw.sshtunnel.plist)
|
||||
- Один plist с несколькими -R флагами для всех сервисов
|
||||
|
||||
---
|
||||
|
||||
### Креды (зашифровать!)
|
||||
|
||||
#### VPS reg.ru
|
||||
- **Сервис:** VPS хостинг (реверс-прокси)
|
||||
- **IP:** 95.163.232.9
|
||||
- **User:** root
|
||||
- **Auth:** SSH ключ
|
||||
|
||||
#### VPN VPS
|
||||
- **Сервис:** VPN сервер
|
||||
- **IP:** 185.234.64.52
|
||||
- **User:** root
|
||||
- **Password:** lO6kC9gY7r
|
||||
- **VPN:** Amnezia (xray порт 443, AWG порт 46002)
|
||||
|
||||
#### Mac Studio — leadera-api БД (локальная)
|
||||
- **Сервис:** PostgreSQL (Docker)
|
||||
- **Host:** localhost:5432
|
||||
- **User:** leadera
|
||||
- **Password:** popoloka16
|
||||
- **Database:** leadera
|
||||
|
||||
#### Mac Studio — leadera-api БД (docker-compose)
|
||||
- **Сервис:** PostgreSQL (docker-compose)
|
||||
- **Host:** localhost:5432
|
||||
- **User:** postgres
|
||||
- **Password:** password
|
||||
- **Database:** it_landscape
|
||||
|
||||
---
|
||||
|
||||
### Планы
|
||||
|
||||
#### Настроить интеграцию Ollama с OpenClaw
|
||||
- **Статус:** 🟡 Запланировано
|
||||
- **Дата:** TBD
|
||||
- **Контекст:** Добавлен qwen3.5:9b в openclaw.json, но модель не появилась в openclaw models list. Отложено по решению Антона.
|
||||
|
||||
#### Реализовать управление Eversolo из OpenClaw
|
||||
- **Статус:** 🟡 Запланировано
|
||||
- **Дата:** TBD
|
||||
- **Контекст:** API изучен, записан в TOOLS.md. Проблема: нет доступа к LAN из sandbox OpenClaw.
|
||||
|
||||
---
|
||||
|
||||
### Дневник — сегодня (29.03.2026)
|
||||
|
||||
- 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker
|
||||
- 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой
|
||||
- 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями
|
||||
- 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo
|
||||
|
||||
---
|
||||
|
||||
## Структура Hugo
|
||||
|
||||
```
|
||||
content/
|
||||
diary/
|
||||
2026-03-29.md
|
||||
kb/
|
||||
eversolo-api.md
|
||||
plans/
|
||||
ollama-openclaw.md
|
||||
eversolo-control.md
|
||||
guides/
|
||||
claw-a2v-space.md
|
||||
code-a2v-space.md
|
||||
sand-a2v-space.md
|
||||
vps-reverse-proxy.md
|
||||
creds/
|
||||
vps-reg-ru.md
|
||||
vpn-vps.md
|
||||
leadera-db-local.md
|
||||
leadera-db-docker.md
|
||||
```
|
||||
Reference in New Issue
Block a user