13 KiB
Проект: 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:
- При создании записи — JS-скрипт шифрует JSON с кредами мастер-паролем → сохраняет encrypted payload в Markdown
- При просмотре — кнопка "Расшифровать" → prompt для мастер-пароля → AES-GCM дешифровка → показать поля
- Использовать 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 |
Питание
| Действие | 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
Шаги:
- DNS: A-запись claw.a2v.space → 95.163.232.9 (ns1/ns2.hosting.reg.ru)
- Mac Studio: OpenClaw запущен на порту 18789, конфиг ~/.openclaw/openclaw.json
- SSH-туннель: launchd plist
~/Library/LaunchAgents/com.openclaw.sshtunnel.plistс-R 8080:localhost:18789 - 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
- SSL: certbot certonly --nginx -d claw.a2v.space
- 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