From b96c893f7de287baff607755cf61fb800d6442e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=B3=D0=B0=D0=BB=D1=8C=D1=86=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=BD?= Date: Tue, 31 Mar 2026 07:11:29 +0300 Subject: [PATCH] daily update 2026-03-30 --- content/diary/2026-03-30.md | 39 ++++++++++++++----------- public/diary/2026-03-29/index.html | 4 --- public/diary/2026-03-30/index.html | 43 ++++++++++++++-------------- public/diary/index.html | 6 ---- public/diary/index.json | 2 +- public/index.json | 2 +- public/sitemap.xml | 6 ++-- public/tags/index.html | 4 +-- public/tags/index.xml | 14 ++++----- public/tags/infrastructure/index.xml | 2 +- public/tags/leadera/index.xml | 2 +- public/tags/mtproxy/index.xml | 2 +- public/tags/ollama/index.xml | 2 +- public/tags/openclaw/index.html | 2 -- public/tags/openclaw/index.xml | 9 +----- public/tags/qwen/index.xml | 2 +- public/tags/tasktracker/index.xml | 2 +- public/tags/vikunja/index.xml | 2 +- 18 files changed, 65 insertions(+), 80 deletions(-) diff --git a/content/diary/2026-03-30.md b/content/diary/2026-03-30.md index eb0f5b2..f012e89 100644 --- a/content/diary/2026-03-30.md +++ b/content/diary/2026-03-30.md @@ -1,33 +1,38 @@ --- title: "30 марта 2026" date: 2026-03-30 -tags: ["vikunja", "leadera", "tasktracker", "ollama", "qwen", "mtproxy", "infrastructure", "openclaw"] +tags: ["vikunja", "leadera", "tasktracker", "ollama", "qwen", "mtproxy", "infrastructure"] --- ## Timeline -- **Утро/день** — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2) -- **День** — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3) -- **День** — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты -- **Вечер** — **Откатили** TaskTracker по просьбе Антона (`git checkout + git clean`): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition) -- **Вечер** — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено `openclaw models set ollama/qwen3.5:9b` + возврат default на `zai/glm-5.1` -- **Вечер** — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер `mtproxy`, порт 8443→443, секрет `9e40ae13999874305c87fd2777758188` -- **Вечер** — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через `openclaw devices approve` +- **Утро** — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima +- **День** — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera +- **День** — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail) +- **Вечер** — TaskTracker **откачён** по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился +- **Вечер** — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae… +- **Вечер** — Qwen 3.5:9b подключён к OpenClaw через `openclaw models set ollama/qwen3.5:9b`, доступен для cron/spawn задач +- **Вечер** — Антон подключился к claw.a2v.space с мобильного, устройство одобрено ## Vikunja - URL: http://192.168.0.37:8095 -- API token: `tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0` -- Проект Leadera: 27 задач из аудита +- Проект Leadera: ID=2 +- API token: `tk_635fb7ac…` +- 27 задач из аудита, приоритеты P0–P3 + +## Leadera TaskTracker + +- ТЗ: `leadera-tasktracker-spec.md` +- Реализация через sub-agents (GLM-5.1) +- **Откачено** — проекты возвращены к предыдущему коммиту ## MT Proxy -- Сервер: 185.234.64.52:8443 -- Секрет: `9e40ae13999874305c87fd2777758188` -- Ссылка: `tg://proxy?server=185.234.64.52&port=8443&secret=9e40ae13999874305c87fd2777758188` +- Сервер: 185.234.64.52, порт 8443 +- Docker контейнер: `mtproxy` -## Уроки +## Инфраструктура -- Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие -- OpenClaw требует «активации» моделей через CLI, не только конфиг -- Plane self-hosted commercial edition проблемный для локального запуска +- Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn +- Мобильное подключение к claw.a2v.space подтверждено diff --git a/public/diary/2026-03-29/index.html b/public/diary/2026-03-29/index.html index bcae174..1c37a92 100644 --- a/public/diary/2026-03-29/index.html +++ b/public/diary/2026-03-29/index.html @@ -103,8 +103,6 @@ - - @@ -145,8 +143,6 @@ - - diff --git a/public/diary/2026-03-30/index.html b/public/diary/2026-03-30/index.html index 63b3f50..56f3eb4 100644 --- a/public/diary/2026-03-30/index.html +++ b/public/diary/2026-03-30/index.html @@ -103,8 +103,6 @@ - - @@ -145,8 +143,6 @@ - - @@ -180,31 +176,36 @@

Timeline

Vikunja

+

Leadera TaskTracker

+

MT Proxy

-

Уроки

+

Инфраструктура

@@ -225,8 +226,6 @@ infrastructure - openclaw - diff --git a/public/diary/index.html b/public/diary/index.html index 9f55676..15c81bc 100644 --- a/public/diary/index.html +++ b/public/diary/index.html @@ -103,8 +103,6 @@ - - @@ -145,8 +143,6 @@ - - @@ -200,8 +196,6 @@ infrastructure - openclaw - diff --git a/public/diary/index.json b/public/diary/index.json index 3328353..5c968ac 100644 --- a/public/diary/index.json +++ b/public/diary/index.json @@ -1 +1 @@ -[{"content":"Timeline Утро/день — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2) День — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3) День — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты Вечер — Откатили TaskTracker по просьбе Антона (git checkout + git clean): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition) Вечер — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено openclaw models set ollama/qwen3.5:9b + возврат default на zai/glm-5.1 Вечер — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер mtproxy, порт 8443→443, секрет 9e40ae13999874305c87fd2777758188 Вечер — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через openclaw devices approve Vikunja URL: http://192.168.0.37:8095 API token: tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0 Проект Leadera: 27 задач из аудита MT Proxy Сервер: 185.234.64.52:8443 Секрет: 9e40ae13999874305c87fd2777758188 Ссылка: tg://proxy?server=185.234.64.52\u0026amp;port=8443\u0026amp;secret=9e40ae13999874305c87fd2777758188 Уроки Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие OpenClaw требует «активации» моделей через CLI, не только конфиг Plane self-hosted commercial edition проблемный для локального запуска ","section":"diary","tags":["vikunja","leadera","tasktracker","ollama","qwen","mtproxy","infrastructure","openclaw"],"title":"30 марта 2026","url":"/diary/2026-03-30/"},{"content":"Timeline 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo 21:44 — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md) 22:15 — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space) 22:31 — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!) 22:47 — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации 23:02 — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК 23:18 — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.) 23:45 — Переписали TOOLS.md как полный справочник по инфраструктуре Eversolo Companion — статус проекта Backend (Go + Gin):\nРепозиторий: ~/Projects/eversolo-companion Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17):\nСостояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов Dev server: pm2 (eversolo-fe), порт 8096 Инфраструктура:\nPostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Проблема: нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)\nРешение: настройка tools.elevated.allowFrom.webchat или запуск через launchd Следующие шаги: после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)\n","section":"diary","tags":["angular","go","docker","eversolo","hugo","docs","identity","infrastructure","companion"],"title":"29 марта 2026","url":"/diary/2026-03-29/"}] \ No newline at end of file +[{"content":"Timeline Утро — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima День — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera День — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail) Вечер — TaskTracker откачён по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился Вечер — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae… Вечер — Qwen 3.5:9b подключён к OpenClaw через openclaw models set ollama/qwen3.5:9b, доступен для cron/spawn задач Вечер — Антон подключился к claw.a2v.space с мобильного, устройство одобрено Vikunja URL: http://192.168.0.37:8095 Проект Leadera: ID=2 API token: tk_635fb7ac… 27 задач из аудита, приоритеты P0–P3 Leadera TaskTracker ТЗ: leadera-tasktracker-spec.md Реализация через sub-agents (GLM-5.1) Откачено — проекты возвращены к предыдущему коммиту MT Proxy Сервер: 185.234.64.52, порт 8443 Docker контейнер: mtproxy Инфраструктура Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn Мобильное подключение к claw.a2v.space подтверждено ","section":"diary","tags":["vikunja","leadera","tasktracker","ollama","qwen","mtproxy","infrastructure"],"title":"30 марта 2026","url":"/diary/2026-03-30/"},{"content":"Timeline 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo 21:44 — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md) 22:15 — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space) 22:31 — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!) 22:47 — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации 23:02 — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК 23:18 — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.) 23:45 — Переписали TOOLS.md как полный справочник по инфраструктуре Eversolo Companion — статус проекта Backend (Go + Gin):\nРепозиторий: ~/Projects/eversolo-companion Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17):\nСостояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов Dev server: pm2 (eversolo-fe), порт 8096 Инфраструктура:\nPostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Проблема: нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)\nРешение: настройка tools.elevated.allowFrom.webchat или запуск через launchd Следующие шаги: после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)\n","section":"diary","tags":["angular","go","docker","eversolo","hugo","docs","identity","infrastructure","companion"],"title":"29 марта 2026","url":"/diary/2026-03-29/"}] \ No newline at end of file diff --git a/public/index.json b/public/index.json index 18097f9..4764aa1 100644 --- a/public/index.json +++ b/public/index.json @@ -1 +1 @@ -[{"content":"Аудит проекта Leadera Дата: 30.03.2026\nВерсия: pre-production, миграции 1–5\n1. Обзор проекта Leadera — SaaS-система управления IT-ландшафтом с диаграммами Ганта.\nСтек Компонент Технологии Backend Go 1.21+, Gin, PostgreSQL 16, pgx/v5 + sqlx, JWT (HMAC-SHA256) Frontend Angular 21.1, Bootstrap 5, NgBootstrap, RxJS, Signals Инфраструктура Docker (Colima), pm2, nginx reverse proxy, VPS reg.ru Доменная модель User ──┬── Space (через space_members с role) │ └── GanttChart (принадлежит Space) ├── GanttSection └── GanttTask Роли: admin, editor, viewer — назначаются на уровне Space через таблицу space_members.\nЧто реализовано (endpoints) Auth (5): register, login, refresh, change-password, logout\nSpaces (9): CRUD + members CRUD\nGantt Charts (9): CRUD + archive + members (добавлен, но удалён в миграции 5)\nGantt Sections (5): CRUD + reorder\nGantt Tasks (4): CRUD\nИтого: ~32 endpoint\n2. Архитектура и качество кода 2.1. Backend — структура cmd/server/main.go — точка входа internal/ domain/ — модели (User, Space, GanttChart, etc.) dto/ — request/response DTO (auth, space, gantt) handlers/ — HTTP handlers (auth, space, gantt) middleware/ — auth, cors, space, gantt, role, logging, recovery repository/ — слой доступа к данным service/ — бизнес-логика config/ — конфигурация (.env) utils/ — jwt, password, response, validation migrations/ — SQL миграции (1-5) Оценка: ✅ Чистая layered архитектура. Разделение ответственности чёткое.\n2.2. Frontend — структура src/app/ core/auth/ — auth service, interceptor core/models/ — app.model, space.model core/services/ — space.service, space-storage.service pages/auth/ — sign-in, sign-up, reset-pw, etc. pages/gantt/ — компоненты, модалки, сервисы, модели pages/dashboards/ — spaces list, dashboard layouts/ — navbar, topbar, main-layout Оценка: ✅ Стандартная Angular-структура. Signals для state management.\n2.3. Проблемы кода # Проблема Критичность Описание C1 \\r в service-файлах Medium gantt_service.go, gantt_section_service.go содержат CRLF C2 main.go:238 — мёртвый код getUserHandler Low Неиспользуемая функция C3 Swagger не сгенерирован Medium Аннотации есть, но api/ директории нет C4 RegisterProtectedRoutes не вызывается в main.go Critical GET/PUT/DELETE /spaces/:id не зарегистрированы 3. Права доступа — главный вопрос 3.1. Текущая реализация Права назначаются исключительно через Space:\nТаблица space_members — связка user ↔ space с role (admin/editor/viewer) SpaceMiddleware.RequireSpace() — проверяет членство и записывает ContextSpaceRole в context RoleMiddleware.RequireMinRole() — проверяет иерархию ролей (admin \u0026gt; editor \u0026gt; viewer) Диаграммы Ганта НЕ имеют собственной системы ролей. Таблица gantt_chart_members была создана (миграция 4) и тут же удалена (миграция 5). Все проверки доступа к диаграммам идут через space membership.\n3.2. Как это работает Запрос → AuthMiddleware (JWT → userID) → SpaceMiddleware.RequireSpace() (проверяет space_members → ContextSpaceRole) → GanttMiddleware.RequireGanttChart() (проверяет chart.space_id == spaceID) → RoleMiddleware.RequireMinRole(\u0026#34;editor\u0026#34;) (проверяет ContextSpaceRole) Это правильно. Любой член Space с ролью editor+ может создавать/редактировать диаграммы. Viewers — только читать.\n3.3. 🔴 Критическая проблема: Frontend не соответствует Backend Frontend MembersModalComponent пытается управлять участниками диаграммы:\nganttService.addMember(chartId, dto) → /api/v1/spaces/{spaceId}/gantt-charts/{chartId}/members ganttService.updateMemberRole(chartId, userId, dto) → .../members/{userId} ganttService.removeMember(chartId, userId) → .../members/{userId} Backend GanttHandler.RegisterRoutes() НЕ регистрирует маршруты для members диаграмм. После удаления gantt_chart_members (миграция 5) эти endpoints не существуют.\nРезультат: модальное окно «Участники диаграммы» на фронтенде не работает — все вызовы вернут 404.\n3.4. 🔴 Проблема: Role fallback В role_middleware.go:28-31:\nrole := c.GetString(ContextSpaceRole) if role == \u0026#34;\u0026#34; { role = c.GetString(ContextRole) // fallback на глобальную роль User } Если ContextSpaceRole не установлен, используется глобальная роль пользователя (из JWT). Это значит:\nПользователь с role=admin в таблице users получит admin-доступ к любому space, даже если он не член этого space Но SpaceMiddleware проверяет членство раньше, так что в цепочке RequireSpace() → RequireMinRole() это не эксплуатируется Однако если RequireMinRole() используется без RequireSpace() — это дыра Рекомендация: Удалить fallback на ContextRole. Если ContextSpaceRole пуст — отказывать.\n3.5. Рекомендации по правам доступа Удалить модалку участников диаграммы на фронтенде — она мертва Или добавить раздел «Участники Space» с возможностью управления ролями через /spaces/:space_id/members (эти endpoints работают) Удалить fallback на ContextRole в role_middleware.go Добавить проверку: editor не может повысить кого-то до admin (сейчас может — AddMember разрешает editor+ назначать любую роль) 4. Безопасность 4.1. Критические # Проблема Файл Описание S1 JWT Secret = test .env JWT_SECRET=test_secret_key_change_in_production — это прод-конфиг! S2 CORS: * .env CORS_ALLOWED_ORIGINS=* — любой домен может обращаться к API S3 Пароль БД в .env .env DB_PASSWORD=popoloka16 — creds в открытом виде S4 Refresh tokens: SHA256 utils/password.go SHA256 вместо bcrypt для refresh token hash — быстро брутфорсится 4.2. Высокие # Проблема Описание S5 Нет rate limiting Brute-force на /auth/login без ограничений S6 Нет CSRF protection API принимает POST/PUT/DELETE без CSRF-токена S7 Нет CSP заголовков X-Frame-Options, Content-Security-Policy не настроены S8 JWT в localStorage XSS может украсть access + refresh tokens 4.3. Средние # Проблема Описание S9 Нет password policy Минимальные требования к паролю не enforced S10 Нет audit log Действия с spaces/charts не логируются для аудита S11 Нет блокировки аккаунта Неограниченные попытки входа 5. Инфраструктура 5.1. Текущее состояние Компонент Статус Примечание Go API (pm2: leadera-api) ⚠️ Порт 8080, хост 0.0.0.0 Angular FE (pm2: leadera-fe) ⚠️ Порт 4200, хост 0.0.0.0 PostgreSQL (Docker) ✅ Порт 5432, контейнер app-leadera-db VPS reverse proxy ⚠️ sand.a2v.space → 8082/8083, но 502 если сервисы не запущены SSL ✅ Let\u0026rsquo;s Encrypt на VPS 5.2. Проблемы # Проблема Описание I1 Docker для БД, нативно для API Несогласованность — API и FE не в Docker I2 Нет health-check в pm2 API может упасть без перезапуска I3 Нет CI/CD Ручной деплой через make run + pm2 I4 Нет nginx на Mac Studio FE и API торчат наружу напрямую 6. Функциональная оценка 6.1. Что работает Функция Backend Frontend Статус Регистрация/логин ✅ ✅ Работает JWT auth + refresh ✅ ✅ Работает Spaces CRUD ⚠️ ✅ RegisterProtectedRoutes не вызван (C4) Space members ✅ ✅ Работает Gantt charts CRUD ✅ ✅ Работает Gantt sections ✅ ✅ Работает Gantt tasks ✅ ⚠️ Нет UI для задач внутри диаграммы Архивация диаграмм ✅ ✅ Работает Members диаграммы ❌ ✅ (мёртвый UI) Backend endpoints не существуют 6.2. Что НЕ работает или отсутствует Функция Статус Визуализация Ганта (таймлайн) ❌ Нет компонента отрисовки Drag \u0026amp; Drop задач ❌ Real-time collaboration ❌ Уведомления ❌ Поиск ❌ Экспорт (PDF/Excel) ❌ Email verification ❌ Password reset Backend есть, UI есть — не проверено 6.3. Оценка готовности Система на стадии каркаса. Backend API функционален для CRUD операций, но:\nВизуализация Ганта — основная фича — не реализована (нет canvas/SVG рендеринга) Управление участниками только на уровне Space Нет CI/CD, тестов, мониторинга 7. Приоритизированный план исправлений Неделя 1 — Критическое (безопасность) Приоритет Задача Трудоёмкость P0 Заменить JWT secret на криптостойкий 1 час P0 Настроить CORS (только sand.a2v.space) 1 час P0 bcrypt для refresh tokens вместо SHA256 2 часа P0 Удалить fallback на ContextRole в role_middleware 30 мин P0 Исправить RegisterProtectedRoutes — зарегистрировать маршруты 1 час P1 Rate limiting на auth endpoints 4 часа P1 Editor не может назначать admin роль 2 часа Неделя 2 — Архитектура прав Приоритет Задача Трудоёмкость P1 Удалить/переписать MembersModalComponent → Space members 4 часа P1 Добавить страницу управления участниками Space 8 часов P2 HttpOnly cookies для JWT (вместо localStorage) 8 часов P2 CSRF protection 4 часа Неделя 3 — Функциональность Приоритет Задача Трудоёмкость P2 Визуализация Ганта (canvas/d3) 40+ часов P2 Drag \u0026amp; Drop для задач 16 часов P3 Тесты (unit + integration) 24 часа P3 CI/CD pipeline 8 часов 8. Резюме Ключевые выводы Права доступа — архитектурно верно: роль назначается через Space, не через диаграмму. Но фронтенд ещё не обновлён после удаления gantt_chart_members. Безопасность — критические уязвимости в конфигурации (JWT secret, CORS, bcrypt). Требуют немедленного исправления до любого публичного деплоя. Функциональность — CRUD работает, но основная ценность (визуализация Ганта) не реализована. Код — чистый, хорошая архитектура, но есть мёртвый код и незарегистрированные маршруты. Общая оценка: 🔴 Pre-alpha Проект готов к внутренней демонстрации CRUD, но не готов к продакшену. Первоочередное — безопасность и исправление мёртвых endpoints.\n","section":"guides","tags":["audit","leadera","security","architecture"],"title":"Аудит Leadera — полный отчёт","url":"/guides/leadera-audit/"},{"content":"Timeline Утро/день — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2) День — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3) День — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты Вечер — Откатили TaskTracker по просьбе Антона (git checkout + git clean): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition) Вечер — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено openclaw models set ollama/qwen3.5:9b + возврат default на zai/glm-5.1 Вечер — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер mtproxy, порт 8443→443, секрет 9e40ae13999874305c87fd2777758188 Вечер — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через openclaw devices approve Vikunja URL: http://192.168.0.37:8095 API token: tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0 Проект Leadera: 27 задач из аудита MT Proxy Сервер: 185.234.64.52:8443 Секрет: 9e40ae13999874305c87fd2777758188 Ссылка: tg://proxy?server=185.234.64.52\u0026amp;port=8443\u0026amp;secret=9e40ae13999874305c87fd2777758188 Уроки Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие OpenClaw требует «активации» моделей через CLI, не только конфиг Plane self-hosted commercial edition проблемный для локального запуска ","section":"diary","tags":["vikunja","leadera","tasktracker","ollama","qwen","mtproxy","infrastructure","openclaw"],"title":"30 марта 2026","url":"/diary/2026-03-30/"},{"content":"Timeline 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo 21:44 — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md) 22:15 — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space) 22:31 — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!) 22:47 — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации 23:02 — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК 23:18 — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.) 23:45 — Переписали TOOLS.md как полный справочник по инфраструктуре Eversolo Companion — статус проекта Backend (Go + Gin):\nРепозиторий: ~/Projects/eversolo-companion Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17):\nСостояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов Dev server: pm2 (eversolo-fe), порт 8096 Инфраструктура:\nPostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Проблема: нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)\nРешение: настройка tools.elevated.allowFrom.webchat или запуск через launchd Следующие шаги: после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)\n","section":"diary","tags":["angular","go","docker","eversolo","hugo","docs","identity","infrastructure","companion"],"title":"29 марта 2026","url":"/diary/2026-03-29/"},{"content":"Basic Authentication Username: agaltsovav Password: Magamet787! Конфигурация Nginx server { listen 8091; server_name docs.a2v.space; auth_basic \u0026#34;Restricted Access\u0026#34;; auth_basic_user_file /etc/nginx/.htpasswd; } Доступ URL: https://docs.a2v.space (через reverse proxy) Local: http://localhost:8091 (для разработки) Auth: всегда требуется Мастер-пароль для шифрования Важно: Пароль для расшифровки файлов в разделе creds/\nMaster Password: Popoloka16! Шифрование Алгоритм: AES-256-GCM Хранилище: client-side encryption Файлы шифруются при сохранении Расшифровываются при чтении ","section":"creds","tags":["docs","authentication","nginx"],"title":"docs.a2v.space Basic Auth","url":"/creds/docs-a2v-space-auth/"},{"content":"Docker Compose креды (~/Projects/eversolo-companion/docker-compose.yml) services: postgres: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: eversolo Локальные креды (.env файл) POSTGRES_USER=postgres POSTGRES_PASSWORD=password POSTGRES_DB=eversolo Хостинг Host: localhost Port: 5433 Database: eversolo Безопасность Используйте разные пароли для production Включите SSL для удаленного подключения Регулярно делайте бэкапы ","section":"creds","tags":["eversolo","companion","postgresql","docker"],"title":"Eversolo Companion PostgreSQL","url":"/creds/eversolo-companion-postgres/"},{"content":"Eversolo T8 — музыкальный стример.\nIP: 192.168.0.156 Порт: 9529 Авторизация: нет\nБазовый URL: http://192.168.0.156:9529\nВоспроизведение Действие URL Play/Pause /ZidooMusicControl/v2/playOrPause Следующий трек /ZidooMusicControl/v2/playNext Предыдущий трек /ZidooMusicControl/v2/playLast Перемотка (ms) /ZidooMusicControl/v2/seekTo?time=\u0026lt;ms\u0026gt; Воспроизвести по ID /ZidooMusicControl/v2/playMusic?type=4\u0026amp;id=\u0026lt;id\u0026gt; Состояние /ZidooMusicControl/v2/getState Громкость Действие URL Громкость вверх /ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp Громкость вниз /ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown Точная громкость /ZidooMusicControl/v2/setDevicesVolume?volume=\u0026lt;0-200\u0026gt; Mute /ZidooMusicControl/v2/setMuteVolume?isMute=1 Unmute /ZidooMusicControl/v2/setMuteVolume?isMute=0 Входы/Выходы Действие URL Получить список /ZidooMusicControl/v2/getInputAndOutputList Установить вход /ZidooMusicControl/v2/setInputList?tag=\u0026lt;tag\u0026gt;\u0026amp;index=\u0026lt;n\u0026gt; Установить выход /ZidooMusicControl/v2/setOutInputList?tag=\u0026lt;tag\u0026gt;\u0026amp;index=\u0026lt;n\u0026gt; Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB\nДисплей Действие URL Яркость экрана (get) /SystemSettings/displaySettings/getScreenBrightness Яркость экрана (set) /SystemSettings/displaySettings/setScreenBrightness?index=\u0026lt;0-115\u0026gt; Яркость ручки (get) /SystemSettings/displaySettings/getKnobBrightness Яркость ручки (set) /SystemSettings/displaySettings/setKnobBrightness?index=\u0026lt;0-255\u0026gt; VU-режим (get) /SystemSettings/displaySettings/getVUModeList VU-режим (set) /SystemSettings/displaySettings/setVUMode?index=\u0026lt;n\u0026gt; Спектр (get) /SystemSettings/displaySettings/getSpPlayModeList Спектр (set) /SystemSettings/displaySettings/setSpPlayModeList?index=\u0026lt;n\u0026gt; Переключить VU/Спектр `/ZidooMusicControl/v2/changVUDisplay?openType=\u0026lt;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=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 По артистам /ZidooMusicControl/v2/searchArtistV2?key=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 По альбомам /ZidooMusicControl/v2/searchAlbumV2?key=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 Обложки и устройство Действие URL Обложка по ID /ZidooMusicControl/v2/getImage?id=\u0026lt;song_id\u0026gt;\u0026amp;target=16 Модель устройства /ControlCenter/getModel Источники Zidoo Forum Home Assistant Integration ","section":"kb","tags":["api","eversolo","music","streamer"],"title":"Eversolo T8 API","url":"/kb/eversolo-api/"},{"content":"\nNYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD\n\n\n","section":"creds","tags":["postgresql","docker-compose","leadera","database"],"title":"Mac Studio — leadera-api БД (docker-compose)","url":"/creds/leadera-db-docker/"},{"content":"\np7Iw7Y3zbj1kLBcbOXGoO27oDwF85AhxBW7saT538hxi0ogJpyFeM49GDuLHzxuyknvdNC/rx3tb4AFnGkCeHSrrCmj+VK8Zxt7ujeujVJSRuOeeUlsqkHdlmaiXl2KQknrIsqVCi3Tnn0V5qcFxvo+1Ktc+surF6bBpWrTHzWV5mLtWVfD6C6kvvP/UFldFBD6v+FQs79yfoOe/j/bUrtpt6v5VndbbBmhUAQcy1BV2rpXxO373dTcLQ6coRWkt/RFo\n\n\n","section":"creds","tags":["postgresql","docker","leadera","database"],"title":"Mac Studio — leadera-api БД (локальная)","url":"/creds/leadera-db-local/"},{"content":"Настройка SSH туннелей VPS reg.ru (95.163.232.9) # На Mac Studio: создать туннель для каждого сервиса ssh -N -R 8080:localhost:8080 root@95.163.232.9 # leadera-api ssh -N -R 8081:localhost:4096 root@95.163.232.9 # opencode ssh -N -R 8082:localhost:4200 root@95.163.232.9 # leadera-fe ssh -N -R 8083:localhost:8080 root@95.163.232.9 # docs-a2v Настройка launchd plist Файл: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\n\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;!DOCTYPE plist PUBLIC \u0026#34;-//Apple//DTD PLIST 1.0//EN\u0026#34; \u0026#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd\u0026#34;\u0026gt; \u0026lt;plist version=\u0026#34;1.0\u0026#34;\u0026gt; \u0026lt;dict\u0026gt; \u0026lt;key\u0026gt;Label\u0026lt;/key\u0026gt; \u0026lt;string\u0026gt;com.openclaw.sshtunnel\u0026lt;/string\u0026gt; \u0026lt;key\u0026gt;ProgramArguments\u0026lt;/key\u0026gt; \u0026lt;array\u0026gt; \u0026lt;string\u0026gt;ssh\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-N\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8080:localhost:8080\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;root@95.163.232.9\u0026lt;/string\u0026gt; \u0026lt;/array\u0026gt; \u0026lt;key\u0026gt;RunAtLoad\u0026lt;/key\u0026gt; \u0026lt;true/\u0026gt; \u0026lt;key\u0026gt;KeepAlive\u0026lt;/key\u0026gt; \u0026lt;true/\u0026gt; \u0026lt;/dict\u0026gt; \u0026lt;/plist\u0026gt; Автозапуск # Загрузить plist launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist # Проверить статус launchctl list | grep sshtunnel # Удалить (при необходимости) launchctl unload ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist Доступ к сервисам Через reverse proxy на VPS:\ncode.a2v.space: порт 8080 → Mac Studio:4096 claw.a2v.space: порт 8081 → Mac Studio:8080 (leadera-api) sand.a2v.space: порт 8082 → Mac Studio:4200 (leadera-fe) docs.a2v.space: порт 8083 → Mac Studio:8080 (docs-a2v) SSL Все сервисы используют Let\u0026rsquo;s Encrypt сертификаты:\nПуть: /etc/letsencrypt/live/{claw,code,sand}.a2v.space/ Автопродление через certbot ","section":"guides","tags":["ssh","tunnel","vps","reverse-proxy"],"title":"SSH туннели для VPS reverse proxy","url":"/guides/ssh-tunnels-vps/"},{"content":"\nYEI16NAJ78d3lmSa/lca8Zxczt+u6GyMUYHduX47VoFQdj0Ixozd8R6yXoB7eM+AjhCtNGkOxGlOj2s73ABOBjLEIVIhD4Z+xTyzdtah4VpyLoltYOeNYsnbIIFARdF/FBYq5COXohhXs33K5ozznrtDd/awbKMjl/sbQqjXAZ+A3ZSob6/5uU+fFKetXLR6v4ZLAYQ57iiD21ImSLSggwv+rJgK5XyPDKEPD4N5nOsiDrLgoukVBMvgJ54PqfPp2Hni+2tdKOlMnOG2npTuu4SkyALcfFar\n\n\n","section":"creds","tags":["vpn","amnezia","infrastructure"],"title":"VPN VPS","url":"/creds/vpn-vps/"},{"content":"\nIpYXLMtgCFlGQ550DZCLjq37VsnNqL08Rn03iRS7kQ7ozBZNsiZySFzDAvYh4xIHytRDy0Sz0KGUXekr0S+cNiJsmtZ8kj0Pd0JhevhxTMZF2khFvs/LFWoTL5ZwAJ34y/qfLw2gaWX90VZDu0wO+KeAQeXhrWmol/2zUlfWX1AihyYqD2vRz+h2FcjD8ubYOXG35PyX7OlV1HPXgDv5X/bFNrxzPc867UOwB4aGxY9a\n\n\n","section":"creds","tags":["vps","reg.ru","infrastructure"],"title":"VPS reg.ru","url":"/creds/vps-reg-ru/"},{"content":"Описание Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.\nЧто сделано Backend (Go + Gin): собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17): собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов PostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Спецификация: полная в ~/Projects/eversolo-companion/SPEC.md Проблема API не может достучаться до Eversolo T8 (192.168.0.156:9529) из-за ограничений OpenClaw sandbox.\nВозможные решения Настроить tools.elevated.allowFrom.webchat для разрешения сетевых соединений Запустить API через launchd plist (как SSH туннели) Использовать отдельный контейнер без ограничений Этапы 3-9 (после решения сети) Библиотека синхронизации — двухсторонний sync с Eversolo Плейлисты — импорт/экспорт, редактирование Scrobbler — Last.fm / ListenBrainz Обложки — кэширование, отображение в UI Плеер — улучшенный интерфейс управления Система уведомлений — события от Eversolo Администрирование — настройка подключений Связанные ресурсы Спецификация проекта API документация Дневник разработки ","section":"plans","tags":["eversolo","companion","angular","go","docker"],"title":"Завершить Eversolo Companion - этапы 3-9","url":"/plans/eversolo-companion-phases-3-9/"},{"content":"Описание Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.\nПроблема Модель qwen3.5:9b добавлена в конфиг openclaw.json, но не отображается в openclaw models list.\nСтатус Отложено по решению Антона.\n","section":"plans","tags":["ollama","openclaw","llm"],"title":"Настроить интеграцию Ollama с OpenClaw","url":"/plans/ollama-openclaw/"},{"content":"Общая схема Mac Studio (локальная сеть) → autossh (SSH-туннели) → VPS 95.163.232.9 (Debian) → nginx (HTTPS reverse proxy) → интернет Что нужно на VPS 1. Установленные пакеты apt update apt install nginx certbot python3-certbot-nginx 2. SSH-доступ Авторизация только по ключам Публичный ключ с Mac Studio добавлен в /root/.ssh/authorized_keys 3. nginx Для каждого домена создать server block:\nHTTP → редирект на HTTPS HTTPS с SSL-сертификатом Let\u0026rsquo;s Encrypt proxy_pass на localhost-порт туннеля Пример структуры:\n/etc/nginx/sites-available/ claw.a2v.space.conf code.a2v.space.conf sand.a2v.space.conf 4. SSL-сертификаты certbot certonly --nginx -d \u0026lt;domain\u0026gt; certbot renew --dry-run # проверить автообновление Что нужно на Mac Studio autossh через launchd Plist: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\nОдин plist с несколькими -R флагами:\n\u0026lt;key\u0026gt;ProgramArguments\u0026lt;/key\u0026gt; \u0026lt;array\u0026gt; \u0026lt;string\u0026gt;/usr/local/bin/autossh\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-M\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;0\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8080:localhost:18789\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8081:localhost:4096\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8082:localhost:4200\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8083:localhost:8080\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;root@95.163.232.9\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-N\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-i\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;/Users/\u0026lt;user\u0026gt;/.ssh/id_rsa\u0026lt;/string\u0026gt; \u0026lt;/array\u0026gt; Управление launchd launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist launchctl start com.openclaw.sshtunnel launchctl stop com.openclaw.sshtunnel Проверка # На VPS ss -tlnp | grep -E \u0026#39;808[0-3]\u0026#39; # Снаружи curl -I https://claw.a2v.space curl -I https://code.a2v.space curl -I https://sand.a2v.space ","section":"guides","tags":["vps","nginx","ssh","reverse-proxy","devops"],"title":"Настройка VPS как реверс-прокси","url":"/guides/vps-reverse-proxy/"},{"content":"Архитектура 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\nNS-серверы: ns1.hosting.reg.ru, ns2.hosting.reg.ru\n2. Mac Studio — OpenClaw Порт: 18789 Конфиг: ~/.openclaw/openclaw.json 3. SSH-туннель (launchd) Plist: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\nКлючевой флаг: -R 8080:localhost:18789\n4. VPS — nginx конфиг server { listen 80; server_name claw.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name claw.a2v.space; ssl_certificate /etc/letsencrypt/live/claw.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/claw.a2v.space/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 5. SSL-сертификат certbot certonly --nginx -d claw.a2v.space 6. OpenClaw config { \u0026#34;allowedOrigins\u0026#34;: [\u0026#34;https://claw.a2v.space\u0026#34;], \u0026#34;trustedProxies\u0026#34;: [\u0026#34;127.0.0.1\u0026#34;] } ","section":"guides","tags":["openclaw","ssh","nginx","vps","reverse-proxy"],"title":"Подключение claw.a2v.space (OpenClaw)","url":"/guides/claw-a2v-space/"},{"content":"Архитектура Mac Studio (localhost:4096) → autossh SSH-туннель (-R 8081:localhost:4096) → VPS 95.163.232.9:8081 → nginx HTTPS → https://code.a2v.space Параметры Параметр Значение Локальный порт 4096 Туннель порт 8081 pm2 процесс opencode SSL сертификат /etc/letsencrypt/live/code.a2v.space/ nginx конфиг server { listen 80; server_name code.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name code.a2v.space; ssl_certificate /etc/letsencrypt/live/code.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/code.a2v.space/privkey.pem; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \u0026#34;upgrade\u0026#34;; } } SSL-сертификат certbot certonly --nginx -d code.a2v.space ","section":"guides","tags":["opencode","ssh","nginx","vps","reverse-proxy"],"title":"Подключение code.a2v.space (OpenCode)","url":"/guides/code-a2v-space/"},{"content":"Архитектура Mac Studio ├─ Frontend (Angular) :4200 (pm2: leadera-fe) ├─ Backend (Go) :8080 (pm2: leadera-api) └─ PostgreSQL 16 в Docker (Colima, container: app-leadera-db) → autossh SSH-туннель (-R 8082:localhost:4200 -R 8083:localhost:8080) → VPS 95.163.232.9 → nginx HTTPS → https://sand.a2v.space Параметры Компонент Локальный порт Туннель порт pm2 имя Frontend (Angular) 4200 8082 leadera-fe Backend (Go) 8080 8083 leadera-api SSL сертификат: /etc/letsencrypt/live/sand.a2v.space/\nnginx конфиг server { listen 80; server_name sand.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name sand.a2v.space; ssl_certificate /etc/letsencrypt/live/sand.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sand.a2v.space/privkey.pem; location /api { proxy_pass http://127.0.0.1:8083; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location / { proxy_pass http://127.0.0.1:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } База данных PostgreSQL 16 в Docker через Colima:\nContainer: app-leadera-db Port: 5432 SSL-сертификат certbot certonly --nginx -d sand.a2v.space ","section":"guides","tags":["angular","go","docker","nginx","vps","reverse-proxy"],"title":"Подключение sand.a2v.space (Leadera Project)","url":"/guides/sand-a2v-space/"},{"content":"Описание Добавить инструменты управления Eversolo T8 в OpenClaw.\nЧто сделано Изучен полный API Eversolo T8 (см. Базу знаний) Проблема Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.\nВозможные решения Настроить проброс портов Запустить OpenClaw без sandbox-ограничений Использовать промежуточный proxy-сервис ","section":"plans","tags":["eversolo","openclaw","api"],"title":"Реализовать управление Eversolo из OpenClaw","url":"/plans/eversolo-control/"}] \ No newline at end of file +[{"content":"Аудит проекта Leadera Дата: 30.03.2026\nВерсия: pre-production, миграции 1–5\n1. Обзор проекта Leadera — SaaS-система управления IT-ландшафтом с диаграммами Ганта.\nСтек Компонент Технологии Backend Go 1.21+, Gin, PostgreSQL 16, pgx/v5 + sqlx, JWT (HMAC-SHA256) Frontend Angular 21.1, Bootstrap 5, NgBootstrap, RxJS, Signals Инфраструктура Docker (Colima), pm2, nginx reverse proxy, VPS reg.ru Доменная модель User ──┬── Space (через space_members с role) │ └── GanttChart (принадлежит Space) ├── GanttSection └── GanttTask Роли: admin, editor, viewer — назначаются на уровне Space через таблицу space_members.\nЧто реализовано (endpoints) Auth (5): register, login, refresh, change-password, logout\nSpaces (9): CRUD + members CRUD\nGantt Charts (9): CRUD + archive + members (добавлен, но удалён в миграции 5)\nGantt Sections (5): CRUD + reorder\nGantt Tasks (4): CRUD\nИтого: ~32 endpoint\n2. Архитектура и качество кода 2.1. Backend — структура cmd/server/main.go — точка входа internal/ domain/ — модели (User, Space, GanttChart, etc.) dto/ — request/response DTO (auth, space, gantt) handlers/ — HTTP handlers (auth, space, gantt) middleware/ — auth, cors, space, gantt, role, logging, recovery repository/ — слой доступа к данным service/ — бизнес-логика config/ — конфигурация (.env) utils/ — jwt, password, response, validation migrations/ — SQL миграции (1-5) Оценка: ✅ Чистая layered архитектура. Разделение ответственности чёткое.\n2.2. Frontend — структура src/app/ core/auth/ — auth service, interceptor core/models/ — app.model, space.model core/services/ — space.service, space-storage.service pages/auth/ — sign-in, sign-up, reset-pw, etc. pages/gantt/ — компоненты, модалки, сервисы, модели pages/dashboards/ — spaces list, dashboard layouts/ — navbar, topbar, main-layout Оценка: ✅ Стандартная Angular-структура. Signals для state management.\n2.3. Проблемы кода # Проблема Критичность Описание C1 \\r в service-файлах Medium gantt_service.go, gantt_section_service.go содержат CRLF C2 main.go:238 — мёртвый код getUserHandler Low Неиспользуемая функция C3 Swagger не сгенерирован Medium Аннотации есть, но api/ директории нет C4 RegisterProtectedRoutes не вызывается в main.go Critical GET/PUT/DELETE /spaces/:id не зарегистрированы 3. Права доступа — главный вопрос 3.1. Текущая реализация Права назначаются исключительно через Space:\nТаблица space_members — связка user ↔ space с role (admin/editor/viewer) SpaceMiddleware.RequireSpace() — проверяет членство и записывает ContextSpaceRole в context RoleMiddleware.RequireMinRole() — проверяет иерархию ролей (admin \u0026gt; editor \u0026gt; viewer) Диаграммы Ганта НЕ имеют собственной системы ролей. Таблица gantt_chart_members была создана (миграция 4) и тут же удалена (миграция 5). Все проверки доступа к диаграммам идут через space membership.\n3.2. Как это работает Запрос → AuthMiddleware (JWT → userID) → SpaceMiddleware.RequireSpace() (проверяет space_members → ContextSpaceRole) → GanttMiddleware.RequireGanttChart() (проверяет chart.space_id == spaceID) → RoleMiddleware.RequireMinRole(\u0026#34;editor\u0026#34;) (проверяет ContextSpaceRole) Это правильно. Любой член Space с ролью editor+ может создавать/редактировать диаграммы. Viewers — только читать.\n3.3. 🔴 Критическая проблема: Frontend не соответствует Backend Frontend MembersModalComponent пытается управлять участниками диаграммы:\nganttService.addMember(chartId, dto) → /api/v1/spaces/{spaceId}/gantt-charts/{chartId}/members ganttService.updateMemberRole(chartId, userId, dto) → .../members/{userId} ganttService.removeMember(chartId, userId) → .../members/{userId} Backend GanttHandler.RegisterRoutes() НЕ регистрирует маршруты для members диаграмм. После удаления gantt_chart_members (миграция 5) эти endpoints не существуют.\nРезультат: модальное окно «Участники диаграммы» на фронтенде не работает — все вызовы вернут 404.\n3.4. 🔴 Проблема: Role fallback В role_middleware.go:28-31:\nrole := c.GetString(ContextSpaceRole) if role == \u0026#34;\u0026#34; { role = c.GetString(ContextRole) // fallback на глобальную роль User } Если ContextSpaceRole не установлен, используется глобальная роль пользователя (из JWT). Это значит:\nПользователь с role=admin в таблице users получит admin-доступ к любому space, даже если он не член этого space Но SpaceMiddleware проверяет членство раньше, так что в цепочке RequireSpace() → RequireMinRole() это не эксплуатируется Однако если RequireMinRole() используется без RequireSpace() — это дыра Рекомендация: Удалить fallback на ContextRole. Если ContextSpaceRole пуст — отказывать.\n3.5. Рекомендации по правам доступа Удалить модалку участников диаграммы на фронтенде — она мертва Или добавить раздел «Участники Space» с возможностью управления ролями через /spaces/:space_id/members (эти endpoints работают) Удалить fallback на ContextRole в role_middleware.go Добавить проверку: editor не может повысить кого-то до admin (сейчас может — AddMember разрешает editor+ назначать любую роль) 4. Безопасность 4.1. Критические # Проблема Файл Описание S1 JWT Secret = test .env JWT_SECRET=test_secret_key_change_in_production — это прод-конфиг! S2 CORS: * .env CORS_ALLOWED_ORIGINS=* — любой домен может обращаться к API S3 Пароль БД в .env .env DB_PASSWORD=popoloka16 — creds в открытом виде S4 Refresh tokens: SHA256 utils/password.go SHA256 вместо bcrypt для refresh token hash — быстро брутфорсится 4.2. Высокие # Проблема Описание S5 Нет rate limiting Brute-force на /auth/login без ограничений S6 Нет CSRF protection API принимает POST/PUT/DELETE без CSRF-токена S7 Нет CSP заголовков X-Frame-Options, Content-Security-Policy не настроены S8 JWT в localStorage XSS может украсть access + refresh tokens 4.3. Средние # Проблема Описание S9 Нет password policy Минимальные требования к паролю не enforced S10 Нет audit log Действия с spaces/charts не логируются для аудита S11 Нет блокировки аккаунта Неограниченные попытки входа 5. Инфраструктура 5.1. Текущее состояние Компонент Статус Примечание Go API (pm2: leadera-api) ⚠️ Порт 8080, хост 0.0.0.0 Angular FE (pm2: leadera-fe) ⚠️ Порт 4200, хост 0.0.0.0 PostgreSQL (Docker) ✅ Порт 5432, контейнер app-leadera-db VPS reverse proxy ⚠️ sand.a2v.space → 8082/8083, но 502 если сервисы не запущены SSL ✅ Let\u0026rsquo;s Encrypt на VPS 5.2. Проблемы # Проблема Описание I1 Docker для БД, нативно для API Несогласованность — API и FE не в Docker I2 Нет health-check в pm2 API может упасть без перезапуска I3 Нет CI/CD Ручной деплой через make run + pm2 I4 Нет nginx на Mac Studio FE и API торчат наружу напрямую 6. Функциональная оценка 6.1. Что работает Функция Backend Frontend Статус Регистрация/логин ✅ ✅ Работает JWT auth + refresh ✅ ✅ Работает Spaces CRUD ⚠️ ✅ RegisterProtectedRoutes не вызван (C4) Space members ✅ ✅ Работает Gantt charts CRUD ✅ ✅ Работает Gantt sections ✅ ✅ Работает Gantt tasks ✅ ⚠️ Нет UI для задач внутри диаграммы Архивация диаграмм ✅ ✅ Работает Members диаграммы ❌ ✅ (мёртвый UI) Backend endpoints не существуют 6.2. Что НЕ работает или отсутствует Функция Статус Визуализация Ганта (таймлайн) ❌ Нет компонента отрисовки Drag \u0026amp; Drop задач ❌ Real-time collaboration ❌ Уведомления ❌ Поиск ❌ Экспорт (PDF/Excel) ❌ Email verification ❌ Password reset Backend есть, UI есть — не проверено 6.3. Оценка готовности Система на стадии каркаса. Backend API функционален для CRUD операций, но:\nВизуализация Ганта — основная фича — не реализована (нет canvas/SVG рендеринга) Управление участниками только на уровне Space Нет CI/CD, тестов, мониторинга 7. Приоритизированный план исправлений Неделя 1 — Критическое (безопасность) Приоритет Задача Трудоёмкость P0 Заменить JWT secret на криптостойкий 1 час P0 Настроить CORS (только sand.a2v.space) 1 час P0 bcrypt для refresh tokens вместо SHA256 2 часа P0 Удалить fallback на ContextRole в role_middleware 30 мин P0 Исправить RegisterProtectedRoutes — зарегистрировать маршруты 1 час P1 Rate limiting на auth endpoints 4 часа P1 Editor не может назначать admin роль 2 часа Неделя 2 — Архитектура прав Приоритет Задача Трудоёмкость P1 Удалить/переписать MembersModalComponent → Space members 4 часа P1 Добавить страницу управления участниками Space 8 часов P2 HttpOnly cookies для JWT (вместо localStorage) 8 часов P2 CSRF protection 4 часа Неделя 3 — Функциональность Приоритет Задача Трудоёмкость P2 Визуализация Ганта (canvas/d3) 40+ часов P2 Drag \u0026amp; Drop для задач 16 часов P3 Тесты (unit + integration) 24 часа P3 CI/CD pipeline 8 часов 8. Резюме Ключевые выводы Права доступа — архитектурно верно: роль назначается через Space, не через диаграмму. Но фронтенд ещё не обновлён после удаления gantt_chart_members. Безопасность — критические уязвимости в конфигурации (JWT secret, CORS, bcrypt). Требуют немедленного исправления до любого публичного деплоя. Функциональность — CRUD работает, но основная ценность (визуализация Ганта) не реализована. Код — чистый, хорошая архитектура, но есть мёртвый код и незарегистрированные маршруты. Общая оценка: 🔴 Pre-alpha Проект готов к внутренней демонстрации CRUD, но не готов к продакшену. Первоочередное — безопасность и исправление мёртвых endpoints.\n","section":"guides","tags":["audit","leadera","security","architecture"],"title":"Аудит Leadera — полный отчёт","url":"/guides/leadera-audit/"},{"content":"Timeline Утро — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima День — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera День — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail) Вечер — TaskTracker откачён по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился Вечер — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae… Вечер — Qwen 3.5:9b подключён к OpenClaw через openclaw models set ollama/qwen3.5:9b, доступен для cron/spawn задач Вечер — Антон подключился к claw.a2v.space с мобильного, устройство одобрено Vikunja URL: http://192.168.0.37:8095 Проект Leadera: ID=2 API token: tk_635fb7ac… 27 задач из аудита, приоритеты P0–P3 Leadera TaskTracker ТЗ: leadera-tasktracker-spec.md Реализация через sub-agents (GLM-5.1) Откачено — проекты возвращены к предыдущему коммиту MT Proxy Сервер: 185.234.64.52, порт 8443 Docker контейнер: mtproxy Инфраструктура Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn Мобильное подключение к claw.a2v.space подтверждено ","section":"diary","tags":["vikunja","leadera","tasktracker","ollama","qwen","mtproxy","infrastructure"],"title":"30 марта 2026","url":"/diary/2026-03-30/"},{"content":"Timeline 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo 21:44 — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md) 22:15 — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space) 22:31 — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!) 22:47 — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации 23:02 — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК 23:18 — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.) 23:45 — Переписали TOOLS.md как полный справочник по инфраструктуре Eversolo Companion — статус проекта Backend (Go + Gin):\nРепозиторий: ~/Projects/eversolo-companion Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17):\nСостояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов Dev server: pm2 (eversolo-fe), порт 8096 Инфраструктура:\nPostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Проблема: нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)\nРешение: настройка tools.elevated.allowFrom.webchat или запуск через launchd Следующие шаги: после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)\n","section":"diary","tags":["angular","go","docker","eversolo","hugo","docs","identity","infrastructure","companion"],"title":"29 марта 2026","url":"/diary/2026-03-29/"},{"content":"Basic Authentication Username: agaltsovav Password: Magamet787! Конфигурация Nginx server { listen 8091; server_name docs.a2v.space; auth_basic \u0026#34;Restricted Access\u0026#34;; auth_basic_user_file /etc/nginx/.htpasswd; } Доступ URL: https://docs.a2v.space (через reverse proxy) Local: http://localhost:8091 (для разработки) Auth: всегда требуется Мастер-пароль для шифрования Важно: Пароль для расшифровки файлов в разделе creds/\nMaster Password: Popoloka16! Шифрование Алгоритм: AES-256-GCM Хранилище: client-side encryption Файлы шифруются при сохранении Расшифровываются при чтении ","section":"creds","tags":["docs","authentication","nginx"],"title":"docs.a2v.space Basic Auth","url":"/creds/docs-a2v-space-auth/"},{"content":"Docker Compose креды (~/Projects/eversolo-companion/docker-compose.yml) services: postgres: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: eversolo Локальные креды (.env файл) POSTGRES_USER=postgres POSTGRES_PASSWORD=password POSTGRES_DB=eversolo Хостинг Host: localhost Port: 5433 Database: eversolo Безопасность Используйте разные пароли для production Включите SSL для удаленного подключения Регулярно делайте бэкапы ","section":"creds","tags":["eversolo","companion","postgresql","docker"],"title":"Eversolo Companion PostgreSQL","url":"/creds/eversolo-companion-postgres/"},{"content":"Eversolo T8 — музыкальный стример.\nIP: 192.168.0.156 Порт: 9529 Авторизация: нет\nБазовый URL: http://192.168.0.156:9529\nВоспроизведение Действие URL Play/Pause /ZidooMusicControl/v2/playOrPause Следующий трек /ZidooMusicControl/v2/playNext Предыдущий трек /ZidooMusicControl/v2/playLast Перемотка (ms) /ZidooMusicControl/v2/seekTo?time=\u0026lt;ms\u0026gt; Воспроизвести по ID /ZidooMusicControl/v2/playMusic?type=4\u0026amp;id=\u0026lt;id\u0026gt; Состояние /ZidooMusicControl/v2/getState Громкость Действие URL Громкость вверх /ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp Громкость вниз /ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown Точная громкость /ZidooMusicControl/v2/setDevicesVolume?volume=\u0026lt;0-200\u0026gt; Mute /ZidooMusicControl/v2/setMuteVolume?isMute=1 Unmute /ZidooMusicControl/v2/setMuteVolume?isMute=0 Входы/Выходы Действие URL Получить список /ZidooMusicControl/v2/getInputAndOutputList Установить вход /ZidooMusicControl/v2/setInputList?tag=\u0026lt;tag\u0026gt;\u0026amp;index=\u0026lt;n\u0026gt; Установить выход /ZidooMusicControl/v2/setOutInputList?tag=\u0026lt;tag\u0026gt;\u0026amp;index=\u0026lt;n\u0026gt; Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB\nДисплей Действие URL Яркость экрана (get) /SystemSettings/displaySettings/getScreenBrightness Яркость экрана (set) /SystemSettings/displaySettings/setScreenBrightness?index=\u0026lt;0-115\u0026gt; Яркость ручки (get) /SystemSettings/displaySettings/getKnobBrightness Яркость ручки (set) /SystemSettings/displaySettings/setKnobBrightness?index=\u0026lt;0-255\u0026gt; VU-режим (get) /SystemSettings/displaySettings/getVUModeList VU-режим (set) /SystemSettings/displaySettings/setVUMode?index=\u0026lt;n\u0026gt; Спектр (get) /SystemSettings/displaySettings/getSpPlayModeList Спектр (set) /SystemSettings/displaySettings/setSpPlayModeList?index=\u0026lt;n\u0026gt; Переключить VU/Спектр `/ZidooMusicControl/v2/changVUDisplay?openType=\u0026lt;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=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 По артистам /ZidooMusicControl/v2/searchArtistV2?key=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 По альбомам /ZidooMusicControl/v2/searchAlbumV2?key=\u0026lt;text\u0026gt;\u0026amp;start=0\u0026amp;count=100 Обложки и устройство Действие URL Обложка по ID /ZidooMusicControl/v2/getImage?id=\u0026lt;song_id\u0026gt;\u0026amp;target=16 Модель устройства /ControlCenter/getModel Источники Zidoo Forum Home Assistant Integration ","section":"kb","tags":["api","eversolo","music","streamer"],"title":"Eversolo T8 API","url":"/kb/eversolo-api/"},{"content":"\nNYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD\n\n\n","section":"creds","tags":["postgresql","docker-compose","leadera","database"],"title":"Mac Studio — leadera-api БД (docker-compose)","url":"/creds/leadera-db-docker/"},{"content":"\np7Iw7Y3zbj1kLBcbOXGoO27oDwF85AhxBW7saT538hxi0ogJpyFeM49GDuLHzxuyknvdNC/rx3tb4AFnGkCeHSrrCmj+VK8Zxt7ujeujVJSRuOeeUlsqkHdlmaiXl2KQknrIsqVCi3Tnn0V5qcFxvo+1Ktc+surF6bBpWrTHzWV5mLtWVfD6C6kvvP/UFldFBD6v+FQs79yfoOe/j/bUrtpt6v5VndbbBmhUAQcy1BV2rpXxO373dTcLQ6coRWkt/RFo\n\n\n","section":"creds","tags":["postgresql","docker","leadera","database"],"title":"Mac Studio — leadera-api БД (локальная)","url":"/creds/leadera-db-local/"},{"content":"Настройка SSH туннелей VPS reg.ru (95.163.232.9) # На Mac Studio: создать туннель для каждого сервиса ssh -N -R 8080:localhost:8080 root@95.163.232.9 # leadera-api ssh -N -R 8081:localhost:4096 root@95.163.232.9 # opencode ssh -N -R 8082:localhost:4200 root@95.163.232.9 # leadera-fe ssh -N -R 8083:localhost:8080 root@95.163.232.9 # docs-a2v Настройка launchd plist Файл: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\n\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;!DOCTYPE plist PUBLIC \u0026#34;-//Apple//DTD PLIST 1.0//EN\u0026#34; \u0026#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd\u0026#34;\u0026gt; \u0026lt;plist version=\u0026#34;1.0\u0026#34;\u0026gt; \u0026lt;dict\u0026gt; \u0026lt;key\u0026gt;Label\u0026lt;/key\u0026gt; \u0026lt;string\u0026gt;com.openclaw.sshtunnel\u0026lt;/string\u0026gt; \u0026lt;key\u0026gt;ProgramArguments\u0026lt;/key\u0026gt; \u0026lt;array\u0026gt; \u0026lt;string\u0026gt;ssh\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-N\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8080:localhost:8080\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;root@95.163.232.9\u0026lt;/string\u0026gt; \u0026lt;/array\u0026gt; \u0026lt;key\u0026gt;RunAtLoad\u0026lt;/key\u0026gt; \u0026lt;true/\u0026gt; \u0026lt;key\u0026gt;KeepAlive\u0026lt;/key\u0026gt; \u0026lt;true/\u0026gt; \u0026lt;/dict\u0026gt; \u0026lt;/plist\u0026gt; Автозапуск # Загрузить plist launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist # Проверить статус launchctl list | grep sshtunnel # Удалить (при необходимости) launchctl unload ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist Доступ к сервисам Через reverse proxy на VPS:\ncode.a2v.space: порт 8080 → Mac Studio:4096 claw.a2v.space: порт 8081 → Mac Studio:8080 (leadera-api) sand.a2v.space: порт 8082 → Mac Studio:4200 (leadera-fe) docs.a2v.space: порт 8083 → Mac Studio:8080 (docs-a2v) SSL Все сервисы используют Let\u0026rsquo;s Encrypt сертификаты:\nПуть: /etc/letsencrypt/live/{claw,code,sand}.a2v.space/ Автопродление через certbot ","section":"guides","tags":["ssh","tunnel","vps","reverse-proxy"],"title":"SSH туннели для VPS reverse proxy","url":"/guides/ssh-tunnels-vps/"},{"content":"\nYEI16NAJ78d3lmSa/lca8Zxczt+u6GyMUYHduX47VoFQdj0Ixozd8R6yXoB7eM+AjhCtNGkOxGlOj2s73ABOBjLEIVIhD4Z+xTyzdtah4VpyLoltYOeNYsnbIIFARdF/FBYq5COXohhXs33K5ozznrtDd/awbKMjl/sbQqjXAZ+A3ZSob6/5uU+fFKetXLR6v4ZLAYQ57iiD21ImSLSggwv+rJgK5XyPDKEPD4N5nOsiDrLgoukVBMvgJ54PqfPp2Hni+2tdKOlMnOG2npTuu4SkyALcfFar\n\n\n","section":"creds","tags":["vpn","amnezia","infrastructure"],"title":"VPN VPS","url":"/creds/vpn-vps/"},{"content":"\nIpYXLMtgCFlGQ550DZCLjq37VsnNqL08Rn03iRS7kQ7ozBZNsiZySFzDAvYh4xIHytRDy0Sz0KGUXekr0S+cNiJsmtZ8kj0Pd0JhevhxTMZF2khFvs/LFWoTL5ZwAJ34y/qfLw2gaWX90VZDu0wO+KeAQeXhrWmol/2zUlfWX1AihyYqD2vRz+h2FcjD8ubYOXG35PyX7OlV1HPXgDv5X/bFNrxzPc867UOwB4aGxY9a\n\n\n","section":"creds","tags":["vps","reg.ru","infrastructure"],"title":"VPS reg.ru","url":"/creds/vps-reg-ru/"},{"content":"Описание Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.\nЧто сделано Backend (Go + Gin): собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller Frontend (Angular 17): собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов PostgreSQL: Docker, порт 5433, миграции готовы Docker Compose: рабочий (postgres + api + frontend) Спецификация: полная в ~/Projects/eversolo-companion/SPEC.md Проблема API не может достучаться до Eversolo T8 (192.168.0.156:9529) из-за ограничений OpenClaw sandbox.\nВозможные решения Настроить tools.elevated.allowFrom.webchat для разрешения сетевых соединений Запустить API через launchd plist (как SSH туннели) Использовать отдельный контейнер без ограничений Этапы 3-9 (после решения сети) Библиотека синхронизации — двухсторонний sync с Eversolo Плейлисты — импорт/экспорт, редактирование Scrobbler — Last.fm / ListenBrainz Обложки — кэширование, отображение в UI Плеер — улучшенный интерфейс управления Система уведомлений — события от Eversolo Администрирование — настройка подключений Связанные ресурсы Спецификация проекта API документация Дневник разработки ","section":"plans","tags":["eversolo","companion","angular","go","docker"],"title":"Завершить Eversolo Companion - этапы 3-9","url":"/plans/eversolo-companion-phases-3-9/"},{"content":"Описание Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.\nПроблема Модель qwen3.5:9b добавлена в конфиг openclaw.json, но не отображается в openclaw models list.\nСтатус Отложено по решению Антона.\n","section":"plans","tags":["ollama","openclaw","llm"],"title":"Настроить интеграцию Ollama с OpenClaw","url":"/plans/ollama-openclaw/"},{"content":"Общая схема Mac Studio (локальная сеть) → autossh (SSH-туннели) → VPS 95.163.232.9 (Debian) → nginx (HTTPS reverse proxy) → интернет Что нужно на VPS 1. Установленные пакеты apt update apt install nginx certbot python3-certbot-nginx 2. SSH-доступ Авторизация только по ключам Публичный ключ с Mac Studio добавлен в /root/.ssh/authorized_keys 3. nginx Для каждого домена создать server block:\nHTTP → редирект на HTTPS HTTPS с SSL-сертификатом Let\u0026rsquo;s Encrypt proxy_pass на localhost-порт туннеля Пример структуры:\n/etc/nginx/sites-available/ claw.a2v.space.conf code.a2v.space.conf sand.a2v.space.conf 4. SSL-сертификаты certbot certonly --nginx -d \u0026lt;domain\u0026gt; certbot renew --dry-run # проверить автообновление Что нужно на Mac Studio autossh через launchd Plist: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\nОдин plist с несколькими -R флагами:\n\u0026lt;key\u0026gt;ProgramArguments\u0026lt;/key\u0026gt; \u0026lt;array\u0026gt; \u0026lt;string\u0026gt;/usr/local/bin/autossh\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-M\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;0\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8080:localhost:18789\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8081:localhost:4096\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8082:localhost:4200\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-R\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;8083:localhost:8080\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;root@95.163.232.9\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-N\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;-i\u0026lt;/string\u0026gt; \u0026lt;string\u0026gt;/Users/\u0026lt;user\u0026gt;/.ssh/id_rsa\u0026lt;/string\u0026gt; \u0026lt;/array\u0026gt; Управление launchd launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist launchctl start com.openclaw.sshtunnel launchctl stop com.openclaw.sshtunnel Проверка # На VPS ss -tlnp | grep -E \u0026#39;808[0-3]\u0026#39; # Снаружи curl -I https://claw.a2v.space curl -I https://code.a2v.space curl -I https://sand.a2v.space ","section":"guides","tags":["vps","nginx","ssh","reverse-proxy","devops"],"title":"Настройка VPS как реверс-прокси","url":"/guides/vps-reverse-proxy/"},{"content":"Архитектура 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\nNS-серверы: ns1.hosting.reg.ru, ns2.hosting.reg.ru\n2. Mac Studio — OpenClaw Порт: 18789 Конфиг: ~/.openclaw/openclaw.json 3. SSH-туннель (launchd) Plist: ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist\nКлючевой флаг: -R 8080:localhost:18789\n4. VPS — nginx конфиг server { listen 80; server_name claw.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name claw.a2v.space; ssl_certificate /etc/letsencrypt/live/claw.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/claw.a2v.space/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 5. SSL-сертификат certbot certonly --nginx -d claw.a2v.space 6. OpenClaw config { \u0026#34;allowedOrigins\u0026#34;: [\u0026#34;https://claw.a2v.space\u0026#34;], \u0026#34;trustedProxies\u0026#34;: [\u0026#34;127.0.0.1\u0026#34;] } ","section":"guides","tags":["openclaw","ssh","nginx","vps","reverse-proxy"],"title":"Подключение claw.a2v.space (OpenClaw)","url":"/guides/claw-a2v-space/"},{"content":"Архитектура Mac Studio (localhost:4096) → autossh SSH-туннель (-R 8081:localhost:4096) → VPS 95.163.232.9:8081 → nginx HTTPS → https://code.a2v.space Параметры Параметр Значение Локальный порт 4096 Туннель порт 8081 pm2 процесс opencode SSL сертификат /etc/letsencrypt/live/code.a2v.space/ nginx конфиг server { listen 80; server_name code.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name code.a2v.space; ssl_certificate /etc/letsencrypt/live/code.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/code.a2v.space/privkey.pem; location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \u0026#34;upgrade\u0026#34;; } } SSL-сертификат certbot certonly --nginx -d code.a2v.space ","section":"guides","tags":["opencode","ssh","nginx","vps","reverse-proxy"],"title":"Подключение code.a2v.space (OpenCode)","url":"/guides/code-a2v-space/"},{"content":"Архитектура Mac Studio ├─ Frontend (Angular) :4200 (pm2: leadera-fe) ├─ Backend (Go) :8080 (pm2: leadera-api) └─ PostgreSQL 16 в Docker (Colima, container: app-leadera-db) → autossh SSH-туннель (-R 8082:localhost:4200 -R 8083:localhost:8080) → VPS 95.163.232.9 → nginx HTTPS → https://sand.a2v.space Параметры Компонент Локальный порт Туннель порт pm2 имя Frontend (Angular) 4200 8082 leadera-fe Backend (Go) 8080 8083 leadera-api SSL сертификат: /etc/letsencrypt/live/sand.a2v.space/\nnginx конфиг server { listen 80; server_name sand.a2v.space; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name sand.a2v.space; ssl_certificate /etc/letsencrypt/live/sand.a2v.space/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sand.a2v.space/privkey.pem; location /api { proxy_pass http://127.0.0.1:8083; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location / { proxy_pass http://127.0.0.1:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } База данных PostgreSQL 16 в Docker через Colima:\nContainer: app-leadera-db Port: 5432 SSL-сертификат certbot certonly --nginx -d sand.a2v.space ","section":"guides","tags":["angular","go","docker","nginx","vps","reverse-proxy"],"title":"Подключение sand.a2v.space (Leadera Project)","url":"/guides/sand-a2v-space/"},{"content":"Описание Добавить инструменты управления Eversolo T8 в OpenClaw.\nЧто сделано Изучен полный API Eversolo T8 (см. Базу знаний) Проблема Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.\nВозможные решения Настроить проброс портов Запустить OpenClaw без sandbox-ограничений Использовать промежуточный proxy-сервис ","section":"plans","tags":["eversolo","openclaw","api"],"title":"Реализовать управление Eversolo из OpenClaw","url":"/plans/eversolo-control/"}] \ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml index c48b810..0438c1c 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -34,9 +34,6 @@ /tags/ollama/ 2026-03-30T00:00:00+00:00 - - /tags/openclaw/ - 2026-03-30T00:00:00+00:00 /tags/qwen/ 2026-03-30T00:00:00+00:00 @@ -127,6 +124,9 @@ /tags/nginx/ 2026-03-29T00:00:00+00:00 + + /tags/openclaw/ + 2026-03-29T00:00:00+00:00 /tags/opencode/ 2026-03-29T00:00:00+00:00 diff --git a/public/tags/index.html b/public/tags/index.html index 790ec28..3ea9620 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -121,8 +121,6 @@
  • Ollama
  • -
  • Openclaw
  • -
  • Qwen
  • Security
  • @@ -165,6 +163,8 @@
  • Nginx
  • +
  • Openclaw
  • +
  • Opencode
  • Postgresql
  • diff --git a/public/tags/index.xml b/public/tags/index.xml index df8a626..ea75123 100644 --- a/public/tags/index.xml +++ b/public/tags/index.xml @@ -50,13 +50,6 @@ /tags/ollama/ - - Openclaw - /tags/openclaw/ - Mon, 30 Mar 2026 00:00:00 +0000 - /tags/openclaw/ - - Qwen /tags/qwen/ @@ -204,6 +197,13 @@ /tags/nginx/ + + Openclaw + /tags/openclaw/ + Sun, 29 Mar 2026 00:00:00 +0000 + /tags/openclaw/ + + Opencode /tags/opencode/ diff --git a/public/tags/infrastructure/index.xml b/public/tags/infrastructure/index.xml index 7b4120a..b3a860a 100644 --- a/public/tags/infrastructure/index.xml +++ b/public/tags/infrastructure/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> 29 марта 2026 diff --git a/public/tags/leadera/index.xml b/public/tags/leadera/index.xml index 82592e9..2ac918c 100644 --- a/public/tags/leadera/index.xml +++ b/public/tags/leadera/index.xml @@ -20,7 +20,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> Mac Studio — leadera-api БД (docker-compose) diff --git a/public/tags/mtproxy/index.xml b/public/tags/mtproxy/index.xml index 8a01169..860176c 100644 --- a/public/tags/mtproxy/index.xml +++ b/public/tags/mtproxy/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> diff --git a/public/tags/ollama/index.xml b/public/tags/ollama/index.xml index 97507e9..e301361 100644 --- a/public/tags/ollama/index.xml +++ b/public/tags/ollama/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> Настроить интеграцию Ollama с OpenClaw diff --git a/public/tags/openclaw/index.html b/public/tags/openclaw/index.html index e4547f1..f7bdf38 100644 --- a/public/tags/openclaw/index.html +++ b/public/tags/openclaw/index.html @@ -109,8 +109,6 @@
      -
    • 30 марта 2026
    • -
    • Настроить интеграцию Ollama с OpenClaw
    • Подключение claw.a2v.space (OpenClaw)
    • diff --git a/public/tags/openclaw/index.xml b/public/tags/openclaw/index.xml index a5a86e3..a1d75e8 100644 --- a/public/tags/openclaw/index.xml +++ b/public/tags/openclaw/index.xml @@ -6,15 +6,8 @@ Recent content in Openclaw on docs.a2v.space Hugo ru-ru - Mon, 30 Mar 2026 00:00:00 +0000 + Sun, 29 Mar 2026 00:00:00 +0000 - - 30 марта 2026 - /diary/2026-03-30/ - Mon, 30 Mar 2026 00:00:00 +0000 - /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> - Настроить интеграцию Ollama с OpenClaw /plans/ollama-openclaw/ diff --git a/public/tags/qwen/index.xml b/public/tags/qwen/index.xml index 956e84f..63f6b79 100644 --- a/public/tags/qwen/index.xml +++ b/public/tags/qwen/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> diff --git a/public/tags/tasktracker/index.xml b/public/tags/tasktracker/index.xml index 22acec5..d8593ea 100644 --- a/public/tags/tasktracker/index.xml +++ b/public/tags/tasktracker/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul> diff --git a/public/tags/vikunja/index.xml b/public/tags/vikunja/index.xml index 146410b..faaa14f 100644 --- a/public/tags/vikunja/index.xml +++ b/public/tags/vikunja/index.xml @@ -13,7 +13,7 @@ /diary/2026-03-30/ Mon, 30 Mar 2026 00:00:00 +0000 /diary/2026-03-30/ - <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро/день</strong> — Установили Vikunja (таск-трекер) на Mac Studio через Docker/Colima; URL: http://192.168.0.37:8095, проект «Leadera» (ID=2)</li> <li><strong>День</strong> — Загрузили 27 задач из аудита Leadera в Vikunja с приоритетами (P0–P3)</li> <li><strong>День</strong> — Начали реализацию Leadera TaskTracker по ТЗ (leadera-tasktracker-spec.md) через sub-agents (GLM-5.1): миграции, модели, DTOs, repositories, фронтенд-компоненты</li> <li><strong>Вечер</strong> — <strong>Откатили</strong> TaskTracker по просьбе Антона (<code>git checkout + git clean</code>): Claude Code падал на длинных задачах, sub-agents работали нестабильно; Plane не запустился (commercial edition)</li> <li><strong>Вечер</strong> — Починили Qwen 3.5:9b для OpenClaw: модель была в конфиге, но не «активирована» через CLI — выполнено <code>openclaw models set ollama/qwen3.5:9b</code> + возврат default на <code>zai/glm-5.1</code></li> <li><strong>Вечер</strong> — Установили MT Proxy на VPN VPS (185.234.64.52): Docker контейнер <code>mtproxy</code>, порт 8443→443, секрет <code>9e40ae13999874305c87fd2777758188</code></li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, одобрил устройство через <code>openclaw devices approve</code></li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>API token: <code>tk_635fb7ac799d972ef32ed3bfb867bcc0985a3ae0</code></li> <li>Проект Leadera: 27 задач из аудита</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52:8443</li> <li>Секрет: <code>9e40ae13999874305c87fd2777758188</code></li> <li>Ссылка: <code>tg://proxy?server=185.234.64.52&amp;port=8443&amp;secret=9e40ae13999874305c87fd2777758188</code></li> </ul> <h2 id="уроки">Уроки</h2> <ul> <li>Claude Code не справляется с длинными задачами (SIGKILL) — лучше разбивать на мелкие</li> <li>OpenClaw требует «активации» моделей через CLI, не только конфиг</li> <li>Plane self-hosted commercial edition проблемный для локального запуска</li> </ul> + <h2 id="timeline">Timeline</h2> <ul> <li><strong>Утро</strong> — Установлен Vikunja (таск-трекер) на Mac Studio через Docker/Colima</li> <li><strong>День</strong> — Создан проект «Leadera» в Vikunja (ID=2), добавлено 27 задач из аудита Leadera</li> <li><strong>День</strong> — Начата реализация Leadera TaskTracker: миграции, модели, DTOs, repositories (бекенд), фронтенд (kanban, task-detail)</li> <li><strong>Вечер</strong> — TaskTracker <strong>откачён</strong> по просьбе Антона — git checkout + git clean. Причина: Claude Code падал (SIGKILL), sub-agents не справлялись, Plane не запустился</li> <li><strong>Вечер</strong> — Настроен MT Proxy на VPN VPS (185.234.64.52): порт 8443, секрет 9e40ae…</li> <li><strong>Вечер</strong> — Qwen 3.5:9b подключён к OpenClaw через <code>openclaw models set ollama/qwen3.5:9b</code>, доступен для cron/spawn задач</li> <li><strong>Вечер</strong> — Антон подключился к claw.a2v.space с мобильного, устройство одобрено</li> </ul> <h2 id="vikunja">Vikunja</h2> <ul> <li>URL: http://192.168.0.37:8095</li> <li>Проект Leadera: ID=2</li> <li>API token: <code>tk_635fb7ac…</code></li> <li>27 задач из аудита, приоритеты P0–P3</li> </ul> <h2 id="leadera-tasktracker">Leadera TaskTracker</h2> <ul> <li>ТЗ: <code>leadera-tasktracker-spec.md</code></li> <li>Реализация через sub-agents (GLM-5.1)</li> <li><strong>Откачено</strong> — проекты возвращены к предыдущему коммиту</li> </ul> <h2 id="mt-proxy">MT Proxy</h2> <ul> <li>Сервер: 185.234.64.52, порт 8443</li> <li>Docker контейнер: <code>mtproxy</code></li> </ul> <h2 id="инфраструктура">Инфраструктура</h2> <ul> <li>Qwen 3.5:9b доступен как дешёвая локальная модель для cron/spawn</li> <li>Мобильное подключение к claw.a2v.space подтверждено</li> </ul>