Files
docs.a2v.space/BRIEF.md
T
Агальцов Антон 690abf379c daily update 2026-03-29
2026-03-30 00:02:10 +03:00

13 KiB
Raw Blame History

Проект: 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

Питание

Действие 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

Источники:


Инструкции

Инструкция: Подключение 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