daily update 2026-03-29
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
# Проект: docs.a2v.space — Персональная документация
|
||||
|
||||
## Техническое задание
|
||||
|
||||
### Каркас
|
||||
- Hugo static site generator (уже установлен)
|
||||
- Кастомная тема на Bootstrap 5 (не использовать готовые темы, создать свою)
|
||||
- Bootstrap 5 через CDN
|
||||
- Тёплая цветовая палитра: бежевый (#f5f0e8), терракота (#c4623a), тёплый серый (#6b6560), тёмно-коричневый (#3d3530), акцент — золотистый (#d4a853)
|
||||
- Шрифт: системный sans-serif, читаемый, не мелкий
|
||||
|
||||
### Навигация
|
||||
- **Горизонтальное меню в шапке** — 5 разделов: Дневник, База знаний, Планы, Инструкции, Креды
|
||||
- **Боковое меню слева** — фильтры/подразделы для каждого раздела (теги, категории, статусы)
|
||||
- **Мобильная адаптация** — hamburger menu, боковое меню скрывается, контент на всю ширину
|
||||
|
||||
### Разделы
|
||||
|
||||
#### 1. Дневник (Diary) — `/diary/`
|
||||
- Формат блога, постинг по датам
|
||||
- Каждый пост = один день
|
||||
- Внутри поста: записи с указанием времени обсуждения и кратким описанием
|
||||
- Timeline-вид на странице списка (дата → превью)
|
||||
- Front matter: date, title, tags
|
||||
|
||||
#### 2. База знаний (Knowledge Base) — `/kb/`
|
||||
- Сквозной список статей (одностраничных)
|
||||
- Теги для категоризации
|
||||
- Боковое меню: список тегов как фильтр
|
||||
- Поиск по заголовкам и содержимому (client-side, fuse.js)
|
||||
|
||||
#### 3. Планы (Plans) — `/plans/`
|
||||
- Список планов-карточек
|
||||
- Статусы: 🟡 Запланировано, 🟠 В процессе, ✅ Сделано, ❌ Отменено
|
||||
- **Ранжирование**: завершённые (✅, ❌) в конце по дате завершения, предстоящие (🟡, 🟠) — ближайшая дата первой
|
||||
- На карточке: что планируется, когда планируем, статус, когда и при каких обстоятельствах запланировали (с цитатой автора)
|
||||
- Front matter: title, date, plan_date (когда планируется), status (planned/in_progress/done/cancelled), done_date, context_quote
|
||||
|
||||
#### 4. Инструкции (Guides) — `/guides/`
|
||||
- Аналогичен Базе знаний
|
||||
- Пошаговые инструкции
|
||||
- Теги, боковое меню с фильтрами
|
||||
|
||||
#### 5. Креды (Credentials) — `/creds/`
|
||||
- Одни креды = одна запись
|
||||
- **Шифрование содержимого**: пароли хранятся зашифрованными (AES через Web Crypto API)
|
||||
- При загрузке страницы — кнопка "Расшифровать", пользователь вводит мастер-пароль
|
||||
- Без мастер-пароля видны только названия/описания, значения скрыты
|
||||
- Front matter: title, description, service
|
||||
- Тело: зашифрованный JSON с полями (user, password, host, port, notes и т.д.)
|
||||
|
||||
### Шифрование кредов (ВАЖНО!)
|
||||
Реализовать через JavaScript Web Crypto API:
|
||||
1. При создании записи — JS-скрипт шифрует JSON с кредами мастер-паролем → сохраняет encrypted payload в Markdown
|
||||
2. При просмотре — кнопка "Расшифровать" → prompt для мастер-пароля → AES-GCM дешифровка → показать поля
|
||||
3. Использовать PBKDF2 для деривации ключа из пароля, AES-256-GCM для шифрования
|
||||
4.Salt и IV хранить вместе с payload (base64 encoded)
|
||||
|
||||
### Поиск
|
||||
- Client-side поиск через Fuse.js (CDN)
|
||||
- Индекс строится при сборке Hugo (JSON index)
|
||||
- Поле поиска в шапке
|
||||
|
||||
### Адаптивность
|
||||
- Mobile-first
|
||||
- На мобильных: hamburger menu, без боковой панели, контент на полную ширину
|
||||
- На планшетах: боковая панель сворачиваемая
|
||||
- На десктопе: полная навигация + боковая панель
|
||||
|
||||
---
|
||||
|
||||
## Контент для наполнения
|
||||
|
||||
### База знаний — API Eversolo
|
||||
|
||||
Создать статью `/content/kb/eversolo-api.md`:
|
||||
|
||||
Eversolo T8 — музыкальный стример, IP: 192.168.0.156, порт API: 9529, без авторизации.
|
||||
|
||||
#### Воспроизведение
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Play/Pause | `/ZidooMusicControl/v2/playOrPause` |
|
||||
| Следующий трек | `/ZidooMusicControl/v2/playNext` |
|
||||
| Предыдущий трек | `/ZidooMusicControl/v2/playLast` |
|
||||
| Перемотка (ms) | `/ZidooMusicControl/v2/seekTo?time=<ms>` |
|
||||
| Воспроизвести по ID | `/ZidooMusicControl/v2/playMusic?type=4&id=<id>` |
|
||||
| Состояние | `/ZidooMusicControl/v2/getState` |
|
||||
|
||||
#### Громкость
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Громкость вверх | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp` |
|
||||
| Громкость вниз | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown` |
|
||||
| Точная громкость | `/ZidooMusicControl/v2/setDevicesVolume?volume=<0-200>` |
|
||||
| Mute | `/ZidooMusicControl/v2/setMuteVolume?isMute=1` |
|
||||
| Unmute | `/ZidooMusicControl/v2/setMuteVolume?isMute=0` |
|
||||
|
||||
#### Входы/Выходы
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Получить список | `/ZidooMusicControl/v2/getInputAndOutputList` |
|
||||
| Установить вход | `/ZidooMusicControl/v2/setInputList?tag=<tag>&index=<n>` |
|
||||
| Установить выход | `/ZidooMusicControl/v2/setOutInputList?tag=<tag>&index=<n>` |
|
||||
| Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB |
|
||||
|
||||
#### Дисплей
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Яркость экрана (get) | `/SystemSettings/displaySettings/getScreenBrightness` |
|
||||
| Яркость экрана (set) | `/SystemSettings/displaySettings/setScreenBrightness?index=<0-115>` |
|
||||
| Яркость ручки (get) | `/SystemSettings/displaySettings/getKnobBrightness` |
|
||||
| Яркость ручки (set) | `/SystemSettings/displaySettings/setKnobBrightness?index=<0-255>` |
|
||||
| VU-режим (get) | `/SystemSettings/displaySettings/getVUModeList` |
|
||||
| VU-режим (set) | `/SystemSettings/displaySettings/setVUMode?index=<n>` |
|
||||
| Спектр (get) | `/SystemSettings/displaySettings/getSpPlayModeList` |
|
||||
| Спектр (set) | `/SystemSettings/displaySettings/setSpPlayModeList?index=<n>` |
|
||||
| Переключить VU/Спектр | `/ZidooMusicControl/v2/changVUDisplay?openType=<0|1>` |
|
||||
|
||||
#### Питание
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Параметры питания | `/ZidooMusicControl/v2/getPowerOption` |
|
||||
| Перезагрузка | `/ZidooMusicControl/v2/setPowerOption?tag=reboot` |
|
||||
| Выключение | `/ZidooMusicControl/v2/setPowerOption?tag=poweroff` |
|
||||
| Переключить экран | `/ZidooMusicControl/v2/setPowerOption?tag=screen` |
|
||||
| Включить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.ON` |
|
||||
| Выключить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.OFF` |
|
||||
|
||||
#### Поиск
|
||||
| Поиск | URL |
|
||||
|-------|-----|
|
||||
| По трекам | `/ZidooMusicControl/v2/searchMusicV2?key=<text>&start=0&count=100` |
|
||||
| По артистам | `/ZidooMusicControl/v2/searchArtistV2?key=<text>&start=0&count=100` |
|
||||
| По альбомам | `/ZidooMusicControl/v2/searchAlbumV2?key=<text>&start=0&count=100` |
|
||||
|
||||
#### Обложки и устройство
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Обложка по ID | `/ZidooMusicControl/v2/getImage?id=<song_id>&target=16` |
|
||||
| Модель устройства | `/ControlCenter/getModel` |
|
||||
|
||||
Источники:
|
||||
- Форум Zidoo: https://forum.zidoo.tv/index.php?threads/some-api.96983/
|
||||
- HA интеграция: https://github.com/hchris1/Eversolo/blob/main/custom_components/eversolo/api.py
|
||||
|
||||
---
|
||||
|
||||
### Инструкции
|
||||
|
||||
#### Инструкция: Подключение claw.a2v.space (OpenClaw)
|
||||
|
||||
**Архитектура:** Mac Studio (192.168.0.37:18789) → autossh SSH-туннель → VPS 95.163.232.9:8080 → nginx HTTPS → https://claw.a2v.space
|
||||
|
||||
**Шаги:**
|
||||
1. DNS: A-запись claw.a2v.space → 95.163.232.9 (ns1/ns2.hosting.reg.ru)
|
||||
2. Mac Studio: OpenClaw запущен на порту 18789, конфиг ~/.openclaw/openclaw.json
|
||||
3. SSH-туннель: launchd plist `~/Library/LaunchAgents/com.openclaw.sshtunnel.plist` с `-R 8080:localhost:18789`
|
||||
4. VPS nginx конфиг:
|
||||
- listen 80 → redirect to https
|
||||
- listen 443 ssl, cert `/etc/letsencrypt/live/claw.a2v.space/`
|
||||
- proxy_pass http://127.0.0.1:8080
|
||||
- proxy_set_header Host $host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto
|
||||
5. SSL: certbot certonly --nginx -d claw.a2v.space
|
||||
6. OpenClaw config: allowedOrigins ["https://claw.a2v.space"], trustedProxies
|
||||
|
||||
#### Инструкция: Подключение code.a2v.space (OpenCode)
|
||||
|
||||
**Порт:** 4096, pm2 процесс "opencode"
|
||||
**SSH-туннель:** `-R 8081:localhost:4096`
|
||||
**nginx:** proxy_pass http://127.0.0.1:8081
|
||||
**SSL:** /etc/letsencrypt/live/code.a2v.space/
|
||||
|
||||
#### Инструкция: Подключение sand.a2v.space (Leadera Project)
|
||||
|
||||
**Порты:** Frontend 4200 (Angular, pm2 leadera-fe), Backend 8080 (Go, pm2 leadera-api)
|
||||
**SSH-туннель:** `-R 8082:localhost:4200 -R 8083:localhost:8080`
|
||||
**nginx:** location / → proxy_pass :8082, location /api → proxy_pass :8083
|
||||
**SSL:** /etc/letsencrypt/live/sand.a2v.space/
|
||||
**БД:** PostgreSQL 16 в Docker (Colima), container app-leadera-db
|
||||
|
||||
#### Инструкция: Настройка VPS как реверс-прокси
|
||||
|
||||
Общая схема: Mac Studio (локальная сеть) → autossh (SSH-туннели) → VPS 95.163.232.9 (Debian) → nginx (HTTPS reverse proxy) → интернет
|
||||
|
||||
**Что нужно на VPS:**
|
||||
- nginx + certbot (Let's Encrypt)
|
||||
- SSH-доступ с ключами с Mac Studio
|
||||
- Для каждого домена: server block с SSL, proxy_pass на localhost-порт туннеля
|
||||
|
||||
**Что нужно на Mac Studio:**
|
||||
- autossh через launchd (com.openclaw.sshtunnel.plist)
|
||||
- Один plist с несколькими -R флагами для всех сервисов
|
||||
|
||||
---
|
||||
|
||||
### Креды (зашифровать!)
|
||||
|
||||
#### VPS reg.ru
|
||||
- **Сервис:** VPS хостинг (реверс-прокси)
|
||||
- **IP:** 95.163.232.9
|
||||
- **User:** root
|
||||
- **Auth:** SSH ключ
|
||||
|
||||
#### VPN VPS
|
||||
- **Сервис:** VPN сервер
|
||||
- **IP:** 185.234.64.52
|
||||
- **User:** root
|
||||
- **Password:** lO6kC9gY7r
|
||||
- **VPN:** Amnezia (xray порт 443, AWG порт 46002)
|
||||
|
||||
#### Mac Studio — leadera-api БД (локальная)
|
||||
- **Сервис:** PostgreSQL (Docker)
|
||||
- **Host:** localhost:5432
|
||||
- **User:** leadera
|
||||
- **Password:** popoloka16
|
||||
- **Database:** leadera
|
||||
|
||||
#### Mac Studio — leadera-api БД (docker-compose)
|
||||
- **Сервис:** PostgreSQL (docker-compose)
|
||||
- **Host:** localhost:5432
|
||||
- **User:** postgres
|
||||
- **Password:** password
|
||||
- **Database:** it_landscape
|
||||
|
||||
---
|
||||
|
||||
### Планы
|
||||
|
||||
#### Настроить интеграцию Ollama с OpenClaw
|
||||
- **Статус:** 🟡 Запланировано
|
||||
- **Дата:** TBD
|
||||
- **Контекст:** Добавлен qwen3.5:9b в openclaw.json, но модель не появилась в openclaw models list. Отложено по решению Антона.
|
||||
|
||||
#### Реализовать управление Eversolo из OpenClaw
|
||||
- **Статус:** 🟡 Запланировано
|
||||
- **Дата:** TBD
|
||||
- **Контекст:** API изучен, записан в TOOLS.md. Проблема: нет доступа к LAN из sandbox OpenClaw.
|
||||
|
||||
---
|
||||
|
||||
### Дневник — сегодня (29.03.2026)
|
||||
|
||||
- 20:03 — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker
|
||||
- 20:31 — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой
|
||||
- 20:49 — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями
|
||||
- 21:13 — Начали проект docs.a2v.space — персональная документация на Hugo
|
||||
|
||||
---
|
||||
|
||||
## Структура Hugo
|
||||
|
||||
```
|
||||
content/
|
||||
diary/
|
||||
2026-03-29.md
|
||||
kb/
|
||||
eversolo-api.md
|
||||
plans/
|
||||
ollama-openclaw.md
|
||||
eversolo-control.md
|
||||
guides/
|
||||
claw-a2v-space.md
|
||||
code-a2v-space.md
|
||||
sand-a2v-space.md
|
||||
vps-reverse-proxy.md
|
||||
creds/
|
||||
vps-reg-ru.md
|
||||
vpn-vps.md
|
||||
leadera-db-local.md
|
||||
leadera-db-docker.md
|
||||
```
|
||||
@@ -0,0 +1,5 @@
|
||||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
||||
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: "docs.a2v.space Basic Auth"
|
||||
date: 2026-03-29
|
||||
tags: ["docs", "authentication", "nginx"]
|
||||
description: "Учетные данные для доступа к docs.a2v.space"
|
||||
---
|
||||
|
||||
## Basic Authentication
|
||||
|
||||
```bash
|
||||
Username: agaltsovav
|
||||
Password: Magamet787!
|
||||
```
|
||||
|
||||
## Конфигурация Nginx
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 8091;
|
||||
server_name docs.a2v.space;
|
||||
|
||||
auth_basic "Restricted Access";
|
||||
auth_basic_user_file /etc/nginx/.htpasswd;
|
||||
}
|
||||
```
|
||||
|
||||
## Доступ
|
||||
|
||||
- **URL**: https://docs.a2v.space (через reverse proxy)
|
||||
- **Local**: http://localhost:8091 (для разработки)
|
||||
- **Auth**: всегда требуется
|
||||
|
||||
## Мастер-пароль для шифрования
|
||||
|
||||
**Важно**: Пароль для расшифровки файлов в разделе `creds/`
|
||||
|
||||
```bash
|
||||
Master Password: Popoloka16!
|
||||
```
|
||||
|
||||
## Шифрование
|
||||
|
||||
- Алгоритм: AES-256-GCM
|
||||
- Хранилище: client-side encryption
|
||||
- Файлы шифруются при сохранении
|
||||
- Расшифровываются при чтении
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Eversolo Companion PostgreSQL"
|
||||
date: 2026-03-29
|
||||
tags: ["eversolo", "companion", "postgresql", "docker"]
|
||||
description: "Учетные данные для базы данных Eversolo Companion"
|
||||
---
|
||||
|
||||
## Docker Compose креды (~/Projects/eversolo-companion/docker-compose.yml)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
postgres:
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: password
|
||||
POSTGRES_DB: eversolo
|
||||
```
|
||||
|
||||
## Локальные креды (.env файл)
|
||||
|
||||
```bash
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=password
|
||||
POSTGRES_DB=eversolo
|
||||
```
|
||||
|
||||
## Хостинг
|
||||
|
||||
- **Host**: localhost
|
||||
- **Port**: 5433
|
||||
- **Database**: eversolo
|
||||
|
||||
## Безопасность
|
||||
|
||||
- Используйте разные пароли для production
|
||||
- Включите SSL для удаленного подключения
|
||||
- Регулярно делайте бэкапы
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Mac Studio — leadera-api БД (docker-compose)"
|
||||
description: "PostgreSQL (docker-compose) для Leadera"
|
||||
service: "PostgreSQL"
|
||||
date: 2026-03-29
|
||||
tags: ["postgresql", "docker-compose", "leadera", "database"]
|
||||
---
|
||||
|
||||
{{< encrypted-creds >}}
|
||||
NYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD
|
||||
{{< /encrypted-creds >}}
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Mac Studio — leadera-api БД (локальная)"
|
||||
description: "PostgreSQL (Docker) для Leadera"
|
||||
service: "PostgreSQL"
|
||||
date: 2026-03-29
|
||||
tags: ["postgresql", "docker", "leadera", "database"]
|
||||
---
|
||||
|
||||
{{< encrypted-creds >}}
|
||||
p7Iw7Y3zbj1kLBcbOXGoO27oDwF85AhxBW7saT538hxi0ogJpyFeM49GDuLHzxuyknvdNC/rx3tb4AFnGkCeHSrrCmj+VK8Zxt7ujeujVJSRuOeeUlsqkHdlmaiXl2KQknrIsqVCi3Tnn0V5qcFxvo+1Ktc+surF6bBpWrTHzWV5mLtWVfD6C6kvvP/UFldFBD6v+FQs79yfoOe/j/bUrtpt6v5VndbbBmhUAQcy1BV2rpXxO373dTcLQ6coRWkt/RFo
|
||||
{{< /encrypted-creds >}}
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "VPN VPS"
|
||||
description: "VPN сервер (Amnezia)"
|
||||
service: "VPN"
|
||||
date: 2026-03-29
|
||||
tags: ["vpn", "amnezia", "infrastructure"]
|
||||
---
|
||||
|
||||
{{< encrypted-creds >}}
|
||||
YEI16NAJ78d3lmSa/lca8Zxczt+u6GyMUYHduX47VoFQdj0Ixozd8R6yXoB7eM+AjhCtNGkOxGlOj2s73ABOBjLEIVIhD4Z+xTyzdtah4VpyLoltYOeNYsnbIIFARdF/FBYq5COXohhXs33K5ozznrtDd/awbKMjl/sbQqjXAZ+A3ZSob6/5uU+fFKetXLR6v4ZLAYQ57iiD21ImSLSggwv+rJgK5XyPDKEPD4N5nOsiDrLgoukVBMvgJ54PqfPp2Hni+2tdKOlMnOG2npTuu4SkyALcfFar
|
||||
{{< /encrypted-creds >}}
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "VPS reg.ru"
|
||||
description: "VPS хостинг (реверс-прокси)"
|
||||
service: "VPS"
|
||||
date: 2026-03-29
|
||||
tags: ["vps", "reg.ru", "infrastructure"]
|
||||
---
|
||||
|
||||
{{< encrypted-creds >}}
|
||||
IpYXLMtgCFlGQ550DZCLjq37VsnNqL08Rn03iRS7kQ7ozBZNsiZySFzDAvYh4xIHytRDy0Sz0KGUXekr0S+cNiJsmtZ8kj0Pd0JhevhxTMZF2khFvs/LFWoTL5ZwAJ34y/qfLw2gaWX90VZDu0wO+KeAQeXhrWmol/2zUlfWX1AihyYqD2vRz+h2FcjD8ubYOXG35PyX7OlV1HPXgDv5X/bFNrxzPc867UOwB4aGxY9a
|
||||
{{< /encrypted-creds >}}
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "29 марта 2026"
|
||||
date: 2026-03-29
|
||||
tags: ["angular", "go", "docker", "eversolo", "hugo", "docs", "identity", "infrastructure", "companion"]
|
||||
---
|
||||
|
||||
## 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):**
|
||||
- Репозиторий: ~/Projects/eversolo-companion
|
||||
- Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller
|
||||
|
||||
**Frontend (Angular 17):**
|
||||
- Состояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов
|
||||
- Dev server: pm2 (eversolo-fe), порт 8096
|
||||
|
||||
**Инфраструктура:**
|
||||
- PostgreSQL: Docker, порт 5433, миграции готовы
|
||||
- Docker Compose: рабочий (postgres + api + frontend)
|
||||
|
||||
**Проблема:** нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)
|
||||
- Решение: настройка tools.elevated.allowFrom.webchat или запуск через launchd
|
||||
|
||||
**Следующие шаги:** после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
title: "Подключение claw.a2v.space (OpenClaw)"
|
||||
date: 2026-03-29
|
||||
tags: ["openclaw", "ssh", "nginx", "vps", "reverse-proxy"]
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
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`
|
||||
|
||||
NS-серверы: `ns1.hosting.reg.ru`, `ns2.hosting.reg.ru`
|
||||
|
||||
### 2. Mac Studio — OpenClaw
|
||||
|
||||
- Порт: 18789
|
||||
- Конфиг: `~/.openclaw/openclaw.json`
|
||||
|
||||
### 3. SSH-туннель (launchd)
|
||||
|
||||
Plist: `~/Library/LaunchAgents/com.openclaw.sshtunnel.plist`
|
||||
|
||||
Ключевой флаг: `-R 8080:localhost:18789`
|
||||
|
||||
### 4. VPS — nginx конфиг
|
||||
|
||||
```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-сертификат
|
||||
|
||||
```bash
|
||||
certbot certonly --nginx -d claw.a2v.space
|
||||
```
|
||||
|
||||
### 6. OpenClaw config
|
||||
|
||||
```json
|
||||
{
|
||||
"allowedOrigins": ["https://claw.a2v.space"],
|
||||
"trustedProxies": ["127.0.0.1"]
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: "Подключение code.a2v.space (OpenCode)"
|
||||
date: 2026-03-29
|
||||
tags: ["opencode", "ssh", "nginx", "vps", "reverse-proxy"]
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
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 конфиг
|
||||
|
||||
```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 "upgrade";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## SSL-сертификат
|
||||
|
||||
```bash
|
||||
certbot certonly --nginx -d code.a2v.space
|
||||
```
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: "Подключение sand.a2v.space (Leadera Project)"
|
||||
date: 2026-03-29
|
||||
tags: ["angular", "go", "docker", "nginx", "vps", "reverse-proxy"]
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
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/`
|
||||
|
||||
## nginx конфиг
|
||||
|
||||
```nginx
|
||||
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:
|
||||
- Container: `app-leadera-db`
|
||||
- Port: 5432
|
||||
|
||||
## SSL-сертификат
|
||||
|
||||
```bash
|
||||
certbot certonly --nginx -d sand.a2v.space
|
||||
```
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: "SSH туннели для VPS reverse proxy"
|
||||
date: 2026-03-29
|
||||
tags: ["ssh", "tunnel", "vps", "reverse-proxy"]
|
||||
description: "Настройка SSH туннелей для доступа к сервисам на Mac Studio через VPS"
|
||||
---
|
||||
|
||||
## Настройка SSH туннелей
|
||||
|
||||
### VPS reg.ru (95.163.232.9)
|
||||
|
||||
```bash
|
||||
# На 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`
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>com.openclaw.sshtunnel</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>ssh</string>
|
||||
<string>-N</string>
|
||||
<string>-R</string>
|
||||
<string>8080:localhost:8080</string>
|
||||
<string>root@95.163.232.9</string>
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
### Автозапуск
|
||||
|
||||
```bash
|
||||
# Загрузить plist
|
||||
launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
|
||||
# Проверить статус
|
||||
launchctl list | grep sshtunnel
|
||||
|
||||
# Удалить (при необходимости)
|
||||
launchctl unload ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
```
|
||||
|
||||
## Доступ к сервисам
|
||||
|
||||
Через reverse proxy на VPS:
|
||||
- **code.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's Encrypt сертификаты:
|
||||
- Путь: `/etc/letsencrypt/live/{claw,code,sand}.a2v.space/`
|
||||
- Автопродление через certbot
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: "Настройка VPS как реверс-прокси"
|
||||
date: 2026-03-29
|
||||
tags: ["vps", "nginx", "ssh", "reverse-proxy", "devops"]
|
||||
---
|
||||
|
||||
## Общая схема
|
||||
|
||||
```
|
||||
Mac Studio (локальная сеть)
|
||||
→ autossh (SSH-туннели)
|
||||
→ VPS 95.163.232.9 (Debian)
|
||||
→ nginx (HTTPS reverse proxy)
|
||||
→ интернет
|
||||
```
|
||||
|
||||
## Что нужно на VPS
|
||||
|
||||
### 1. Установленные пакеты
|
||||
|
||||
```bash
|
||||
apt update
|
||||
apt install nginx certbot python3-certbot-nginx
|
||||
```
|
||||
|
||||
### 2. SSH-доступ
|
||||
|
||||
- Авторизация только по ключам
|
||||
- Публичный ключ с Mac Studio добавлен в `/root/.ssh/authorized_keys`
|
||||
|
||||
### 3. nginx
|
||||
|
||||
Для каждого домена создать server block:
|
||||
|
||||
- HTTP → редирект на HTTPS
|
||||
- HTTPS с SSL-сертификатом Let's Encrypt
|
||||
- `proxy_pass` на localhost-порт туннеля
|
||||
|
||||
Пример структуры:
|
||||
|
||||
```
|
||||
/etc/nginx/sites-available/
|
||||
claw.a2v.space.conf
|
||||
code.a2v.space.conf
|
||||
sand.a2v.space.conf
|
||||
```
|
||||
|
||||
### 4. SSL-сертификаты
|
||||
|
||||
```bash
|
||||
certbot certonly --nginx -d <domain>
|
||||
certbot renew --dry-run # проверить автообновление
|
||||
```
|
||||
|
||||
## Что нужно на Mac Studio
|
||||
|
||||
### autossh через launchd
|
||||
|
||||
Plist: `~/Library/LaunchAgents/com.openclaw.sshtunnel.plist`
|
||||
|
||||
Один plist с несколькими `-R` флагами:
|
||||
|
||||
```xml
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/usr/local/bin/autossh</string>
|
||||
<string>-M</string>
|
||||
<string>0</string>
|
||||
<string>-R</string>
|
||||
<string>8080:localhost:18789</string>
|
||||
<string>-R</string>
|
||||
<string>8081:localhost:4096</string>
|
||||
<string>-R</string>
|
||||
<string>8082:localhost:4200</string>
|
||||
<string>-R</string>
|
||||
<string>8083:localhost:8080</string>
|
||||
<string>root@95.163.232.9</string>
|
||||
<string>-N</string>
|
||||
<string>-i</string>
|
||||
<string>/Users/<user>/.ssh/id_rsa</string>
|
||||
</array>
|
||||
```
|
||||
|
||||
### Управление launchd
|
||||
|
||||
```bash
|
||||
launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
launchctl start com.openclaw.sshtunnel
|
||||
launchctl stop com.openclaw.sshtunnel
|
||||
```
|
||||
|
||||
## Проверка
|
||||
|
||||
```bash
|
||||
# На VPS
|
||||
ss -tlnp | grep -E '808[0-3]'
|
||||
|
||||
# Снаружи
|
||||
curl -I https://claw.a2v.space
|
||||
curl -I https://code.a2v.space
|
||||
curl -I https://sand.a2v.space
|
||||
```
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
title: "Eversolo T8 API"
|
||||
date: 2026-03-29
|
||||
tags: ["api", "eversolo", "music", "streamer"]
|
||||
---
|
||||
|
||||
Eversolo T8 — музыкальный стример.
|
||||
|
||||
**IP:** 192.168.0.156
|
||||
**Порт:** 9529
|
||||
**Авторизация:** нет
|
||||
|
||||
Базовый URL: `http://192.168.0.156:9529`
|
||||
|
||||
## Воспроизведение
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Play/Pause | `/ZidooMusicControl/v2/playOrPause` |
|
||||
| Следующий трек | `/ZidooMusicControl/v2/playNext` |
|
||||
| Предыдущий трек | `/ZidooMusicControl/v2/playLast` |
|
||||
| Перемотка (ms) | `/ZidooMusicControl/v2/seekTo?time=<ms>` |
|
||||
| Воспроизвести по ID | `/ZidooMusicControl/v2/playMusic?type=4&id=<id>` |
|
||||
| Состояние | `/ZidooMusicControl/v2/getState` |
|
||||
|
||||
## Громкость
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Громкость вверх | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp` |
|
||||
| Громкость вниз | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown` |
|
||||
| Точная громкость | `/ZidooMusicControl/v2/setDevicesVolume?volume=<0-200>` |
|
||||
| Mute | `/ZidooMusicControl/v2/setMuteVolume?isMute=1` |
|
||||
| Unmute | `/ZidooMusicControl/v2/setMuteVolume?isMute=0` |
|
||||
|
||||
## Входы/Выходы
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Получить список | `/ZidooMusicControl/v2/getInputAndOutputList` |
|
||||
| Установить вход | `/ZidooMusicControl/v2/setInputList?tag=<tag>&index=<n>` |
|
||||
| Установить выход | `/ZidooMusicControl/v2/setOutInputList?tag=<tag>&index=<n>` |
|
||||
|
||||
Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB
|
||||
|
||||
## Дисплей
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Яркость экрана (get) | `/SystemSettings/displaySettings/getScreenBrightness` |
|
||||
| Яркость экрана (set) | `/SystemSettings/displaySettings/setScreenBrightness?index=<0-115>` |
|
||||
| Яркость ручки (get) | `/SystemSettings/displaySettings/getKnobBrightness` |
|
||||
| Яркость ручки (set) | `/SystemSettings/displaySettings/setKnobBrightness?index=<0-255>` |
|
||||
| VU-режим (get) | `/SystemSettings/displaySettings/getVUModeList` |
|
||||
| VU-режим (set) | `/SystemSettings/displaySettings/setVUMode?index=<n>` |
|
||||
| Спектр (get) | `/SystemSettings/displaySettings/getSpPlayModeList` |
|
||||
| Спектр (set) | `/SystemSettings/displaySettings/setSpPlayModeList?index=<n>` |
|
||||
| Переключить VU/Спектр | `/ZidooMusicControl/v2/changVUDisplay?openType=<0|1>` |
|
||||
|
||||
## Питание
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Параметры питания | `/ZidooMusicControl/v2/getPowerOption` |
|
||||
| Перезагрузка | `/ZidooMusicControl/v2/setPowerOption?tag=reboot` |
|
||||
| Выключение | `/ZidooMusicControl/v2/setPowerOption?tag=poweroff` |
|
||||
| Переключить экран | `/ZidooMusicControl/v2/setPowerOption?tag=screen` |
|
||||
| Включить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.ON` |
|
||||
| Выключить экран | `/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.OFF` |
|
||||
|
||||
## Поиск
|
||||
|
||||
| Поиск | URL |
|
||||
|-------|-----|
|
||||
| По трекам | `/ZidooMusicControl/v2/searchMusicV2?key=<text>&start=0&count=100` |
|
||||
| По артистам | `/ZidooMusicControl/v2/searchArtistV2?key=<text>&start=0&count=100` |
|
||||
| По альбомам | `/ZidooMusicControl/v2/searchAlbumV2?key=<text>&start=0&count=100` |
|
||||
|
||||
## Обложки и устройство
|
||||
|
||||
| Действие | URL |
|
||||
|----------|-----|
|
||||
| Обложка по ID | `/ZidooMusicControl/v2/getImage?id=<song_id>&target=16` |
|
||||
| Модель устройства | `/ControlCenter/getModel` |
|
||||
|
||||
## Источники
|
||||
|
||||
- [Zidoo Forum](https://forum.zidoo.tv/index.php?threads/some-api.96983/)
|
||||
- [Home Assistant Integration](https://github.com/hchris1/Eversolo/blob/main/custom_components/eversolo/api.py)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: "Завершить Eversolo Companion - этапы 3-9"
|
||||
date: 2026-03-29
|
||||
plan_date:
|
||||
status: planned
|
||||
done_date:
|
||||
context_quote: "UI готов, API готов, БД готова — но API не может достучаться до Eversolo из-за ограничений OpenClaw sandbox"
|
||||
tags: ["eversolo", "companion", "angular", "go", "docker"]
|
||||
---
|
||||
|
||||
## Описание
|
||||
|
||||
Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.
|
||||
|
||||
## Что сделано
|
||||
|
||||
- **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.
|
||||
|
||||
## Возможные решения
|
||||
|
||||
1. Настроить `tools.elevated.allowFrom.webchat` для разрешения сетевых соединений
|
||||
2. Запустить API через launchd plist (как SSH туннели)
|
||||
3. Использовать отдельный контейнер без ограничений
|
||||
|
||||
## Этапы 3-9 (после решения сети)
|
||||
|
||||
1. **Библиотека синхронизации** — двухсторонний sync с Eversolo
|
||||
2. **Плейлисты** — импорт/экспорт, редактирование
|
||||
3. **Scrobbler** — Last.fm / ListenBrainz
|
||||
4. **Обложки** — кэширование, отображение в UI
|
||||
5. **Плеер** — улучшенный интерфейс управления
|
||||
6. **Система уведомлений** — события от Eversolo
|
||||
7. **Администрирование** — настройка подключений
|
||||
|
||||
## Связанные ресурсы
|
||||
|
||||
- [Спецификация проекта](/docs/eversolo-companion-spec/)
|
||||
- [API документация](/kb/eversolo-api/)
|
||||
- [Дневник разработки](/diary/2026-03-29/)
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: "Реализовать управление Eversolo из OpenClaw"
|
||||
date: 2026-03-29
|
||||
plan_date:
|
||||
status: planned
|
||||
done_date:
|
||||
context_quote: "API изучен, записан в TOOLS.md. Проблема: нет доступа к LAN из sandbox OpenClaw."
|
||||
tags: ["eversolo", "openclaw", "api"]
|
||||
---
|
||||
|
||||
## Описание
|
||||
|
||||
Добавить инструменты управления Eversolo T8 в OpenClaw.
|
||||
|
||||
## Что сделано
|
||||
|
||||
- Изучен полный API Eversolo T8 (см. [Базу знаний](/kb/eversolo-api/))
|
||||
|
||||
## Проблема
|
||||
|
||||
Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.
|
||||
|
||||
## Возможные решения
|
||||
|
||||
1. Настроить проброс портов
|
||||
2. Запустить OpenClaw без sandbox-ограничений
|
||||
3. Использовать промежуточный proxy-сервис
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: "Настроить интеграцию Ollama с OpenClaw"
|
||||
date: 2026-03-29
|
||||
plan_date:
|
||||
status: planned
|
||||
done_date:
|
||||
context_quote: "Добавлен qwen3.5:9b в openclaw.json, но модель не появилась в openclaw models list. Отложено по решению Антона."
|
||||
tags: ["ollama", "openclaw", "llm"]
|
||||
---
|
||||
|
||||
## Описание
|
||||
|
||||
Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.
|
||||
|
||||
## Проблема
|
||||
|
||||
Модель `qwen3.5:9b` добавлена в конфиг `openclaw.json`, но не отображается в `openclaw models list`.
|
||||
|
||||
## Статус
|
||||
|
||||
Отложено по решению Антона.
|
||||
@@ -0,0 +1,53 @@
|
||||
baseURL = '/'
|
||||
languageCode = 'ru-ru'
|
||||
title = 'docs.a2v.space'
|
||||
theme = 'a2v'
|
||||
relativeURLs = true
|
||||
canonifyURLs = false
|
||||
|
||||
[params]
|
||||
warmPrimary = "#c4623a"
|
||||
warmBg = "#f5f0e8"
|
||||
warmText = "#3d3530"
|
||||
warmAccent = "#d4a853"
|
||||
warmGray = "#6b6560"
|
||||
|
||||
[taxonomies]
|
||||
tag = "tags"
|
||||
category = "categories"
|
||||
status = "statuses"
|
||||
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
name = "Дневник"
|
||||
url = "/diary/"
|
||||
weight = 1
|
||||
[[menu.main]]
|
||||
name = "База знаний"
|
||||
url = "/kb/"
|
||||
weight = 2
|
||||
[[menu.main]]
|
||||
name = "Планы"
|
||||
url = "/plans/"
|
||||
weight = 3
|
||||
[[menu.main]]
|
||||
name = "Инструкции"
|
||||
url = "/guides/"
|
||||
weight = 4
|
||||
[[menu.main]]
|
||||
name = "Креды"
|
||||
url = "/creds/"
|
||||
weight = 5
|
||||
|
||||
[outputs]
|
||||
home = ["HTML", "JSON"]
|
||||
section = ["HTML", "JSON"]
|
||||
|
||||
[markup]
|
||||
[markup.tableOfContents]
|
||||
endLevel = 3
|
||||
ordered = false
|
||||
startLevel = 2
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
@@ -0,0 +1,138 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Categories — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Categories</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Categories on docs.a2v.space</title>
|
||||
<link>/categories/</link>
|
||||
<description>Recent content in Categories on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>docs.a2v.space Basic Auth — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>docs.a2v.space Basic Auth</h1>
|
||||
|
||||
|
||||
<p>Учетные данные для доступа к docs.a2v.space</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-docs-a2v-space-auth">
|
||||
QmFzaWMgQXV0aGVudGljYXRpb24gVXNlcm5hbWU6IGFnYWx0c292YXYgUGFzc3dvcmQ6IE1hZ2FtZXQ3ODchINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjyBOZ2lueCBzZXJ2ZXIgeyBsaXN0ZW4gODA5MTsgc2VydmVyX25hbWUgZG9jcy5hMnYuc3BhY2U7IGF1dGhfYmFzaWMgJiMzNDtSZXN0cmljdGVkIEFjY2VzcyYjMzQ7OyBhdXRoX2Jhc2ljX3VzZXJfZmlsZSAvZXRjL25naW54Ly5odHBhc3N3ZDsgfSDQlNC+0YHRgtGD0L8gVVJMOiBodHRwczovL2RvY3MuYTJ2LnNwYWNlICjRh9C10YDQtdC3IHJldmVyc2UgcHJveHkpIExvY2FsOiBodHRwOi8vbG9jYWxob3N0OjgwOTEgKNC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0LrQuCkgQXV0aDog0LLRgdC10LPQtNCwINGC0YDQtdCx0YPQtdGC0YHRjyDQnNCw0YHRgtC10YAt0L/QsNGA0L7Qu9GMINC00LvRjyDRiNC40YTRgNC+0LLQsNC90LjRjyDQktCw0LbQvdC+OiDQn9Cw0YDQvtC70Ywg0LTQu9GPINGA0LDRgdGI0LjRhNGA0L7QstC60Lgg0YTQsNC50LvQvtCyINCyINGA0LDQt9C00LXQu9C1IGNyZWRzLwpNYXN0ZXIgUGFzc3dvcmQ6IFBvcG9sb2thMTYhINCo0LjRhNGA0L7QstCw0L3QuNC1INCQ0LvQs9C+0YDQuNGC0Lw6IEFFUy0yNTYtR0NNINCl0YDQsNC90LjQu9C40YnQtTogY2xpZW50LXNpZGUgZW5jcnlwdGlvbiDQpNCw0LnQu9GLINGI0LjRhNGA0YPRjtGC0YHRjyDQv9GA0Lgg0YHQvtGF0YDQsNC90LXQvdC40Lgg0KDQsNGB0YjQuNGE0YDQvtCy0YvQstCw0Y7RgtGB0Y8g0L/RgNC4INGH0YLQtdC90LjQuCA=
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-docs-a2v-space-auth" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="docs-a2v-space-auth">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Eversolo Companion PostgreSQL — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>Eversolo Companion PostgreSQL</h1>
|
||||
|
||||
|
||||
<p>Учетные данные для базы данных Eversolo Companion</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-eversolo-companion-postgres">
|
||||
RG9ja2VyIENvbXBvc2Ug0LrRgNC10LTRiyAofi9Qcm9qZWN0cy9ldmVyc29sby1jb21wYW5pb24vZG9ja2VyLWNvbXBvc2UueW1sKSBzZXJ2aWNlczogcG9zdGdyZXM6IGVudmlyb25tZW50OiBQT1NUR1JFU19VU0VSOiBwb3N0Z3JlcyBQT1NUR1JFU19QQVNTV09SRDogcGFzc3dvcmQgUE9TVEdSRVNfREI6IGV2ZXJzb2xvINCb0L7QutCw0LvRjNC90YvQtSDQutGA0LXQtNGLICguZW52INGE0LDQudC7KSBQT1NUR1JFU19VU0VSPXBvc3RncmVzIFBPU1RHUkVTX1BBU1NXT1JEPXBhc3N3b3JkIFBPU1RHUkVTX0RCPWV2ZXJzb2xvINCl0L7RgdGC0LjQvdCzIEhvc3Q6IGxvY2FsaG9zdCBQb3J0OiA1NDMzIERhdGFiYXNlOiBldmVyc29sbyDQkdC10LfQvtC/0LDRgdC90L7RgdGC0Ywg0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRgNCw0LfQvdGL0LUg0L/QsNGA0L7Qu9C4INC00LvRjyBwcm9kdWN0aW9uINCS0LrQu9GO0YfQuNGC0LUgU1NMINC00LvRjyDRg9C00LDQu9C10L3QvdC+0LPQviDQv9C+0LTQutC70Y7Rh9C10L3QuNGPINCg0LXQs9GD0LvRj9GA0L3QviDQtNC10LvQsNC50YLQtSDQsdGN0LrQsNC/0Ysg
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-eversolo-companion-postgres" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="eversolo-companion-postgres">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,316 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Creds — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Креды</h1>
|
||||
<p class="text-muted">Данные зашифрованы. Нажмите "Расшифровать" и введите мастер-пароль.</p>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">docs.a2v.space Basic Auth</h3>
|
||||
|
||||
<p class="card-text">Учетные данные для доступа к docs.a2v.space</p>
|
||||
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-docs-a2v-space-auth">
|
||||
QmFzaWMgQXV0aGVudGljYXRpb24gVXNlcm5hbWU6IGFnYWx0c292YXYgUGFzc3dvcmQ6IE1hZ2FtZXQ3ODchINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjyBOZ2lueCBzZXJ2ZXIgeyBsaXN0ZW4gODA5MTsgc2VydmVyX25hbWUgZG9jcy5hMnYuc3BhY2U7IGF1dGhfYmFzaWMgJiMzNDtSZXN0cmljdGVkIEFjY2VzcyYjMzQ7OyBhdXRoX2Jhc2ljX3VzZXJfZmlsZSAvZXRjL25naW54Ly5odHBhc3N3ZDsgfSDQlNC+0YHRgtGD0L8gVVJMOiBodHRwczovL2RvY3MuYTJ2LnNwYWNlICjRh9C10YDQtdC3IHJldmVyc2UgcHJveHkpIExvY2FsOiBodHRwOi8vbG9jYWxob3N0OjgwOTEgKNC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0LrQuCkgQXV0aDog0LLRgdC10LPQtNCwINGC0YDQtdCx0YPQtdGC0YHRjyDQnNCw0YHRgtC10YAt0L/QsNGA0L7Qu9GMINC00LvRjyDRiNC40YTRgNC+0LLQsNC90LjRjyDQktCw0LbQvdC+OiDQn9Cw0YDQvtC70Ywg0LTQu9GPINGA0LDRgdGI0LjRhNGA0L7QstC60Lgg0YTQsNC50LvQvtCyINCyINGA0LDQt9C00LXQu9C1IGNyZWRzLwpNYXN0ZXIgUGFzc3dvcmQ6IFBvcG9sb2thMTYhINCo0LjRhNGA0L7QstCw0L3QuNC1INCQ0LvQs9C+0YDQuNGC0Lw6IEFFUy0yNTYtR0NNINCl0YDQsNC90LjQu9C40YnQtTogY2xpZW50LXNpZGUgZW5jcnlwdGlvbiDQpNCw0LnQu9GLINGI0LjRhNGA0YPRjtGC0YHRjyDQv9GA0Lgg0YHQvtGF0YDQsNC90LXQvdC40Lgg0KDQsNGB0YjQuNGE0YDQvtCy0YvQstCw0Y7RgtGB0Y8g0L/RgNC4INGH0YLQtdC90LjQuCA=
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-docs-a2v-space-auth" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="docs-a2v-space-auth">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Eversolo Companion PostgreSQL</h3>
|
||||
|
||||
<p class="card-text">Учетные данные для базы данных Eversolo Companion</p>
|
||||
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-eversolo-companion-postgres">
|
||||
RG9ja2VyIENvbXBvc2Ug0LrRgNC10LTRiyAofi9Qcm9qZWN0cy9ldmVyc29sby1jb21wYW5pb24vZG9ja2VyLWNvbXBvc2UueW1sKSBzZXJ2aWNlczogcG9zdGdyZXM6IGVudmlyb25tZW50OiBQT1NUR1JFU19VU0VSOiBwb3N0Z3JlcyBQT1NUR1JFU19QQVNTV09SRDogcGFzc3dvcmQgUE9TVEdSRVNfREI6IGV2ZXJzb2xvINCb0L7QutCw0LvRjNC90YvQtSDQutGA0LXQtNGLICguZW52INGE0LDQudC7KSBQT1NUR1JFU19VU0VSPXBvc3RncmVzIFBPU1RHUkVTX1BBU1NXT1JEPXBhc3N3b3JkIFBPU1RHUkVTX0RCPWV2ZXJzb2xvINCl0L7RgdGC0LjQvdCzIEhvc3Q6IGxvY2FsaG9zdCBQb3J0OiA1NDMzIERhdGFiYXNlOiBldmVyc29sbyDQkdC10LfQvtC/0LDRgdC90L7RgdGC0Ywg0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRgNCw0LfQvdGL0LUg0L/QsNGA0L7Qu9C4INC00LvRjyBwcm9kdWN0aW9uINCS0LrQu9GO0YfQuNGC0LUgU1NMINC00LvRjyDRg9C00LDQu9C10L3QvdC+0LPQviDQv9C+0LTQutC70Y7Rh9C10L3QuNGPINCg0LXQs9GD0LvRj9GA0L3QviDQtNC10LvQsNC50YLQtSDQsdGN0LrQsNC/0Ysg
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-eversolo-companion-postgres" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="eversolo-companion-postgres">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Mac Studio — leadera-api БД (docker-compose)</h3>
|
||||
|
||||
<p class="card-text">PostgreSQL (docker-compose) для Leadera</p>
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> PostgreSQL</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-leadera-db-docker">
|
||||
Ck5ZVks0UEVHd21PSG1BbkdrOElBVWMrbHlGSnRuRUF2WDZaZGRCcm8vSUxSV0hPWEJHWXl3Z2dsRnZRWjE4QkxETGI1RHVBOEdQQUlkQi9Md1RIUlhZTzBLc210bFpRVldHRWVlWGxYQW9FWHBhNXRoZW9PUWhlYmtXNkxtaUt5TkdBVlcyejlySzNuejZObnp0WWRuNDlMdkdNanJIdVI0SXdDTGJsL3BZYTk2Q1BOUm54R0RGbGR1Rmk4bE1Tc3BNMHJCRmkvYlpoTkdoenkzNlZpQ2wrYUtyNVA5Y2xlMFp2TThFOGF2LzZjNUpqZ0R0ODhRRkkzVllkVGFUQ0UwK3VIc1hsbkpON1FnZy9LSDdrRAoKCg==
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-leadera-db-docker" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="leadera-db-docker">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Mac Studio — leadera-api БД (локальная)</h3>
|
||||
|
||||
<p class="card-text">PostgreSQL (Docker) для Leadera</p>
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> PostgreSQL</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-leadera-db-local">
|
||||
CnA3SXc3WTN6Ymoxa0xCY2JPWEdvTzI3b0R3Rjg1QWh4Qlc3c2FUNTM4aHhpMG9nSnB5RmVNNDlHRHVMSHp4dXlrbnZkTkMvcngzdGI0QUZuR2tDZUhTcnJDbWorVks4Wnh0N3VqZXVqVkpTUnVPZWVVbHNxa0hkbG1haVhsMktRa25ySXNxVkNpM1RubjBWNXFjRnh2bysxS3RjK3N1ckY2YkJwV3JUSHpXVjVtTHRXVmZENkM2a3Z2UC9VRmxkRkJENnYrRlFzNzl5Zm9PZS9qL2JVcnRwdDZ2NVZuZGJiQm1oVUFRY3kxQlYycnBYeE8zNzNkVGNMUTZjb1JXa3QvUkZvCgoK
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-leadera-db-local" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="leadera-db-local">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">VPN VPS</h3>
|
||||
|
||||
<p class="card-text">VPN сервер (Amnezia)</p>
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> VPN</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-vpn-vps">
|
||||
CllFSTE2TkFKNzhkM2xtU2EvbGNhOFp4Y3p0K3U2R3lNVVlIZHVYNDdWb0ZRZGowSXhvemQ4UjZ5WG9CN2VNK0FqaEN0TkdrT3hHbE9qMnM3M0FCT0JqTEVJVkloRDRaK3hUeXpkdGFoNFZweUxvbHRZT2VOWXNuYklJRkFSZEYvRkJZcTVDT1hvaGhYczMzSzVvenpucnREZC9hd2JLTWpsL3NiUXFqWEFaK0EzWlNvYjYvNXVVK2ZGS2V0WExSNnY0WkxBWVE1N2lpRDIxSW1TTFNnZ3d2K3JKZ0s1WHlQREtFUEQ0TjVuT3NpRHJMZ291a1ZCTXZnSjU0UHFmUHAySG5pKzJ0ZEtPbE1uT0cybnBUdXU0U2t5QUxjZkZhcgoKCg==
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-vpn-vps" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="vpn-vps">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card creds-card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">VPS reg.ru</h3>
|
||||
|
||||
<p class="card-text">VPS хостинг (реверс-прокси)</p>
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> VPS</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-vps-reg-ru">
|
||||
CklwWVhMTXRnQ0ZsR1E1NTBEWkNManEzN1Zzbk5xTDA4Um4wM2lSUzdrUTdvekJaTnNpWnlTRnpEQXZZaDR4SUh5dFJEeTBTejBLR1VYZWtyMFMrY05pSnNtdFo4a2owUGQwSmhldmh4VE1aRjJraEZ2cy9MRldvVEw1WndBSjM0eS9xZkx3MmdhV1g5MFZaRHUwd08rS2VBUWVYaHJXbW9sLzJ6VWxmV1gxQWloeVlxRDJ2UnoraDJGY2pEOHViWU9YRzM1UHlYN09sVjFIUFhnRHY1WC9iRk5yeHpQYzg2N1VPd0I0YUd4WTlhCgoK
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-vps-reg-ru" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-2 decrypt-btn" data-id="vps-reg-ru">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
[{"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":"\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":"\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/"}]
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Mac Studio — leadera-api БД (docker-compose) — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>Mac Studio — leadera-api БД (docker-compose)</h1>
|
||||
|
||||
|
||||
<p>PostgreSQL (docker-compose) для Leadera</p>
|
||||
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> PostgreSQL</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-leadera-db-docker">
|
||||
Ck5ZVks0UEVHd21PSG1BbkdrOElBVWMrbHlGSnRuRUF2WDZaZGRCcm8vSUxSV0hPWEJHWXl3Z2dsRnZRWjE4QkxETGI1RHVBOEdQQUlkQi9Md1RIUlhZTzBLc210bFpRVldHRWVlWGxYQW9FWHBhNXRoZW9PUWhlYmtXNkxtaUt5TkdBVlcyejlySzNuejZObnp0WWRuNDlMdkdNanJIdVI0SXdDTGJsL3BZYTk2Q1BOUm54R0RGbGR1Rmk4bE1Tc3BNMHJCRmkvYlpoTkdoenkzNlZpQ2wrYUtyNVA5Y2xlMFp2TThFOGF2LzZjNUpqZ0R0ODhRRkkzVllkVGFUQ0UwK3VIc1hsbkpON1FnZy9LSDdrRAoKCg==
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-leadera-db-docker" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="leadera-db-docker">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Mac Studio — leadera-api БД (локальная) — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>Mac Studio — leadera-api БД (локальная)</h1>
|
||||
|
||||
|
||||
<p>PostgreSQL (Docker) для Leadera</p>
|
||||
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> PostgreSQL</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-leadera-db-local">
|
||||
CnA3SXc3WTN6Ymoxa0xCY2JPWEdvTzI3b0R3Rjg1QWh4Qlc3c2FUNTM4aHhpMG9nSnB5RmVNNDlHRHVMSHp4dXlrbnZkTkMvcngzdGI0QUZuR2tDZUhTcnJDbWorVks4Wnh0N3VqZXVqVkpTUnVPZWVVbHNxa0hkbG1haVhsMktRa25ySXNxVkNpM1RubjBWNXFjRnh2bysxS3RjK3N1ckY2YkJwV3JUSHpXVjVtTHRXVmZENkM2a3Z2UC9VRmxkRkJENnYrRlFzNzl5Zm9PZS9qL2JVcnRwdDZ2NVZuZGJiQm1oVUFRY3kxQlYycnBYeE8zNzNkVGNMUTZjb1JXa3QvUkZvCgoK
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-leadera-db-local" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="leadera-db-local">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>VPN VPS — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>VPN VPS</h1>
|
||||
|
||||
|
||||
<p>VPN сервер (Amnezia)</p>
|
||||
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> VPN</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-vpn-vps">
|
||||
CllFSTE2TkFKNzhkM2xtU2EvbGNhOFp4Y3p0K3U2R3lNVVlIZHVYNDdWb0ZRZGowSXhvemQ4UjZ5WG9CN2VNK0FqaEN0TkdrT3hHbE9qMnM3M0FCT0JqTEVJVkloRDRaK3hUeXpkdGFoNFZweUxvbHRZT2VOWXNuYklJRkFSZEYvRkJZcTVDT1hvaGhYczMzSzVvenpucnREZC9hd2JLTWpsL3NiUXFqWEFaK0EzWlNvYjYvNXVVK2ZGS2V0WExSNnY0WkxBWVE1N2lpRDIxSW1TTFNnZ3d2K3JKZ0s1WHlQREtFUEQ0TjVuT3NpRHJMZ291a1ZCTXZnSjU0UHFmUHAySG5pKzJ0ZEtPbE1uT0cybnBUdXU0U2t5QUxjZkZhcgoKCg==
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-vpn-vps" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="vpn-vps">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>VPS reg.ru — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Все креды</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Сервисы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=postgresql">PostgreSQL</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vpn">VPN</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/?service=vps">VPS</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content creds-card">
|
||||
<h1>VPS reg.ru</h1>
|
||||
|
||||
|
||||
<p>VPS хостинг (реверс-прокси)</p>
|
||||
|
||||
|
||||
|
||||
<p class="text-muted mb-2"><strong>Сервис:</strong> VPS</p>
|
||||
|
||||
|
||||
<div class="encrypted-data" id="encrypted-vps-reg-ru">
|
||||
CklwWVhMTXRnQ0ZsR1E1NTBEWkNManEzN1Zzbk5xTDA4Um4wM2lSUzdrUTdvekJaTnNpWnlTRnpEQXZZaDR4SUh5dFJEeTBTejBLR1VYZWtyMFMrY05pSnNtdFo4a2owUGQwSmhldmh4VE1aRjJraEZ2cy9MRldvVEw1WndBSjM0eS9xZkx3MmdhV1g5MFZaRHUwd08rS2VBUWVYaHJXbW9sLzJ6VWxmV1gxQWloeVlxRDJ2UnoraDJGY2pEOHViWU9YRzM1UHlYN09sVjFIUFhnRHY1WC9iRk5yeHpQYzg2N1VPd0I0YUd4WTlhCgoK
|
||||
</div>
|
||||
|
||||
<div class="decrypted-fields" id="decrypted-vps-reg-ru" style="display: none;">
|
||||
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary mt-3 decrypt-btn" data-id="vps-reg-ru">
|
||||
Расшифровать
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,413 @@
|
||||
:root {
|
||||
--warm-bg: #f5f0e8;
|
||||
--warm-primary: #c4623a;
|
||||
--warm-text: #3d3530;
|
||||
--warm-gray: #6b6560;
|
||||
--warm-accent: #d4a853;
|
||||
--warm-white: #fffdf9;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--warm-bg);
|
||||
color: var(--warm-text);
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 1rem;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.site-header {
|
||||
background-color: var(--warm-primary);
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
.site-header .navbar-brand {
|
||||
color: var(--warm-white);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.site-header .nav-link {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
padding: 0.5rem 1rem;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.site-header .nav-link:hover,
|
||||
.site-header .nav-link.active {
|
||||
color: var(--warm-white);
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
border-color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
.navbar-toggler-icon {
|
||||
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
||||
}
|
||||
|
||||
.search-form input {
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.search-form input:focus {
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 0 2px var(--warm-accent);
|
||||
}
|
||||
|
||||
/* Search Results */
|
||||
.search-results {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
right: 0;
|
||||
left: 0;
|
||||
background: var(--warm-white);
|
||||
border-top: 1px solid var(--warm-gray);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
z-index: 1000;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.search-results-content {
|
||||
padding: 1rem;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.search-results ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.search-results li {
|
||||
padding: 0.5rem 0;
|
||||
border-bottom: 1px solid var(--warm-bg);
|
||||
}
|
||||
|
||||
.search-results li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.search-results a {
|
||||
color: var(--warm-text);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.search-results a:hover {
|
||||
color: var(--warm-primary);
|
||||
}
|
||||
|
||||
/* Sidebar */
|
||||
.sidebar {
|
||||
background-color: var(--warm-white);
|
||||
border-right: 1px solid #e0d8cc;
|
||||
min-height: calc(100vh - 60px);
|
||||
padding: 1.5rem 1rem;
|
||||
}
|
||||
|
||||
.sidebar-content h6 {
|
||||
color: var(--warm-primary);
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.75rem;
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.sidebar-content .nav-link {
|
||||
color: var(--warm-text);
|
||||
padding: 0.375rem 0.75rem;
|
||||
border-radius: 4px;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.sidebar-content .nav-link:hover {
|
||||
background-color: var(--warm-bg);
|
||||
}
|
||||
|
||||
/* Main Content */
|
||||
.main-content {
|
||||
padding: 2rem;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* Cards */
|
||||
.card {
|
||||
background-color: var(--warm-white);
|
||||
border: 1px solid #e0d8cc;
|
||||
border-radius: 8px;
|
||||
transition: box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
.card-title a {
|
||||
color: var(--warm-text);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.card-title a:hover {
|
||||
color: var(--warm-primary);
|
||||
}
|
||||
|
||||
/* Plan Cards */
|
||||
.plan-card {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.plan-card .status-badge {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.plan-card.planned {
|
||||
border-left: 4px solid var(--warm-accent);
|
||||
}
|
||||
|
||||
.plan-card.in-progress {
|
||||
border-left: 4px solid #e67e22;
|
||||
}
|
||||
|
||||
.plan-card.done {
|
||||
border-left: 4px solid #27ae60;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.plan-card.cancelled {
|
||||
border-left: 4px solid #e74c3c;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* Diary Timeline */
|
||||
.diary-timeline {
|
||||
position: relative;
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
.diary-timeline::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 2px;
|
||||
background-color: var(--warm-primary);
|
||||
}
|
||||
|
||||
.diary-entry {
|
||||
position: relative;
|
||||
margin-bottom: 2rem;
|
||||
padding-bottom: 1.5rem;
|
||||
border-bottom: 1px solid #e0d8cc;
|
||||
}
|
||||
|
||||
.diary-entry:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.diary-entry::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: -2rem;
|
||||
top: 0.5rem;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background-color: var(--warm-primary);
|
||||
border-radius: 50%;
|
||||
transform: translateX(-5px);
|
||||
}
|
||||
|
||||
.diary-entry .time {
|
||||
color: var(--warm-gray);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.diary-date {
|
||||
color: var(--warm-primary);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Credentials */
|
||||
.creds-card {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.creds-card .encrypted-data {
|
||||
font-family: monospace;
|
||||
background: var(--warm-bg);
|
||||
padding: 1rem;
|
||||
border-radius: 4px;
|
||||
word-break: break-all;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.creds-card .decrypted-fields {
|
||||
background: var(--warm-bg);
|
||||
padding: 1rem;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.creds-card .field-row {
|
||||
display: flex;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.creds-card .field-label {
|
||||
font-weight: 600;
|
||||
min-width: 100px;
|
||||
color: var(--warm-gray);
|
||||
}
|
||||
|
||||
.creds-card .field-value {
|
||||
flex: 1;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* Article styles */
|
||||
.article-content {
|
||||
background-color: var(--warm-white);
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #e0d8cc;
|
||||
}
|
||||
|
||||
.article-content h1,
|
||||
.article-content h2,
|
||||
.article-content h3 {
|
||||
color: var(--warm-text);
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.article-content h1 {
|
||||
margin-top: 0;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 2px solid var(--warm-primary);
|
||||
}
|
||||
|
||||
.article-content table {
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
background: var(--warm-white);
|
||||
}
|
||||
|
||||
.article-content th {
|
||||
background-color: var(--warm-primary);
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.article-content th,
|
||||
.article-content td {
|
||||
padding: 0.75rem;
|
||||
border: 1px solid #e0d8cc;
|
||||
}
|
||||
|
||||
.article-content code {
|
||||
background-color: var(--warm-bg);
|
||||
padding: 0.2rem 0.4rem;
|
||||
border-radius: 3px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.article-content pre {
|
||||
background-color: var(--warm-text);
|
||||
color: var(--warm-bg);
|
||||
padding: 1rem;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.article-content pre code {
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.article-content a {
|
||||
color: var(--warm-primary);
|
||||
}
|
||||
|
||||
.article-content a:hover {
|
||||
color: var(--warm-accent);
|
||||
}
|
||||
|
||||
/* Tags */
|
||||
.tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.tag {
|
||||
background-color: var(--warm-bg);
|
||||
color: var(--warm-gray);
|
||||
padding: 0.25rem 0.75rem;
|
||||
border-radius: 20px;
|
||||
font-size: 0.8rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tag:hover {
|
||||
background-color: var(--warm-primary);
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.site-footer {
|
||||
background-color: var(--warm-text);
|
||||
color: var(--warm-bg);
|
||||
padding: 1rem 0;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 767.98px) {
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
top: 60px;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 1000;
|
||||
width: 280px;
|
||||
transform: translateX(-100%);
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.sidebar.show {
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
.main-content {
|
||||
width: 100%;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.search-form {
|
||||
width: 100%;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Context Quote */
|
||||
.context-quote {
|
||||
background-color: var(--warm-bg);
|
||||
border-left: 4px solid var(--warm-accent);
|
||||
padding: 1rem;
|
||||
margin-top: 1rem;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.context-quote cite {
|
||||
display: block;
|
||||
text-align: right;
|
||||
margin-top: 0.5rem;
|
||||
font-style: normal;
|
||||
color: var(--warm-gray);
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>29 марта 2026 — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Все записи</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/eversolo/">eversolo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/hugo/">hugo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docs/">docs</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/identity/">identity</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/infrastructure/">infrastructure</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/companion/">companion</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>29 марта 2026</h1>
|
||||
<p class="diary-date">29.03.2026</p>
|
||||
|
||||
<h2 id="timeline">Timeline</h2>
|
||||
<ul>
|
||||
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
|
||||
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
|
||||
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
|
||||
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
|
||||
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
|
||||
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
|
||||
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
|
||||
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
|
||||
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
|
||||
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
|
||||
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
|
||||
</ul>
|
||||
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
|
||||
<p><strong>Backend (Go + Gin):</strong></p>
|
||||
<ul>
|
||||
<li>Репозиторий: ~/Projects/eversolo-companion</li>
|
||||
<li>Состояние: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller</li>
|
||||
</ul>
|
||||
<p><strong>Frontend (Angular 17):</strong></p>
|
||||
<ul>
|
||||
<li>Состояние: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов</li>
|
||||
<li>Dev server: pm2 (eversolo-fe), порт 8096</li>
|
||||
</ul>
|
||||
<p><strong>Инфраструктура:</strong></p>
|
||||
<ul>
|
||||
<li>PostgreSQL: Docker, порт 5433, миграции готовы</li>
|
||||
<li>Docker Compose: рабочий (postgres + api + frontend)</li>
|
||||
</ul>
|
||||
<p><strong>Проблема:</strong> нет доступа к Eversolo из OpenClaw sandbox (192.168.0.156)</p>
|
||||
<ul>
|
||||
<li>Решение: настройка tools.elevated.allowFrom.webchat или запуск через launchd</li>
|
||||
</ul>
|
||||
<p><strong>Следующие шаги:</strong> после решения сети — этапы 3-9 (библиотека sync, плейлисты, scrobbler, обложки)</p>
|
||||
|
||||
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../../tags/angular/" class="tag">angular</a>
|
||||
|
||||
<a href="../../tags/go/" class="tag">go</a>
|
||||
|
||||
<a href="../../tags/docker/" class="tag">docker</a>
|
||||
|
||||
<a href="../../tags/eversolo/" class="tag">eversolo</a>
|
||||
|
||||
<a href="../../tags/hugo/" class="tag">hugo</a>
|
||||
|
||||
<a href="../../tags/docs/" class="tag">docs</a>
|
||||
|
||||
<a href="../../tags/identity/" class="tag">identity</a>
|
||||
|
||||
<a href="../../tags/infrastructure/" class="tag">infrastructure</a>
|
||||
|
||||
<a href="../../tags/companion/" class="tag">companion</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,205 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Diaries — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../diary/">Все записи</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/docker/">docker</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/eversolo/">eversolo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/hugo/">hugo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/docs/">docs</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/identity/">identity</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/infrastructure/">infrastructure</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/companion/">companion</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Дневник</h1>
|
||||
|
||||
<div class="diary-timeline">
|
||||
|
||||
|
||||
<div class="diary-entry">
|
||||
<div class="diary-date">29.03.2026</div>
|
||||
<h3><a href="../diary/2026-03-29/">29 марта 2026</a></h3>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/angular/" class="tag">angular</a>
|
||||
|
||||
<a href="../tags/go/" class="tag">go</a>
|
||||
|
||||
<a href="../tags/docker/" class="tag">docker</a>
|
||||
|
||||
<a href="../tags/eversolo/" class="tag">eversolo</a>
|
||||
|
||||
<a href="../tags/hugo/" class="tag">hugo</a>
|
||||
|
||||
<a href="../tags/docs/" class="tag">docs</a>
|
||||
|
||||
<a href="../tags/identity/" class="tag">identity</a>
|
||||
|
||||
<a href="../tags/infrastructure/" class="tag">infrastructure</a>
|
||||
|
||||
<a href="../tags/companion/" class="tag">companion</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
[{"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/"}]
|
||||
@@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Подключение claw.a2v.space (OpenClaw) — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Подключение claw.a2v.space (OpenClaw)</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/openclaw/" class="tag">openclaw</a>
|
||||
|
||||
<a href="../../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (192.168.0.37:18789)
|
||||
→ autossh SSH-туннель
|
||||
→ VPS 95.163.232.9:8080
|
||||
→ nginx HTTPS
|
||||
→ https://claw.a2v.space
|
||||
</code></pre><h2 id="шаги-настройки">Шаги настройки</h2>
|
||||
<h3 id="1-dns">1. DNS</h3>
|
||||
<p>A-запись <code>claw.a2v.space</code> → <code>95.163.232.9</code></p>
|
||||
<p>NS-серверы: <code>ns1.hosting.reg.ru</code>, <code>ns2.hosting.reg.ru</code></p>
|
||||
<h3 id="2-mac-studio--openclaw">2. Mac Studio — OpenClaw</h3>
|
||||
<ul>
|
||||
<li>Порт: 18789</li>
|
||||
<li>Конфиг: <code>~/.openclaw/openclaw.json</code></li>
|
||||
</ul>
|
||||
<h3 id="3-ssh-туннель-launchd">3. SSH-туннель (launchd)</h3>
|
||||
<p>Plist: <code>~/Library/LaunchAgents/com.openclaw.sshtunnel.plist</code></p>
|
||||
<p>Ключевой флаг: <code>-R 8080:localhost:18789</code></p>
|
||||
<h3 id="4-vps--nginx-конфиг">4. VPS — nginx конфиг</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">claw.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">claw.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/claw.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/claw.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8080</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h3 id="5-ssl-сертификат">5. SSL-сертификат</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d claw.a2v.space
|
||||
</span></span></code></pre></div><h3 id="6-openclaw-config">6. OpenClaw config</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">"allowedOrigins"</span>: [<span style="color:#e6db74">"https://claw.a2v.space"</span>],
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">"trustedProxies"</span>: [<span style="color:#e6db74">"127.0.0.1"</span>]
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,293 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Подключение code.a2v.space (OpenCode) — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Подключение code.a2v.space (OpenCode)</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/opencode/" class="tag">opencode</a>
|
||||
|
||||
<a href="../../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (localhost:4096)
|
||||
→ autossh SSH-туннель (-R 8081:localhost:4096)
|
||||
→ VPS 95.163.232.9:8081
|
||||
→ nginx HTTPS
|
||||
→ https://code.a2v.space
|
||||
</code></pre><h2 id="параметры">Параметры</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Параметр</th>
|
||||
<th>Значение</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Локальный порт</td>
|
||||
<td>4096</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Туннель порт</td>
|
||||
<td>8081</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pm2 процесс</td>
|
||||
<td><code>opencode</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SSL сертификат</td>
|
||||
<td><code>/etc/letsencrypt/live/code.a2v.space/</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="nginx-конфиг">nginx конфиг</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">code.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">code.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/code.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/code.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8081</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_http_version</span> <span style="color:#ae81ff">1</span><span style="color:#e6db74">.1</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Upgrade</span> $http_upgrade;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Connection</span> <span style="color:#e6db74">"upgrade"</span>;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h2 id="ssl-сертификат">SSL-сертификат</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d code.a2v.space
|
||||
</span></span></code></pre></div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,573 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Guides — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Инструкции</h1>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../guides/ssh-tunnels-vps/">SSH туннели для VPS reverse proxy</a></h3>
|
||||
<p class="card-text"><h2 id="настройка-ssh-туннелей">Настройка SSH туннелей</h2>
|
||||
<h3 id="vps-regru-951632329">VPS reg.ru (95.163.232.9)</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># На Mac Studio: создать туннель для каждого сервиса</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8080:localhost:8080 root@95.163.232.9 <span style="color:#75715e"># leadera-api</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8081:localhost:4096 root@95.163.232.9 <span style="color:#75715e"># opencode</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8082:localhost:4200 root@95.163.232.9 <span style="color:#75715e"># leadera-fe</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8083:localhost:8080 root@95.163.232.9 <span style="color:#75715e"># docs-a2v</span>
|
||||
</span></span></code></pre></div><h3 id="настройка-launchd-plist">Настройка launchd plist</h3>
|
||||
<p><strong>Файл</strong>: <code>~/Library/LaunchAgents/com.openclaw.sshtunnel.plist</code></p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e"><?xml version="1.0" encoding="UTF-8"?></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"><plist</span> <span style="color:#a6e22e">version=</span><span style="color:#e6db74">"1.0"</span><span style="color:#f92672">></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"><dict></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>Label<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>com.openclaw.sshtunnel<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>ProgramArguments<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><array></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>ssh<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-N<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8080:localhost:8080<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>root@95.163.232.9<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"></array></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>RunAtLoad<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><true/></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>KeepAlive<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><true/></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"></dict></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"></plist></span>
|
||||
</span></span></code></pre></div><h3 id="автозапуск">Автозапуск</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Загрузить plist</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Проверить статус</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl list | grep sshtunnel
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Удалить (при необходимости)</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl unload ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
</span></span></code></pre></div><h2 id="доступ-к-сервисам">Доступ к сервисам</h2>
|
||||
<p>Через reverse proxy на VPS:</p></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../tags/tunnel/" class="tag">tunnel</a>
|
||||
|
||||
<a href="../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../guides/vps-reverse-proxy/">Настройка VPS как реверс-прокси</a></h3>
|
||||
<p class="card-text"><h2 id="общая-схема">Общая схема</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (локальная сеть)
|
||||
→ autossh (SSH-туннели)
|
||||
→ VPS 95.163.232.9 (Debian)
|
||||
→ nginx (HTTPS reverse proxy)
|
||||
→ интернет
|
||||
</code></pre><h2 id="что-нужно-на-vps">Что нужно на VPS</h2>
|
||||
<h3 id="1-установленные-пакеты">1. Установленные пакеты</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>apt update
|
||||
</span></span><span style="display:flex;"><span>apt install nginx certbot python3-certbot-nginx
|
||||
</span></span></code></pre></div><h3 id="2-ssh-доступ">2. SSH-доступ</h3>
|
||||
<ul>
|
||||
<li>Авторизация только по ключам</li>
|
||||
<li>Публичный ключ с Mac Studio добавлен в <code>/root/.ssh/authorized_keys</code></li>
|
||||
</ul>
|
||||
<h3 id="3-nginx">3. nginx</h3>
|
||||
<p>Для каждого домена создать server block:</p>
|
||||
<ul>
|
||||
<li>HTTP → редирект на HTTPS</li>
|
||||
<li>HTTPS с SSL-сертификатом Let’s Encrypt</li>
|
||||
<li><code>proxy_pass</code> на localhost-порт туннеля</li>
|
||||
</ul>
|
||||
<p>Пример структуры:</p></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
<a href="../tags/devops/" class="tag">devops</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../guides/claw-a2v-space/">Подключение claw.a2v.space (OpenClaw)</a></h3>
|
||||
<p class="card-text"><h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (192.168.0.37:18789)
|
||||
→ autossh SSH-туннель
|
||||
→ VPS 95.163.232.9:8080
|
||||
→ nginx HTTPS
|
||||
→ https://claw.a2v.space
|
||||
</code></pre><h2 id="шаги-настройки">Шаги настройки</h2>
|
||||
<h3 id="1-dns">1. DNS</h3>
|
||||
<p>A-запись <code>claw.a2v.space</code> → <code>95.163.232.9</code></p>
|
||||
<p>NS-серверы: <code>ns1.hosting.reg.ru</code>, <code>ns2.hosting.reg.ru</code></p>
|
||||
<h3 id="2-mac-studio--openclaw">2. Mac Studio — OpenClaw</h3>
|
||||
<ul>
|
||||
<li>Порт: 18789</li>
|
||||
<li>Конфиг: <code>~/.openclaw/openclaw.json</code></li>
|
||||
</ul>
|
||||
<h3 id="3-ssh-туннель-launchd">3. SSH-туннель (launchd)</h3>
|
||||
<p>Plist: <code>~/Library/LaunchAgents/com.openclaw.sshtunnel.plist</code></p>
|
||||
<p>Ключевой флаг: <code>-R 8080:localhost:18789</code></p>
|
||||
<h3 id="4-vps--nginx-конфиг">4. VPS — nginx конфиг</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">claw.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">claw.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/claw.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/claw.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8080</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h3 id="5-ssl-сертификат">5. SSL-сертификат</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d claw.a2v.space
|
||||
</span></span></code></pre></div><h3 id="6-openclaw-config">6. OpenClaw config</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">"allowedOrigins"</span>: [<span style="color:#e6db74">"https://claw.a2v.space"</span>],
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">"trustedProxies"</span>: [<span style="color:#e6db74">"127.0.0.1"</span>]
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/openclaw/" class="tag">openclaw</a>
|
||||
|
||||
<a href="../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../guides/code-a2v-space/">Подключение code.a2v.space (OpenCode)</a></h3>
|
||||
<p class="card-text"><h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (localhost:4096)
|
||||
→ autossh SSH-туннель (-R 8081:localhost:4096)
|
||||
→ VPS 95.163.232.9:8081
|
||||
→ nginx HTTPS
|
||||
→ https://code.a2v.space
|
||||
</code></pre><h2 id="параметры">Параметры</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Параметр</th>
|
||||
<th>Значение</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Локальный порт</td>
|
||||
<td>4096</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Туннель порт</td>
|
||||
<td>8081</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>pm2 процесс</td>
|
||||
<td><code>opencode</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SSL сертификат</td>
|
||||
<td><code>/etc/letsencrypt/live/code.a2v.space/</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="nginx-конфиг">nginx конфиг</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">code.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">code.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/code.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/code.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8081</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_http_version</span> <span style="color:#ae81ff">1</span><span style="color:#e6db74">.1</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Upgrade</span> $http_upgrade;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Connection</span> <span style="color:#e6db74">"upgrade"</span>;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h2 id="ssl-сертификат">SSL-сертификат</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d code.a2v.space
|
||||
</span></span></code></pre></div></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/opencode/" class="tag">opencode</a>
|
||||
|
||||
<a href="../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../guides/sand-a2v-space/">Подключение sand.a2v.space (Leadera Project)</a></h3>
|
||||
<p class="card-text"><h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>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
|
||||
</code></pre><h2 id="параметры">Параметры</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Компонент</th>
|
||||
<th>Локальный порт</th>
|
||||
<th>Туннель порт</th>
|
||||
<th>pm2 имя</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Frontend (Angular)</td>
|
||||
<td>4200</td>
|
||||
<td>8082</td>
|
||||
<td>leadera-fe</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Backend (Go)</td>
|
||||
<td>8080</td>
|
||||
<td>8083</td>
|
||||
<td>leadera-api</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>SSL сертификат: <code>/etc/letsencrypt/live/sand.a2v.space/</code></p>
|
||||
<h2 id="nginx-конфиг">nginx конфиг</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">sand.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">sand.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/sand.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/sand.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/api</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8083</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8082</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h2 id="база-данных">База данных</h2>
|
||||
<p>PostgreSQL 16 в Docker через Colima:</p></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/angular/" class="tag">angular</a>
|
||||
|
||||
<a href="../tags/go/" class="tag">go</a>
|
||||
|
||||
<a href="../tags/docker/" class="tag">docker</a>
|
||||
|
||||
<a href="../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,308 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Подключение sand.a2v.space (Leadera Project) — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Подключение sand.a2v.space (Leadera Project)</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/angular/" class="tag">angular</a>
|
||||
|
||||
<a href="../../tags/go/" class="tag">go</a>
|
||||
|
||||
<a href="../../tags/docker/" class="tag">docker</a>
|
||||
|
||||
<a href="../../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 id="архитектура">Архитектура</h2>
|
||||
<pre tabindex="0"><code>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
|
||||
</code></pre><h2 id="параметры">Параметры</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Компонент</th>
|
||||
<th>Локальный порт</th>
|
||||
<th>Туннель порт</th>
|
||||
<th>pm2 имя</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Frontend (Angular)</td>
|
||||
<td>4200</td>
|
||||
<td>8082</td>
|
||||
<td>leadera-fe</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Backend (Go)</td>
|
||||
<td>8080</td>
|
||||
<td>8083</td>
|
||||
<td>leadera-api</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>SSL сертификат: <code>/etc/letsencrypt/live/sand.a2v.space/</code></p>
|
||||
<h2 id="nginx-конфиг">nginx конфиг</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">80</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">sand.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">return</span> <span style="color:#ae81ff">301</span> <span style="color:#e6db74">https://</span>$server_name$request_uri;
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">443</span> <span style="color:#e6db74">ssl</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">sand.a2v.space</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate</span> <span style="color:#e6db74">/etc/letsencrypt/live/sand.a2v.space/fullchain.pem</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">ssl_certificate_key</span> <span style="color:#e6db74">/etc/letsencrypt/live/sand.a2v.space/privkey.pem</span>;
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/api</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8083</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">location</span> <span style="color:#e6db74">/</span> {
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_pass</span> <span style="color:#e6db74">http://127.0.0.1:8082</span>;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">Host</span> $host;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Real-IP</span> $remote_addr;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-For</span> $proxy_add_x_forwarded_for;
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">proxy_set_header</span> <span style="color:#e6db74">X-Forwarded-Proto</span> $scheme;
|
||||
</span></span><span style="display:flex;"><span> }
|
||||
</span></span><span style="display:flex;"><span>}
|
||||
</span></span></code></pre></div><h2 id="база-данных">База данных</h2>
|
||||
<p>PostgreSQL 16 в Docker через Colima:</p>
|
||||
<ul>
|
||||
<li>Container: <code>app-leadera-db</code></li>
|
||||
<li>Port: 5432</li>
|
||||
</ul>
|
||||
<h2 id="ssl-сертификат">SSL-сертификат</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d sand.a2v.space
|
||||
</span></span></code></pre></div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,283 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>SSH туннели для VPS reverse proxy — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>SSH туннели для VPS reverse proxy</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../../tags/tunnel/" class="tag">tunnel</a>
|
||||
|
||||
<a href="../../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 id="настройка-ssh-туннелей">Настройка SSH туннелей</h2>
|
||||
<h3 id="vps-regru-951632329">VPS reg.ru (95.163.232.9)</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># На Mac Studio: создать туннель для каждого сервиса</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8080:localhost:8080 root@95.163.232.9 <span style="color:#75715e"># leadera-api</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8081:localhost:4096 root@95.163.232.9 <span style="color:#75715e"># opencode</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8082:localhost:4200 root@95.163.232.9 <span style="color:#75715e"># leadera-fe</span>
|
||||
</span></span><span style="display:flex;"><span>ssh -N -R 8083:localhost:8080 root@95.163.232.9 <span style="color:#75715e"># docs-a2v</span>
|
||||
</span></span></code></pre></div><h3 id="настройка-launchd-plist">Настройка launchd plist</h3>
|
||||
<p><strong>Файл</strong>: <code>~/Library/LaunchAgents/com.openclaw.sshtunnel.plist</code></p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e"><?xml version="1.0" encoding="UTF-8"?></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"><plist</span> <span style="color:#a6e22e">version=</span><span style="color:#e6db74">"1.0"</span><span style="color:#f92672">></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"><dict></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>Label<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>com.openclaw.sshtunnel<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>ProgramArguments<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><array></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>ssh<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-N<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8080:localhost:8080<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>root@95.163.232.9<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"></array></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>RunAtLoad<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><true/></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><key></span>KeepAlive<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><true/></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"></dict></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"></plist></span>
|
||||
</span></span></code></pre></div><h3 id="автозапуск">Автозапуск</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Загрузить plist</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Проверить статус</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl list | grep sshtunnel
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Удалить (при необходимости)</span>
|
||||
</span></span><span style="display:flex;"><span>launchctl unload ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
</span></span></code></pre></div><h2 id="доступ-к-сервисам">Доступ к сервисам</h2>
|
||||
<p>Через reverse proxy на VPS:</p>
|
||||
<ul>
|
||||
<li><strong>code.a2v.space</strong>: порт 8080 → Mac Studio:4096</li>
|
||||
<li><strong>claw.a2v.space</strong>: порт 8081 → Mac Studio:8080 (leadera-api)</li>
|
||||
<li><strong>sand.a2v.space</strong>: порт 8082 → Mac Studio:4200 (leadera-fe)</li>
|
||||
<li><strong>docs.a2v.space</strong>: порт 8083 → Mac Studio:8080 (docs-a2v)</li>
|
||||
</ul>
|
||||
<h2 id="ssl">SSL</h2>
|
||||
<p>Все сервисы используют Let’s Encrypt сертификаты:</p>
|
||||
<ul>
|
||||
<li>Путь: <code>/etc/letsencrypt/live/{claw,code,sand}.a2v.space/</code></li>
|
||||
<li>Автопродление через certbot</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,297 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Настройка VPS как реверс-прокси — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Все инструкции</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/ssh/">ssh</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/tunnel/">tunnel</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/vps/">vps</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/reverse-proxy/">reverse-proxy</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/nginx/">nginx</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/devops/">devops</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/openclaw/">openclaw</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/opencode/">opencode</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/angular/">angular</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/go/">go</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/docker/">docker</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Настройка VPS как реверс-прокси</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/vps/" class="tag">vps</a>
|
||||
|
||||
<a href="../../tags/nginx/" class="tag">nginx</a>
|
||||
|
||||
<a href="../../tags/ssh/" class="tag">ssh</a>
|
||||
|
||||
<a href="../../tags/reverse-proxy/" class="tag">reverse-proxy</a>
|
||||
|
||||
<a href="../../tags/devops/" class="tag">devops</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 id="общая-схема">Общая схема</h2>
|
||||
<pre tabindex="0"><code>Mac Studio (локальная сеть)
|
||||
→ autossh (SSH-туннели)
|
||||
→ VPS 95.163.232.9 (Debian)
|
||||
→ nginx (HTTPS reverse proxy)
|
||||
→ интернет
|
||||
</code></pre><h2 id="что-нужно-на-vps">Что нужно на VPS</h2>
|
||||
<h3 id="1-установленные-пакеты">1. Установленные пакеты</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>apt update
|
||||
</span></span><span style="display:flex;"><span>apt install nginx certbot python3-certbot-nginx
|
||||
</span></span></code></pre></div><h3 id="2-ssh-доступ">2. SSH-доступ</h3>
|
||||
<ul>
|
||||
<li>Авторизация только по ключам</li>
|
||||
<li>Публичный ключ с Mac Studio добавлен в <code>/root/.ssh/authorized_keys</code></li>
|
||||
</ul>
|
||||
<h3 id="3-nginx">3. nginx</h3>
|
||||
<p>Для каждого домена создать server block:</p>
|
||||
<ul>
|
||||
<li>HTTP → редирект на HTTPS</li>
|
||||
<li>HTTPS с SSL-сертификатом Let’s Encrypt</li>
|
||||
<li><code>proxy_pass</code> на localhost-порт туннеля</li>
|
||||
</ul>
|
||||
<p>Пример структуры:</p>
|
||||
<pre tabindex="0"><code>/etc/nginx/sites-available/
|
||||
claw.a2v.space.conf
|
||||
code.a2v.space.conf
|
||||
sand.a2v.space.conf
|
||||
</code></pre><h3 id="4-ssl-сертификаты">4. SSL-сертификаты</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>certbot certonly --nginx -d <domain>
|
||||
</span></span><span style="display:flex;"><span>certbot renew --dry-run <span style="color:#75715e"># проверить автообновление</span>
|
||||
</span></span></code></pre></div><h2 id="что-нужно-на-mac-studio">Что нужно на Mac Studio</h2>
|
||||
<h3 id="autossh-через-launchd">autossh через launchd</h3>
|
||||
<p>Plist: <code>~/Library/LaunchAgents/com.openclaw.sshtunnel.plist</code></p>
|
||||
<p>Один plist с несколькими <code>-R</code> флагами:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672"><key></span>ProgramArguments<span style="color:#f92672"></key></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"><array></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>/usr/local/bin/autossh<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-M<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>0<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8080:localhost:18789<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8081:localhost:4096<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8082:localhost:4200<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-R<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>8083:localhost:8080<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>root@95.163.232.9<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-N<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>-i<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672"><string></span>/Users/<span style="color:#f92672"><user></span>/.ssh/id_rsa<span style="color:#f92672"></string></span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672"></array></span>
|
||||
</span></span></code></pre></div><h3 id="управление-launchd">Управление launchd</h3>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>launchctl load ~/Library/LaunchAgents/com.openclaw.sshtunnel.plist
|
||||
</span></span><span style="display:flex;"><span>launchctl start com.openclaw.sshtunnel
|
||||
</span></span><span style="display:flex;"><span>launchctl stop com.openclaw.sshtunnel
|
||||
</span></span></code></pre></div><h2 id="проверка">Проверка</h2>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># На VPS</span>
|
||||
</span></span><span style="display:flex;"><span>ss -tlnp | grep -E <span style="color:#e6db74">'808[0-3]'</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Снаружи</span>
|
||||
</span></span><span style="display:flex;"><span>curl -I https://claw.a2v.space
|
||||
</span></span><span style="display:flex;"><span>curl -I https://code.a2v.space
|
||||
</span></span><span style="display:flex;"><span>curl -I https://sand.a2v.space
|
||||
</span></span></code></pre></div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,187 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.159.1">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>docs.a2v.space — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="./css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="./">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="./creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="./diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="./kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="./plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="./guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="./creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Добро пожаловать в docs.a2v.space</h1>
|
||||
<p class="lead">Персональная документация и база знаний.</p>
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Дневник</h3>
|
||||
<p class="card-text">Записи по датам о событиях и обсуждениях.</p>
|
||||
<a href="./diary/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">База знаний</h3>
|
||||
<p class="card-text">Статьи и документация по различным темам.</p>
|
||||
<a href="./kb/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Планы</h3>
|
||||
<p class="card-text">Запланированные задачи и их статус.</p>
|
||||
<a href="./plans/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Инструкции</h3>
|
||||
<p class="card-text">Пошаговые инструкции для различных задач.</p>
|
||||
<a href="./guides/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">Креды</h3>
|
||||
<p class="card-text">Зашифрованные учётные данные (требуется мастер-пароль).</p>
|
||||
<a href="./creds/" class="btn btn-outline-primary">Открыть</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="./js/search.js"></script>
|
||||
<script src="./js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,145 @@
|
||||
// Credentials encryption/decryption using Web Crypto API
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const decryptButtons = document.querySelectorAll('.decrypt-btn');
|
||||
|
||||
decryptButtons.forEach(button => {
|
||||
button.addEventListener('click', async function() {
|
||||
const id = this.dataset.id;
|
||||
const encryptedDiv = document.getElementById('encrypted-' + id);
|
||||
const decryptedDiv = document.getElementById('decrypted-' + id);
|
||||
|
||||
// Get master password
|
||||
const password = prompt('Введите мастер-пароль:');
|
||||
if (!password) return;
|
||||
|
||||
try {
|
||||
const encryptedBase64 = encryptedDiv.textContent.trim();
|
||||
const decrypted = await decrypt(encryptedBase64, password);
|
||||
|
||||
// Parse and display decrypted content
|
||||
const data = JSON.parse(decrypted);
|
||||
|
||||
let html = '';
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
const label = formatLabel(key);
|
||||
html += `<div class="field-row">
|
||||
<span class="field-label">${label}:</span>
|
||||
<span class="field-value">${value}</span>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
decryptedDiv.innerHTML = html;
|
||||
decryptedDiv.style.display = 'block';
|
||||
encryptedDiv.style.display = 'none';
|
||||
this.textContent = 'Скрыть';
|
||||
this.classList.remove('btn-primary');
|
||||
this.classList.add('btn-secondary');
|
||||
|
||||
// Change button to toggle
|
||||
this.onclick = function() {
|
||||
if (decryptedDiv.style.display === 'none') {
|
||||
decryptedDiv.style.display = 'block';
|
||||
encryptedDiv.style.display = 'none';
|
||||
this.textContent = 'Скрыть';
|
||||
} else {
|
||||
decryptedDiv.style.display = 'none';
|
||||
encryptedDiv.style.display = 'block';
|
||||
this.textContent = 'Расшифровать';
|
||||
}
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Decryption error:', error);
|
||||
alert('Ошибка расшифровки. Проверьте мастер-пароль.');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function formatLabel(key) {
|
||||
const labels = {
|
||||
'user': 'Пользователь',
|
||||
'password': 'Пароль',
|
||||
'host': 'Хост',
|
||||
'port': 'Порт',
|
||||
'database': 'База данных',
|
||||
'notes': 'Заметки',
|
||||
'ip': 'IP',
|
||||
'auth': 'Авторизация',
|
||||
'vpn': 'VPN'
|
||||
};
|
||||
return labels[key] || key;
|
||||
}
|
||||
|
||||
// Derive encryption key from password using PBKDF2
|
||||
async function deriveKey(password, salt) {
|
||||
const encoder = new TextEncoder();
|
||||
const keyMaterial = await crypto.subtle.importKey(
|
||||
'raw',
|
||||
encoder.encode(password),
|
||||
{ name: 'PBKDF2' },
|
||||
false,
|
||||
['deriveBits', 'deriveKey']
|
||||
);
|
||||
|
||||
return crypto.subtle.deriveKey(
|
||||
{
|
||||
name: 'PBKDF2',
|
||||
salt: salt,
|
||||
iterations: 100000,
|
||||
hash: 'SHA-256'
|
||||
},
|
||||
keyMaterial,
|
||||
{ name: 'AES-GCM', length: 256 },
|
||||
false,
|
||||
['encrypt', 'decrypt']
|
||||
);
|
||||
}
|
||||
|
||||
// Decrypt data
|
||||
async function decrypt(encryptedBase64, password) {
|
||||
const encryptedData = Uint8Array.from(atob(encryptedBase64), c => c.charCodeAt(0));
|
||||
|
||||
// Extract salt (first 16 bytes), IV (next 12 bytes), and ciphertext
|
||||
const salt = encryptedData.slice(0, 16);
|
||||
const iv = encryptedData.slice(16, 28);
|
||||
const ciphertext = encryptedData.slice(28);
|
||||
|
||||
const key = await deriveKey(password, salt);
|
||||
|
||||
const decrypted = await crypto.subtle.decrypt(
|
||||
{ name: 'AES-GCM', iv: iv },
|
||||
key,
|
||||
ciphertext
|
||||
);
|
||||
|
||||
return new TextDecoder().decode(decrypted);
|
||||
}
|
||||
|
||||
// Encrypt data (for creating new credentials)
|
||||
async function encrypt(plaintext, password) {
|
||||
const encoder = new TextEncoder();
|
||||
const salt = crypto.getRandomValues(new Uint8Array(16));
|
||||
const iv = crypto.getRandomValues(new Uint8Array(12));
|
||||
|
||||
const key = await deriveKey(password, salt);
|
||||
|
||||
const ciphertext = await crypto.subtle.encrypt(
|
||||
{ name: 'AES-GCM', iv: iv },
|
||||
key,
|
||||
encoder.encode(plaintext)
|
||||
);
|
||||
|
||||
// Combine salt + iv + ciphertext
|
||||
const combined = new Uint8Array(16 + 12 + ciphertext.byteLength);
|
||||
combined.set(salt, 0);
|
||||
combined.set(iv, 16);
|
||||
combined.set(new Uint8Array(ciphertext), 28);
|
||||
|
||||
return btoa(String.fromCharCode(...combined));
|
||||
}
|
||||
|
||||
// Utility function for encrypting credentials (can be used in console)
|
||||
window.encryptCreds = async function(data, password) {
|
||||
const json = JSON.stringify(data);
|
||||
return await encrypt(json, password);
|
||||
};
|
||||
@@ -0,0 +1,90 @@
|
||||
// Search functionality using Fuse.js
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const searchInput = document.getElementById('search-input');
|
||||
const searchForm = document.querySelector('.search-form');
|
||||
const searchResults = document.getElementById('search-results');
|
||||
const resultsList = document.getElementById('results-list');
|
||||
const closeSearch = document.getElementById('close-search');
|
||||
|
||||
if (!searchInput) return;
|
||||
|
||||
let fuse;
|
||||
|
||||
// Load search index
|
||||
fetch('/index.json')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
fuse = new Fuse(data, {
|
||||
keys: ['title', 'content', 'tags'],
|
||||
includeScore: true,
|
||||
threshold: 0.3,
|
||||
ignoreLocation: true,
|
||||
minMatchCharLength: 2
|
||||
});
|
||||
})
|
||||
.catch(err => console.error('Failed to load search index:', err));
|
||||
|
||||
function performSearch(query) {
|
||||
if (!fuse || !query.trim()) {
|
||||
searchResults.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
const results = fuse.search(query, { limit: 10 });
|
||||
|
||||
if (results.length === 0) {
|
||||
resultsList.innerHTML = '<li>Ничего не найдено</li>';
|
||||
} else {
|
||||
resultsList.innerHTML = results.map(result => {
|
||||
const item = result.item;
|
||||
const sectionLabels = {
|
||||
'diary': 'Дневник',
|
||||
'kb': 'База знаний',
|
||||
'plans': 'Планы',
|
||||
'guides': 'Инструкции',
|
||||
'creds': 'Креды'
|
||||
};
|
||||
const label = sectionLabels[item.section] || item.section;
|
||||
return `<li>
|
||||
<a href="${item.url}">
|
||||
<strong>${item.title}</strong>
|
||||
<small class="text-muted d-block">${label}</small>
|
||||
</a>
|
||||
</li>`;
|
||||
}).join('');
|
||||
}
|
||||
|
||||
searchResults.style.display = 'block';
|
||||
}
|
||||
|
||||
// Debounce function
|
||||
let debounceTimer;
|
||||
function debounce(func, delay) {
|
||||
return function() {
|
||||
const context = this;
|
||||
const args = arguments;
|
||||
clearTimeout(debounceTimer);
|
||||
debounceTimer = setTimeout(() => func.apply(context, args), delay);
|
||||
};
|
||||
}
|
||||
|
||||
searchInput.addEventListener('input', debounce(function(e) {
|
||||
performSearch(e.target.value);
|
||||
}, 200));
|
||||
|
||||
searchForm.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
performSearch(searchInput.value);
|
||||
});
|
||||
|
||||
closeSearch.addEventListener('click', function() {
|
||||
searchResults.style.display = 'none';
|
||||
});
|
||||
|
||||
// Close search when clicking outside
|
||||
document.addEventListener('click', function(e) {
|
||||
if (!searchForm.contains(e.target) && !searchResults.contains(e.target)) {
|
||||
searchResults.style.display = 'none';
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,391 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Eversolo T8 API — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">Все статьи</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/api/">api</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/eversolo/">eversolo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/music/">music</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../tags/streamer/">streamer</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Eversolo T8 API</h1>
|
||||
|
||||
|
||||
<div class="tags mb-3">
|
||||
|
||||
<a href="../../tags/api/" class="tag">api</a>
|
||||
|
||||
<a href="../../tags/eversolo/" class="tag">eversolo</a>
|
||||
|
||||
<a href="../../tags/music/" class="tag">music</a>
|
||||
|
||||
<a href="../../tags/streamer/" class="tag">streamer</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<p>Eversolo T8 — музыкальный стример.</p>
|
||||
<p><strong>IP:</strong> 192.168.0.156
|
||||
<strong>Порт:</strong> 9529
|
||||
<strong>Авторизация:</strong> нет</p>
|
||||
<p>Базовый URL: <code>http://192.168.0.156:9529</code></p>
|
||||
<h2 id="воспроизведение">Воспроизведение</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Play/Pause</td>
|
||||
<td><code>/ZidooMusicControl/v2/playOrPause</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Следующий трек</td>
|
||||
<td><code>/ZidooMusicControl/v2/playNext</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Предыдущий трек</td>
|
||||
<td><code>/ZidooMusicControl/v2/playLast</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Перемотка (ms)</td>
|
||||
<td><code>/ZidooMusicControl/v2/seekTo?time=<ms></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Воспроизвести по ID</td>
|
||||
<td><code>/ZidooMusicControl/v2/playMusic?type=4&id=<id></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Состояние</td>
|
||||
<td><code>/ZidooMusicControl/v2/getState</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="громкость">Громкость</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Громкость вверх</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Громкость вниз</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Точная громкость</td>
|
||||
<td><code>/ZidooMusicControl/v2/setDevicesVolume?volume=<0-200></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mute</td>
|
||||
<td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Unmute</td>
|
||||
<td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=0</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="входывыходы">Входы/Выходы</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Получить список</td>
|
||||
<td><code>/ZidooMusicControl/v2/getInputAndOutputList</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Установить вход</td>
|
||||
<td><code>/ZidooMusicControl/v2/setInputList?tag=<tag>&index=<n></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Установить выход</td>
|
||||
<td><code>/ZidooMusicControl/v2/setOutInputList?tag=<tag>&index=<n></code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB</p>
|
||||
<h2 id="дисплей">Дисплей</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Яркость экрана (get)</td>
|
||||
<td><code>/SystemSettings/displaySettings/getScreenBrightness</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Яркость экрана (set)</td>
|
||||
<td><code>/SystemSettings/displaySettings/setScreenBrightness?index=<0-115></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Яркость ручки (get)</td>
|
||||
<td><code>/SystemSettings/displaySettings/getKnobBrightness</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Яркость ручки (set)</td>
|
||||
<td><code>/SystemSettings/displaySettings/setKnobBrightness?index=<0-255></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VU-режим (get)</td>
|
||||
<td><code>/SystemSettings/displaySettings/getVUModeList</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VU-режим (set)</td>
|
||||
<td><code>/SystemSettings/displaySettings/setVUMode?index=<n></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Спектр (get)</td>
|
||||
<td><code>/SystemSettings/displaySettings/getSpPlayModeList</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Спектр (set)</td>
|
||||
<td><code>/SystemSettings/displaySettings/setSpPlayModeList?index=<n></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Переключить VU/Спектр</td>
|
||||
<td>`/ZidooMusicControl/v2/changVUDisplay?openType=<0</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="питание">Питание</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Параметры питания</td>
|
||||
<td><code>/ZidooMusicControl/v2/getPowerOption</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Перезагрузка</td>
|
||||
<td><code>/ZidooMusicControl/v2/setPowerOption?tag=reboot</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выключение</td>
|
||||
<td><code>/ZidooMusicControl/v2/setPowerOption?tag=poweroff</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Переключить экран</td>
|
||||
<td><code>/ZidooMusicControl/v2/setPowerOption?tag=screen</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Включить экран</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.ON</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выключить экран</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.Screen.OFF</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="поиск">Поиск</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Поиск</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>По трекам</td>
|
||||
<td><code>/ZidooMusicControl/v2/searchMusicV2?key=<text>&start=0&count=100</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>По артистам</td>
|
||||
<td><code>/ZidooMusicControl/v2/searchArtistV2?key=<text>&start=0&count=100</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>По альбомам</td>
|
||||
<td><code>/ZidooMusicControl/v2/searchAlbumV2?key=<text>&start=0&count=100</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="обложки-и-устройство">Обложки и устройство</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Обложка по ID</td>
|
||||
<td><code>/ZidooMusicControl/v2/getImage?id=<song_id>&target=16</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Модель устройства</td>
|
||||
<td><code>/ControlCenter/getModel</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="источники">Источники</h2>
|
||||
<ul>
|
||||
<li><a href="https://forum.zidoo.tv/index.php?threads/some-api.96983/">Zidoo Forum</a></li>
|
||||
<li><a href="https://github.com/hchris1/Eversolo/blob/main/custom_components/eversolo/api.py">Home Assistant Integration</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,271 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Kbs — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Фильтры</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../kb/">Все статьи</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h6 class="mt-3">Теги</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/api/">api</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/eversolo/">eversolo</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/music/">music</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../tags/streamer/">streamer</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>База знаний</h1>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title"><a href="../kb/eversolo-api/">Eversolo T8 API</a></h3>
|
||||
<p class="card-text"><p>Eversolo T8 — музыкальный стример.</p>
|
||||
<p><strong>IP:</strong> 192.168.0.156
|
||||
<strong>Порт:</strong> 9529
|
||||
<strong>Авторизация:</strong> нет</p>
|
||||
<p>Базовый URL: <code>http://192.168.0.156:9529</code></p>
|
||||
<h2 id="воспроизведение">Воспроизведение</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Play/Pause</td>
|
||||
<td><code>/ZidooMusicControl/v2/playOrPause</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Следующий трек</td>
|
||||
<td><code>/ZidooMusicControl/v2/playNext</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Предыдущий трек</td>
|
||||
<td><code>/ZidooMusicControl/v2/playLast</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Перемотка (ms)</td>
|
||||
<td><code>/ZidooMusicControl/v2/seekTo?time=<ms></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Воспроизвести по ID</td>
|
||||
<td><code>/ZidooMusicControl/v2/playMusic?type=4&id=<id></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Состояние</td>
|
||||
<td><code>/ZidooMusicControl/v2/getState</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="громкость">Громкость</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Громкость вверх</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Громкость вниз</td>
|
||||
<td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Точная громкость</td>
|
||||
<td><code>/ZidooMusicControl/v2/setDevicesVolume?volume=<0-200></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mute</td>
|
||||
<td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Unmute</td>
|
||||
<td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=0</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="входывыходы">Входы/Выходы</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Действие</th>
|
||||
<th>URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Получить список</td>
|
||||
<td><code>/ZidooMusicControl/v2/getInputAndOutputList</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Установить вход</td>
|
||||
<td><code>/ZidooMusicControl/v2/setInputList?tag=<tag>&index=<n></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Установить выход</td>
|
||||
<td><code>/ZidooMusicControl/v2/setOutInputList?tag=<tag>&index=<n></code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB</p></p>
|
||||
|
||||
<div class="tags">
|
||||
|
||||
<a href="../tags/api/" class="tag">api</a>
|
||||
|
||||
<a href="../tags/eversolo/" class="tag">eversolo</a>
|
||||
|
||||
<a href="../tags/music/" class="tag">music</a>
|
||||
|
||||
<a href="../tags/streamer/" class="tag">streamer</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
[{"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/"}]
|
||||
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Завершить Eversolo Companion - этапы 3-9 — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Статусы</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Все планы</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-planned" href="../../plans/?status=planned">🟡 Запланировано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-in-progress" href="../../plans/?status=in_progress">🟠 В процессе</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-done" href="../../plans/?status=done">✅ Сделано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-cancelled" href="../../plans/?status=cancelled">❌ Отменено</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<h1>Завершить Eversolo Companion - этапы 3-9</h1>
|
||||
<span class="status-badge h5">
|
||||
🟡 Запланировано
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
|
||||
|
||||
<div class="col">
|
||||
<strong>Запланировано:</strong> 29.03.2026
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="описание">Описание</h2>
|
||||
<p>Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.</p>
|
||||
<h2 id="что-сделано">Что сделано</h2>
|
||||
<ul>
|
||||
<li><strong>Backend (Go + Gin)</strong>: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller</li>
|
||||
<li><strong>Frontend (Angular 17)</strong>: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов</li>
|
||||
<li><strong>PostgreSQL</strong>: Docker, порт 5433, миграции готовы</li>
|
||||
<li><strong>Docker Compose</strong>: рабочий (postgres + api + frontend)</li>
|
||||
<li><strong>Спецификация</strong>: полная в ~/Projects/eversolo-companion/SPEC.md</li>
|
||||
</ul>
|
||||
<h2 id="проблема">Проблема</h2>
|
||||
<p>API не может достучаться до Eversolo T8 (192.168.0.156:9529) из-за ограничений OpenClaw sandbox.</p>
|
||||
<h2 id="возможные-решения">Возможные решения</h2>
|
||||
<ol>
|
||||
<li>Настроить <code>tools.elevated.allowFrom.webchat</code> для разрешения сетевых соединений</li>
|
||||
<li>Запустить API через launchd plist (как SSH туннели)</li>
|
||||
<li>Использовать отдельный контейнер без ограничений</li>
|
||||
</ol>
|
||||
<h2 id="этапы-3-9-после-решения-сети">Этапы 3-9 (после решения сети)</h2>
|
||||
<ol>
|
||||
<li><strong>Библиотека синхронизации</strong> — двухсторонний sync с Eversolo</li>
|
||||
<li><strong>Плейлисты</strong> — импорт/экспорт, редактирование</li>
|
||||
<li><strong>Scrobbler</strong> — Last.fm / ListenBrainz</li>
|
||||
<li><strong>Обложки</strong> — кэширование, отображение в UI</li>
|
||||
<li><strong>Плеер</strong> — улучшенный интерфейс управления</li>
|
||||
<li><strong>Система уведомлений</strong> — события от Eversolo</li>
|
||||
<li><strong>Администрирование</strong> — настройка подключений</li>
|
||||
</ol>
|
||||
<h2 id="связанные-ресурсы">Связанные ресурсы</h2>
|
||||
<ul>
|
||||
<li><a href="../../docs/eversolo-companion-spec/">Спецификация проекта</a></li>
|
||||
<li><a href="../../kb/eversolo-api/">API документация</a></li>
|
||||
<li><a href="../../diary/2026-03-29/">Дневник разработки</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<blockquote class="context-quote">
|
||||
UI готов, API готов, БД готова — но API не может достучаться до Eversolo из-за ограничений OpenClaw sandbox
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Реализовать управление Eversolo из OpenClaw — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Статусы</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Все планы</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-planned" href="../../plans/?status=planned">🟡 Запланировано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-in-progress" href="../../plans/?status=in_progress">🟠 В процессе</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-done" href="../../plans/?status=done">✅ Сделано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-cancelled" href="../../plans/?status=cancelled">❌ Отменено</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<h1>Реализовать управление Eversolo из OpenClaw</h1>
|
||||
<span class="status-badge h5">
|
||||
🟡 Запланировано
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
|
||||
|
||||
<div class="col">
|
||||
<strong>Запланировано:</strong> 29.03.2026
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="описание">Описание</h2>
|
||||
<p>Добавить инструменты управления Eversolo T8 в OpenClaw.</p>
|
||||
<h2 id="что-сделано">Что сделано</h2>
|
||||
<ul>
|
||||
<li>Изучен полный API Eversolo T8 (см. <a href="../../kb/eversolo-api/">Базу знаний</a>)</li>
|
||||
</ul>
|
||||
<h2 id="проблема">Проблема</h2>
|
||||
<p>Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.</p>
|
||||
<h2 id="возможные-решения">Возможные решения</h2>
|
||||
<ol>
|
||||
<li>Настроить проброс портов</li>
|
||||
<li>Запустить OpenClaw без sandbox-ограничений</li>
|
||||
<li>Использовать промежуточный proxy-сервис</li>
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
<blockquote class="context-quote">
|
||||
API изучен, записан в TOOLS.md. Проблема: нет доступа к LAN из sandbox OpenClaw.
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Plans — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Статусы</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../plans/">Все планы</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-planned" href="../plans/?status=planned">🟡 Запланировано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-in-progress" href="../plans/?status=in_progress">🟠 В процессе</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-done" href="../plans/?status=done">✅ Сделано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-cancelled" href="../plans/?status=cancelled">❌ Отменено</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Планы</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 class="mb-3">Предстоящие</h3>
|
||||
|
||||
<div class="card plan-card planned mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<h4 class="card-title"><a href="../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></h4>
|
||||
<span class="status-badge">
|
||||
🟡 Запланировано
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card plan-card planned mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<h4 class="card-title"><a href="../plans/ollama-openclaw/">Настроить интеграцию Ollama с OpenClaw</a></h4>
|
||||
<span class="status-badge">
|
||||
🟡 Запланировано
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card plan-card planned mb-3">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<h4 class="card-title"><a href="../plans/eversolo-control/">Реализовать управление Eversolo из OpenClaw</a></h4>
|
||||
<span class="status-badge">
|
||||
🟡 Запланировано
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const status = urlParams.get('status');
|
||||
if (status) {
|
||||
document.querySelectorAll('.plan-card').forEach(card => {
|
||||
if (!card.classList.contains(status)) {
|
||||
card.style.display = 'none';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
[{"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":"Описание Добавить инструменты управления 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/"}]
|
||||
@@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Настроить интеграцию Ollama с OpenClaw — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Статусы</h6>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Все планы</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-planned" href="../../plans/?status=planned">🟡 Запланировано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-in-progress" href="../../plans/?status=in_progress">🟠 В процессе</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-done" href="../../plans/?status=done">✅ Сделано</a></li>
|
||||
<li class="nav-item"><a class="nav-link status-cancelled" href="../../plans/?status=cancelled">❌ Отменено</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<h1>Настроить интеграцию Ollama с OpenClaw</h1>
|
||||
<span class="status-badge h5">
|
||||
🟡 Запланировано
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
|
||||
|
||||
<div class="col">
|
||||
<strong>Запланировано:</strong> 29.03.2026
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="описание">Описание</h2>
|
||||
<p>Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.</p>
|
||||
<h2 id="проблема">Проблема</h2>
|
||||
<p>Модель <code>qwen3.5:9b</code> добавлена в конфиг <code>openclaw.json</code>, но не отображается в <code>openclaw models list</code>.</p>
|
||||
<h2 id="статус">Статус</h2>
|
||||
<p>Отложено по решению Антона.</p>
|
||||
|
||||
|
||||
|
||||
<blockquote class="context-quote">
|
||||
Добавлен qwen3.5:9b в openclaw.json, но модель не появилась в openclaw models list. Отложено по решению Антона.
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,168 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>/diary/2026-03-29/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/amnezia/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/angular/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/api/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/authentication/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/companion/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/database/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/devops/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/diary/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/docker/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/docker-compose/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/docs/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/docs-a2v-space-auth/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/eversolo/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/eversolo-companion-postgres/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/kb/eversolo-api/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/go/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/hugo/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/identity/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/infrastructure/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/kb/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/leadera/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/llm/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/leadera-db-docker/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/leadera-db-local/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/music/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/nginx/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/ollama/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/openclaw/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/opencode/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/plans/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/postgresql/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/reg.ru/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/reverse-proxy/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/ssh/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/ssh-tunnels-vps/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/streamer/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/tunnel/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/vpn/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/vpn-vps/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/vps/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/creds/vps-reg-ru/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/plans/eversolo-companion-phases-3-9/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/plans/ollama-openclaw/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/vps-reverse-proxy/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/claw-a2v-space/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/code-a2v-space/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/guides/sand-a2v-space/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/plans/eversolo-control/</loc>
|
||||
<lastmod>2026-03-29T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/categories/</loc>
|
||||
</url><url>
|
||||
<loc>/statuses/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -0,0 +1,138 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Statuses — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Statuses</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Statuses on docs.a2v.space</title>
|
||||
<link>/statuses/</link>
|
||||
<description>Recent content in Statuses on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<atom:link href="/statuses/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Amnezia — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Amnezia</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/vpn-vps/">VPN VPS</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Amnezia on docs.a2v.space</title>
|
||||
<link>/tags/amnezia/</link>
|
||||
<description>Recent content in Amnezia on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/amnezia/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>VPN VPS</title>
|
||||
<link>/creds/vpn-vps/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/vpn-vps/</guid>
|
||||
<description>YEI16NAJ78d3lmSa/lca8Zxczt+u6GyMUYHduX47VoFQdj0Ixozd8R6yXoB7eM+AjhCtNGkOxGlOj2s73ABOBjLEIVIhD4Z+xTyzdtah4VpyLoltYOeNYsnbIIFARdF/FBYq5COXohhXs33K5ozznrtDd/awbKMjl/sbQqjXAZ+A3ZSob6/5uU+fFKetXLR6v4ZLAYQ57iiD21ImSLSggwv+rJgK5XyPDKEPD4N5nOsiDrLgoukVBMvgJ54PqfPp2Hni+2tdKOlMnOG2npTuu4SkyALcfFar</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,144 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Angular — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Angular</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></li>
|
||||
|
||||
<li><a href="../../guides/sand-a2v-space/">Подключение sand.a2v.space (Leadera Project)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Api — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Api</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../kb/eversolo-api/">Eversolo T8 API</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-control/">Реализовать управление Eversolo из OpenClaw</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Api on docs.a2v.space</title>
|
||||
<link>/tags/api/</link>
|
||||
<description>Recent content in Api on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/api/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Eversolo T8 API</title>
|
||||
<link>/kb/eversolo-api/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/kb/eversolo-api/</guid>
|
||||
<description><p>Eversolo T8 — музыкальный стример.</p>
<p><strong>IP:</strong> 192.168.0.156
<strong>Порт:</strong> 9529
<strong>Авторизация:</strong> нет</p>
<p>Базовый URL: <code>http://192.168.0.156:9529</code></p>
<h2 id="воспроизведение">Воспроизведение</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Play/Pause</td>
 <td><code>/ZidooMusicControl/v2/playOrPause</code></td>
 </tr>
 <tr>
 <td>Следующий трек</td>
 <td><code>/ZidooMusicControl/v2/playNext</code></td>
 </tr>
 <tr>
 <td>Предыдущий трек</td>
 <td><code>/ZidooMusicControl/v2/playLast</code></td>
 </tr>
 <tr>
 <td>Перемотка (ms)</td>
 <td><code>/ZidooMusicControl/v2/seekTo?time=&lt;ms&gt;</code></td>
 </tr>
 <tr>
 <td>Воспроизвести по ID</td>
 <td><code>/ZidooMusicControl/v2/playMusic?type=4&amp;id=&lt;id&gt;</code></td>
 </tr>
 <tr>
 <td>Состояние</td>
 <td><code>/ZidooMusicControl/v2/getState</code></td>
 </tr>
 </tbody>
</table>
<h2 id="громкость">Громкость</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Громкость вверх</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp</code></td>
 </tr>
 <tr>
 <td>Громкость вниз</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown</code></td>
 </tr>
 <tr>
 <td>Точная громкость</td>
 <td><code>/ZidooMusicControl/v2/setDevicesVolume?volume=&lt;0-200&gt;</code></td>
 </tr>
 <tr>
 <td>Mute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=1</code></td>
 </tr>
 <tr>
 <td>Unmute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=0</code></td>
 </tr>
 </tbody>
</table>
<h2 id="входывыходы">Входы/Выходы</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Получить список</td>
 <td><code>/ZidooMusicControl/v2/getInputAndOutputList</code></td>
 </tr>
 <tr>
 <td>Установить вход</td>
 <td><code>/ZidooMusicControl/v2/setInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 <tr>
 <td>Установить выход</td>
 <td><code>/ZidooMusicControl/v2/setOutInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 </tbody>
</table>
<p>Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Реализовать управление Eversolo из OpenClaw</title>
|
||||
<link>/plans/eversolo-control/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/eversolo-control/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Добавить инструменты управления Eversolo T8 в OpenClaw.</p>
<h2 id="что-сделано">Что сделано</h2>
<ul>
<li>Изучен полный API Eversolo T8 (см. <a href="../../kb/eversolo-api/">Базу знаний</a>)</li>
</ul>
<h2 id="проблема">Проблема</h2>
<p>Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.</p>
<h2 id="возможные-решения">Возможные решения</h2>
<ol>
<li>Настроить проброс портов</li>
<li>Запустить OpenClaw без sandbox-ограничений</li>
<li>Использовать промежуточный proxy-сервис</li>
</ol></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Authentication — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Authentication</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/docs-a2v-space-auth/">docs.a2v.space Basic Auth</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Authentication on docs.a2v.space</title>
|
||||
<link>/tags/authentication/</link>
|
||||
<description>Recent content in Authentication on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/authentication/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>docs.a2v.space Basic Auth</title>
|
||||
<link>/creds/docs-a2v-space-auth/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/docs-a2v-space-auth/</guid>
|
||||
<description><h2 id="basic-authentication">Basic Authentication</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Username: agaltsovav
</span></span><span style="display:flex;"><span>Password: Magamet787!
</span></span></code></pre></div><h2 id="конфигурация-nginx">Конфигурация Nginx</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">8091</span>;
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">docs.a2v.space</span>;
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span> <span style="color:#f92672">auth_basic</span> <span style="color:#e6db74">&#34;Restricted</span> <span style="color:#e6db74">Access&#34;</span>;
</span></span><span style="display:flex;"><span> <span style="color:#f92672">auth_basic_user_file</span> <span style="color:#e6db74">/etc/nginx/.htpasswd</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h2 id="доступ">Доступ</h2>
<ul>
<li><strong>URL</strong>: <a href="https://docs.a2v.space">https://docs.a2v.space</a> (через reverse proxy)</li>
<li><strong>Local</strong>: http://localhost:8091 (для разработки)</li>
<li><strong>Auth</strong>: всегда требуется</li>
</ul>
<h2 id="мастер-пароль-для-шифрования">Мастер-пароль для шифрования</h2>
<p><strong>Важно</strong>: Пароль для расшифровки файлов в разделе <code>creds/</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Master Password: Popoloka16!
</span></span></code></pre></div><h2 id="шифрование">Шифрование</h2>
<ul>
<li>Алгоритм: AES-256-GCM</li>
<li>Хранилище: client-side encryption</li>
<li>Файлы шифруются при сохранении</li>
<li>Расшифровываются при чтении</li>
</ul></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,144 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Companion — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Companion</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../creds/eversolo-companion-postgres/">Eversolo Companion PostgreSQL</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Companion on docs.a2v.space</title>
|
||||
<link>/tags/companion/</link>
|
||||
<description>Recent content in Companion on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/companion/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Eversolo Companion PostgreSQL</title>
|
||||
<link>/creds/eversolo-companion-postgres/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/eversolo-companion-postgres/</guid>
|
||||
<description><h2 id="docker-compose-креды-projectseversolo-companiondocker-composeyml">Docker Compose креды (~/Projects/eversolo-companion/docker-compose.yml)</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">services</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">postgres</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_USER</span>: <span style="color:#ae81ff">postgres</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_PASSWORD</span>: <span style="color:#ae81ff">password</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_DB</span>: <span style="color:#ae81ff">eversolo</span>
</span></span></code></pre></div><h2 id="локальные-креды-env-файл">Локальные креды (.env файл)</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>POSTGRES_USER<span style="color:#f92672">=</span>postgres
</span></span><span style="display:flex;"><span>POSTGRES_PASSWORD<span style="color:#f92672">=</span>password
</span></span><span style="display:flex;"><span>POSTGRES_DB<span style="color:#f92672">=</span>eversolo
</span></span></code></pre></div><h2 id="хостинг">Хостинг</h2>
<ul>
<li><strong>Host</strong>: localhost</li>
<li><strong>Port</strong>: 5433</li>
<li><strong>Database</strong>: eversolo</li>
</ul>
<h2 id="безопасность">Безопасность</h2>
<ul>
<li>Используйте разные пароли для production</li>
<li>Включите SSL для удаленного подключения</li>
<li>Регулярно делайте бэкапы</li>
</ul></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Завершить Eversolo Companion - этапы 3-9</title>
|
||||
<link>/plans/eversolo-companion-phases-3-9/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/eversolo-companion-phases-3-9/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.</p>
<h2 id="что-сделано">Что сделано</h2>
<ul>
<li><strong>Backend (Go + Gin)</strong>: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller</li>
<li><strong>Frontend (Angular 17)</strong>: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов</li>
<li><strong>PostgreSQL</strong>: Docker, порт 5433, миграции готовы</li>
<li><strong>Docker Compose</strong>: рабочий (postgres + api + frontend)</li>
<li><strong>Спецификация</strong>: полная в ~/Projects/eversolo-companion/SPEC.md</li>
</ul>
<h2 id="проблема">Проблема</h2>
<p>API не может достучаться до Eversolo T8 (192.168.0.156:9529) из-за ограничений OpenClaw sandbox.</p>
<h2 id="возможные-решения">Возможные решения</h2>
<ol>
<li>Настроить <code>tools.elevated.allowFrom.webchat</code> для разрешения сетевых соединений</li>
<li>Запустить API через launchd plist (как SSH туннели)</li>
<li>Использовать отдельный контейнер без ограничений</li>
</ol>
<h2 id="этапы-3-9-после-решения-сети">Этапы 3-9 (после решения сети)</h2>
<ol>
<li><strong>Библиотека синхронизации</strong> — двухсторонний sync с Eversolo</li>
<li><strong>Плейлисты</strong> — импорт/экспорт, редактирование</li>
<li><strong>Scrobbler</strong> — Last.fm / ListenBrainz</li>
<li><strong>Обложки</strong> — кэширование, отображение в UI</li>
<li><strong>Плеер</strong> — улучшенный интерфейс управления</li>
<li><strong>Система уведомлений</strong> — события от Eversolo</li>
<li><strong>Администрирование</strong> — настройка подключений</li>
</ol>
<h2 id="связанные-ресурсы">Связанные ресурсы</h2>
<ul>
<li><a href="../../docs/eversolo-companion-spec/">Спецификация проекта</a></li>
<li><a href="../../kb/eversolo-api/">API документация</a></li>
<li><a href="../../diary/2026-03-29/">Дневник разработки</a></li>
</ul></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Database — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Database</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/leadera-db-docker/">Mac Studio — leadera-api БД (docker-compose)</a></li>
|
||||
|
||||
<li><a href="../../creds/leadera-db-local/">Mac Studio — leadera-api БД (локальная)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Database on docs.a2v.space</title>
|
||||
<link>/tags/database/</link>
|
||||
<description>Recent content in Database on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/database/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Mac Studio — leadera-api БД (docker-compose)</title>
|
||||
<link>/creds/leadera-db-docker/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/leadera-db-docker/</guid>
|
||||
<description>NYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Mac Studio — leadera-api БД (локальная)</title>
|
||||
<link>/creds/leadera-db-local/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/leadera-db-local/</guid>
|
||||
<description>p7Iw7Y3zbj1kLBcbOXGoO27oDwF85AhxBW7saT538hxi0ogJpyFeM49GDuLHzxuyknvdNC/rx3tb4AFnGkCeHSrrCmj+VK8Zxt7ujeujVJSRuOeeUlsqkHdlmaiXl2KQknrIsqVCi3Tnn0V5qcFxvo+1Ktc+surF6bBpWrTHzWV5mLtWVfD6C6kvvP/UFldFBD6v+FQs79yfoOe/j/bUrtpt6v5VndbbBmhUAQcy1BV2rpXxO373dTcLQ6coRWkt/RFo</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Devops — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Devops</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../guides/vps-reverse-proxy/">Настройка VPS как реверс-прокси</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Devops on docs.a2v.space</title>
|
||||
<link>/tags/devops/</link>
|
||||
<description>Recent content in Devops on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/devops/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Настройка VPS как реверс-прокси</title>
|
||||
<link>/guides/vps-reverse-proxy/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/guides/vps-reverse-proxy/</guid>
|
||||
<description><h2 id="общая-схема">Общая схема</h2>
<pre tabindex="0"><code>Mac Studio (локальная сеть)
 → autossh (SSH-туннели)
 → VPS 95.163.232.9 (Debian)
 → nginx (HTTPS reverse proxy)
 → интернет
</code></pre><h2 id="что-нужно-на-vps">Что нужно на VPS</h2>
<h3 id="1-установленные-пакеты">1. Установленные пакеты</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>apt update
</span></span><span style="display:flex;"><span>apt install nginx certbot python3-certbot-nginx
</span></span></code></pre></div><h3 id="2-ssh-доступ">2. SSH-доступ</h3>
<ul>
<li>Авторизация только по ключам</li>
<li>Публичный ключ с Mac Studio добавлен в <code>/root/.ssh/authorized_keys</code></li>
</ul>
<h3 id="3-nginx">3. nginx</h3>
<p>Для каждого домена создать server block:</p>
<ul>
<li>HTTP → редирект на HTTPS</li>
<li>HTTPS с SSL-сертификатом Let&rsquo;s Encrypt</li>
<li><code>proxy_pass</code> на localhost-порт туннеля</li>
</ul>
<p>Пример структуры:</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Docker-Compose — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Docker-Compose</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/leadera-db-docker/">Mac Studio — leadera-api БД (docker-compose)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Docker-Compose on docs.a2v.space</title>
|
||||
<link>/tags/docker-compose/</link>
|
||||
<description>Recent content in Docker-Compose on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/docker-compose/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Mac Studio — leadera-api БД (docker-compose)</title>
|
||||
<link>/creds/leadera-db-docker/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/leadera-db-docker/</guid>
|
||||
<description>NYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Docker — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Docker</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../creds/eversolo-companion-postgres/">Eversolo Companion PostgreSQL</a></li>
|
||||
|
||||
<li><a href="../../creds/leadera-db-local/">Mac Studio — leadera-api БД (локальная)</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></li>
|
||||
|
||||
<li><a href="../../guides/sand-a2v-space/">Подключение sand.a2v.space (Leadera Project)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Docs — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Docs</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../creds/docs-a2v-space-auth/">docs.a2v.space Basic Auth</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Docs on docs.a2v.space</title>
|
||||
<link>/tags/docs/</link>
|
||||
<description>Recent content in Docs on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/docs/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>docs.a2v.space Basic Auth</title>
|
||||
<link>/creds/docs-a2v-space-auth/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/docs-a2v-space-auth/</guid>
|
||||
<description><h2 id="basic-authentication">Basic Authentication</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Username: agaltsovav
</span></span><span style="display:flex;"><span>Password: Magamet787!
</span></span></code></pre></div><h2 id="конфигурация-nginx">Конфигурация Nginx</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nginx" data-lang="nginx"><span style="display:flex;"><span><span style="color:#66d9ef">server</span> {
</span></span><span style="display:flex;"><span> <span style="color:#f92672">listen</span> <span style="color:#ae81ff">8091</span>;
</span></span><span style="display:flex;"><span> <span style="color:#f92672">server_name</span> <span style="color:#e6db74">docs.a2v.space</span>;
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span> <span style="color:#f92672">auth_basic</span> <span style="color:#e6db74">&#34;Restricted</span> <span style="color:#e6db74">Access&#34;</span>;
</span></span><span style="display:flex;"><span> <span style="color:#f92672">auth_basic_user_file</span> <span style="color:#e6db74">/etc/nginx/.htpasswd</span>;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h2 id="доступ">Доступ</h2>
<ul>
<li><strong>URL</strong>: <a href="https://docs.a2v.space">https://docs.a2v.space</a> (через reverse proxy)</li>
<li><strong>Local</strong>: http://localhost:8091 (для разработки)</li>
<li><strong>Auth</strong>: всегда требуется</li>
</ul>
<h2 id="мастер-пароль-для-шифрования">Мастер-пароль для шифрования</h2>
<p><strong>Важно</strong>: Пароль для расшифровки файлов в разделе <code>creds/</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>Master Password: Popoloka16!
</span></span></code></pre></div><h2 id="шифрование">Шифрование</h2>
<ul>
<li>Алгоритм: AES-256-GCM</li>
<li>Хранилище: client-side encryption</li>
<li>Файлы шифруются при сохранении</li>
<li>Расшифровываются при чтении</li>
</ul></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Eversolo — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Eversolo</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../creds/eversolo-companion-postgres/">Eversolo Companion PostgreSQL</a></li>
|
||||
|
||||
<li><a href="../../kb/eversolo-api/">Eversolo T8 API</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-control/">Реализовать управление Eversolo из OpenClaw</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Eversolo on docs.a2v.space</title>
|
||||
<link>/tags/eversolo/</link>
|
||||
<description>Recent content in Eversolo on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/eversolo/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Eversolo Companion PostgreSQL</title>
|
||||
<link>/creds/eversolo-companion-postgres/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/eversolo-companion-postgres/</guid>
|
||||
<description><h2 id="docker-compose-креды-projectseversolo-companiondocker-composeyml">Docker Compose креды (~/Projects/eversolo-companion/docker-compose.yml)</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">services</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">postgres</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">environment</span>:
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_USER</span>: <span style="color:#ae81ff">postgres</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_PASSWORD</span>: <span style="color:#ae81ff">password</span>
</span></span><span style="display:flex;"><span> <span style="color:#f92672">POSTGRES_DB</span>: <span style="color:#ae81ff">eversolo</span>
</span></span></code></pre></div><h2 id="локальные-креды-env-файл">Локальные креды (.env файл)</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>POSTGRES_USER<span style="color:#f92672">=</span>postgres
</span></span><span style="display:flex;"><span>POSTGRES_PASSWORD<span style="color:#f92672">=</span>password
</span></span><span style="display:flex;"><span>POSTGRES_DB<span style="color:#f92672">=</span>eversolo
</span></span></code></pre></div><h2 id="хостинг">Хостинг</h2>
<ul>
<li><strong>Host</strong>: localhost</li>
<li><strong>Port</strong>: 5433</li>
<li><strong>Database</strong>: eversolo</li>
</ul>
<h2 id="безопасность">Безопасность</h2>
<ul>
<li>Используйте разные пароли для production</li>
<li>Включите SSL для удаленного подключения</li>
<li>Регулярно делайте бэкапы</li>
</ul></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Eversolo T8 API</title>
|
||||
<link>/kb/eversolo-api/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/kb/eversolo-api/</guid>
|
||||
<description><p>Eversolo T8 — музыкальный стример.</p>
<p><strong>IP:</strong> 192.168.0.156
<strong>Порт:</strong> 9529
<strong>Авторизация:</strong> нет</p>
<p>Базовый URL: <code>http://192.168.0.156:9529</code></p>
<h2 id="воспроизведение">Воспроизведение</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Play/Pause</td>
 <td><code>/ZidooMusicControl/v2/playOrPause</code></td>
 </tr>
 <tr>
 <td>Следующий трек</td>
 <td><code>/ZidooMusicControl/v2/playNext</code></td>
 </tr>
 <tr>
 <td>Предыдущий трек</td>
 <td><code>/ZidooMusicControl/v2/playLast</code></td>
 </tr>
 <tr>
 <td>Перемотка (ms)</td>
 <td><code>/ZidooMusicControl/v2/seekTo?time=&lt;ms&gt;</code></td>
 </tr>
 <tr>
 <td>Воспроизвести по ID</td>
 <td><code>/ZidooMusicControl/v2/playMusic?type=4&amp;id=&lt;id&gt;</code></td>
 </tr>
 <tr>
 <td>Состояние</td>
 <td><code>/ZidooMusicControl/v2/getState</code></td>
 </tr>
 </tbody>
</table>
<h2 id="громкость">Громкость</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Громкость вверх</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp</code></td>
 </tr>
 <tr>
 <td>Громкость вниз</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown</code></td>
 </tr>
 <tr>
 <td>Точная громкость</td>
 <td><code>/ZidooMusicControl/v2/setDevicesVolume?volume=&lt;0-200&gt;</code></td>
 </tr>
 <tr>
 <td>Mute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=1</code></td>
 </tr>
 <tr>
 <td>Unmute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=0</code></td>
 </tr>
 </tbody>
</table>
<h2 id="входывыходы">Входы/Выходы</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Получить список</td>
 <td><code>/ZidooMusicControl/v2/getInputAndOutputList</code></td>
 </tr>
 <tr>
 <td>Установить вход</td>
 <td><code>/ZidooMusicControl/v2/setInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 <tr>
 <td>Установить выход</td>
 <td><code>/ZidooMusicControl/v2/setOutInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 </tbody>
</table>
<p>Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB</p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Завершить Eversolo Companion - этапы 3-9</title>
|
||||
<link>/plans/eversolo-companion-phases-3-9/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/eversolo-companion-phases-3-9/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Завершить разработку Eversolo Companion после решения проблемы с сетевым доступом.</p>
<h2 id="что-сделано">Что сделано</h2>
<ul>
<li><strong>Backend (Go + Gin)</strong>: собран, 17+ REST API эндпоинтов, WebSocket, CORS, state poller</li>
<li><strong>Frontend (Angular 17)</strong>: собран, тёмная тема (Spotify-like), 5 экранов, 5 сервисов</li>
<li><strong>PostgreSQL</strong>: Docker, порт 5433, миграции готовы</li>
<li><strong>Docker Compose</strong>: рабочий (postgres + api + frontend)</li>
<li><strong>Спецификация</strong>: полная в ~/Projects/eversolo-companion/SPEC.md</li>
</ul>
<h2 id="проблема">Проблема</h2>
<p>API не может достучаться до Eversolo T8 (192.168.0.156:9529) из-за ограничений OpenClaw sandbox.</p>
<h2 id="возможные-решения">Возможные решения</h2>
<ol>
<li>Настроить <code>tools.elevated.allowFrom.webchat</code> для разрешения сетевых соединений</li>
<li>Запустить API через launchd plist (как SSH туннели)</li>
<li>Использовать отдельный контейнер без ограничений</li>
</ol>
<h2 id="этапы-3-9-после-решения-сети">Этапы 3-9 (после решения сети)</h2>
<ol>
<li><strong>Библиотека синхронизации</strong> — двухсторонний sync с Eversolo</li>
<li><strong>Плейлисты</strong> — импорт/экспорт, редактирование</li>
<li><strong>Scrobbler</strong> — Last.fm / ListenBrainz</li>
<li><strong>Обложки</strong> — кэширование, отображение в UI</li>
<li><strong>Плеер</strong> — улучшенный интерфейс управления</li>
<li><strong>Система уведомлений</strong> — события от Eversolo</li>
<li><strong>Администрирование</strong> — настройка подключений</li>
</ol>
<h2 id="связанные-ресурсы">Связанные ресурсы</h2>
<ul>
<li><a href="../../docs/eversolo-companion-spec/">Спецификация проекта</a></li>
<li><a href="../../kb/eversolo-api/">API документация</a></li>
<li><a href="../../diary/2026-03-29/">Дневник разработки</a></li>
</ul></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Реализовать управление Eversolo из OpenClaw</title>
|
||||
<link>/plans/eversolo-control/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/eversolo-control/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Добавить инструменты управления Eversolo T8 в OpenClaw.</p>
<h2 id="что-сделано">Что сделано</h2>
<ul>
<li>Изучен полный API Eversolo T8 (см. <a href="../../kb/eversolo-api/">Базу знаний</a>)</li>
</ul>
<h2 id="проблема">Проблема</h2>
<p>Sandbox OpenClaw не имеет доступа к локальной сети, где находится Eversolo.</p>
<h2 id="возможные-решения">Возможные решения</h2>
<ol>
<li>Настроить проброс портов</li>
<li>Запустить OpenClaw без sandbox-ограничений</li>
<li>Использовать промежуточный proxy-сервис</li>
</ol></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,144 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Go — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Go</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../plans/eversolo-companion-phases-3-9/">Завершить Eversolo Companion - этапы 3-9</a></li>
|
||||
|
||||
<li><a href="../../guides/sand-a2v-space/">Подключение sand.a2v.space (Leadera Project)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Hugo — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Hugo</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Hugo on docs.a2v.space</title>
|
||||
<link>/tags/hugo/</link>
|
||||
<description>Recent content in Hugo on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Identity — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Identity</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Identity on docs.a2v.space</title>
|
||||
<link>/tags/identity/</link>
|
||||
<description>Recent content in Identity on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/identity/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,198 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Tags — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Tags</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../tags/amnezia/">Amnezia</a></li>
|
||||
|
||||
<li><a href="../tags/angular/">Angular</a></li>
|
||||
|
||||
<li><a href="../tags/api/">Api</a></li>
|
||||
|
||||
<li><a href="../tags/authentication/">Authentication</a></li>
|
||||
|
||||
<li><a href="../tags/companion/">Companion</a></li>
|
||||
|
||||
<li><a href="../tags/database/">Database</a></li>
|
||||
|
||||
<li><a href="../tags/devops/">Devops</a></li>
|
||||
|
||||
<li><a href="../tags/docker/">Docker</a></li>
|
||||
|
||||
<li><a href="../tags/docker-compose/">Docker-Compose</a></li>
|
||||
|
||||
<li><a href="../tags/docs/">Docs</a></li>
|
||||
|
||||
<li><a href="../tags/eversolo/">Eversolo</a></li>
|
||||
|
||||
<li><a href="../tags/go/">Go</a></li>
|
||||
|
||||
<li><a href="../tags/hugo/">Hugo</a></li>
|
||||
|
||||
<li><a href="../tags/identity/">Identity</a></li>
|
||||
|
||||
<li><a href="../tags/infrastructure/">Infrastructure</a></li>
|
||||
|
||||
<li><a href="../tags/leadera/">Leadera</a></li>
|
||||
|
||||
<li><a href="../tags/llm/">Llm</a></li>
|
||||
|
||||
<li><a href="../tags/music/">Music</a></li>
|
||||
|
||||
<li><a href="../tags/nginx/">Nginx</a></li>
|
||||
|
||||
<li><a href="../tags/ollama/">Ollama</a></li>
|
||||
|
||||
<li><a href="../tags/openclaw/">Openclaw</a></li>
|
||||
|
||||
<li><a href="../tags/opencode/">Opencode</a></li>
|
||||
|
||||
<li><a href="../tags/postgresql/">Postgresql</a></li>
|
||||
|
||||
<li><a href="../tags/reg.ru/">Reg.ru</a></li>
|
||||
|
||||
<li><a href="../tags/reverse-proxy/">Reverse-Proxy</a></li>
|
||||
|
||||
<li><a href="../tags/ssh/">Ssh</a></li>
|
||||
|
||||
<li><a href="../tags/streamer/">Streamer</a></li>
|
||||
|
||||
<li><a href="../tags/tunnel/">Tunnel</a></li>
|
||||
|
||||
<li><a href="../tags/vpn/">Vpn</a></li>
|
||||
|
||||
<li><a href="../tags/vps/">Vps</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../js/search.js"></script>
|
||||
<script src="../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,222 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Tags on docs.a2v.space</title>
|
||||
<link>/tags/</link>
|
||||
<description>Recent content in Tags on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Amnezia</title>
|
||||
<link>/tags/amnezia/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/amnezia/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Angular</title>
|
||||
<link>/tags/angular/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/angular/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Api</title>
|
||||
<link>/tags/api/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/api/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Authentication</title>
|
||||
<link>/tags/authentication/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/authentication/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Companion</title>
|
||||
<link>/tags/companion/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/companion/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Database</title>
|
||||
<link>/tags/database/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/database/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Devops</title>
|
||||
<link>/tags/devops/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/devops/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Docker</title>
|
||||
<link>/tags/docker/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/docker/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Docker-Compose</title>
|
||||
<link>/tags/docker-compose/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/docker-compose/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Docs</title>
|
||||
<link>/tags/docs/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/docs/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Eversolo</title>
|
||||
<link>/tags/eversolo/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/eversolo/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Go</title>
|
||||
<link>/tags/go/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/go/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Hugo</title>
|
||||
<link>/tags/hugo/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/hugo/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Identity</title>
|
||||
<link>/tags/identity/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/identity/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Infrastructure</title>
|
||||
<link>/tags/infrastructure/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/infrastructure/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Leadera</title>
|
||||
<link>/tags/leadera/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/leadera/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Llm</title>
|
||||
<link>/tags/llm/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/llm/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Music</title>
|
||||
<link>/tags/music/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/music/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Nginx</title>
|
||||
<link>/tags/nginx/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/nginx/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Ollama</title>
|
||||
<link>/tags/ollama/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/ollama/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Openclaw</title>
|
||||
<link>/tags/openclaw/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/openclaw/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Opencode</title>
|
||||
<link>/tags/opencode/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/opencode/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Postgresql</title>
|
||||
<link>/tags/postgresql/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/postgresql/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Reg.ru</title>
|
||||
<link>/tags/reg.ru/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/reg.ru/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Reverse-Proxy</title>
|
||||
<link>/tags/reverse-proxy/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/reverse-proxy/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Ssh</title>
|
||||
<link>/tags/ssh/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/ssh/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Streamer</title>
|
||||
<link>/tags/streamer/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/streamer/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Tunnel</title>
|
||||
<link>/tags/tunnel/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/tunnel/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Vpn</title>
|
||||
<link>/tags/vpn/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/vpn/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Vps</title>
|
||||
<link>/tags/vps/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/tags/vps/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,144 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Infrastructure — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Infrastructure</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../diary/2026-03-29/">29 марта 2026</a></li>
|
||||
|
||||
<li><a href="../../creds/vpn-vps/">VPN VPS</a></li>
|
||||
|
||||
<li><a href="../../creds/vps-reg-ru/">VPS reg.ru</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Infrastructure on docs.a2v.space</title>
|
||||
<link>/tags/infrastructure/</link>
|
||||
<description>Recent content in Infrastructure on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/infrastructure/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>29 марта 2026</title>
|
||||
<link>/diary/2026-03-29/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/diary/2026-03-29/</guid>
|
||||
<description><h2 id="timeline">Timeline</h2>
<ul>
<li><strong>20:03</strong> — Настроили Angular + Go проекты (leadera) через pm2, удалили proxy.conf, подняли PostgreSQL в Docker</li>
<li><strong>20:31</strong> — Изучили API Eversolo T8 — полный список REST-эндпоинтов для управления музыкой</li>
<li><strong>20:49</strong> — Обсудили важность записи контекста в файлы для сохранения памяти между сессиями</li>
<li><strong>21:13</strong> — Начали проект docs.a2v.space — персональная документация на Hugo</li>
<li><strong>21:44</strong> — Завершили настройку Identity (Братан, SOUL.md, USER.md, IDENTITY.md)</li>
<li><strong>22:15</strong> — Документировали инфраструктуру: VPS reverse proxy (claw.a2v.space, code.a2v.space, sand.a2v.space, docs.a2v.space)</li>
<li><strong>22:31</strong> — Настроили docs.a2v.space: Hugo сайт, 83 страницы, Bootstrap 5 тёмная тема, AES-256-GCM шифрование кредов (мастер-пароль: Popoloka16!)</li>
<li><strong>22:47</strong> — Добавили Basic auth: agaltsovav / Magamet787! для доступа к документации</li>
<li><strong>23:02</strong> — Создали cron задачу docs-a2v-daily-sync на ежедневное обновление в 03:00 МСК</li>
<li><strong>23:18</strong> — Полностью задокументировали Eversolo T8 API (воспроизведение, громкость, дисплей, питание, поиск и т.д.)</li>
<li><strong>23:45</strong> — Переписали TOOLS.md как полный справочник по инфраструктуре</li>
</ul>
<h2 id="eversolo-companion--статус-проекта">Eversolo Companion — статус проекта</h2>
<p><strong>Backend (Go + Gin):</strong></p></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>VPN VPS</title>
|
||||
<link>/creds/vpn-vps/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/vpn-vps/</guid>
|
||||
<description>YEI16NAJ78d3lmSa/lca8Zxczt+u6GyMUYHduX47VoFQdj0Ixozd8R6yXoB7eM+AjhCtNGkOxGlOj2s73ABOBjLEIVIhD4Z+xTyzdtah4VpyLoltYOeNYsnbIIFARdF/FBYq5COXohhXs33K5ozznrtDd/awbKMjl/sbQqjXAZ+A3ZSob6/5uU+fFKetXLR6v4ZLAYQ57iiD21ImSLSggwv+rJgK5XyPDKEPD4N5nOsiDrLgoukVBMvgJ54PqfPp2Hni+2tdKOlMnOG2npTuu4SkyALcfFar</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>VPS reg.ru</title>
|
||||
<link>/creds/vps-reg-ru/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/vps-reg-ru/</guid>
|
||||
<description>IpYXLMtgCFlGQ550DZCLjq37VsnNqL08Rn03iRS7kQ7ozBZNsiZySFzDAvYh4xIHytRDy0Sz0KGUXekr0S+cNiJsmtZ8kj0Pd0JhevhxTMZF2khFvs/LFWoTL5ZwAJ34y/qfLw2gaWX90VZDu0wO+KeAQeXhrWmol/2zUlfWX1AihyYqD2vRz+h2FcjD8ubYOXG35PyX7OlV1HPXgDv5X/bFNrxzPc867UOwB4aGxY9a</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,142 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Leadera — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Leadera</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/leadera-db-docker/">Mac Studio — leadera-api БД (docker-compose)</a></li>
|
||||
|
||||
<li><a href="../../creds/leadera-db-local/">Mac Studio — leadera-api БД (локальная)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Leadera on docs.a2v.space</title>
|
||||
<link>/tags/leadera/</link>
|
||||
<description>Recent content in Leadera on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/leadera/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Mac Studio — leadera-api БД (docker-compose)</title>
|
||||
<link>/creds/leadera-db-docker/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/leadera-db-docker/</guid>
|
||||
<description>NYVK4PEGwmOHmAnGk8IAUc+lyFJtnEAvX6ZddBro/ILRWHOXBGYywgglFvQZ18BLDLb5DuA8GPAIdB/LwTHRXYO0KsmtlZQVWGEeeXlXAoEXpa5theoOQhebkW6LmiKyNGAVW2z9rK3nz6NnztYdn49LvGMjrHuR4IwCLbl/pYa96CPNRnxGDFlduFi8lMSspM0rBFi/bZhNGhzy36ViCl+aKr5P9cle0ZvM8E8av/6c5JjgDt88QFI3VYdTaTCE0+uHsXlnJN7Qgg/KH7kD</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Mac Studio — leadera-api БД (локальная)</title>
|
||||
<link>/creds/leadera-db-local/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/creds/leadera-db-local/</guid>
|
||||
<description>p7Iw7Y3zbj1kLBcbOXGoO27oDwF85AhxBW7saT538hxi0ogJpyFeM49GDuLHzxuyknvdNC/rx3tb4AFnGkCeHSrrCmj+VK8Zxt7ujeujVJSRuOeeUlsqkHdlmaiXl2KQknrIsqVCi3Tnn0V5qcFxvo+1Ktc+surF6bBpWrTHzWV5mLtWVfD6C6kvvP/UFldFBD6v+FQs79yfoOe/j/bUrtpt6v5VndbbBmhUAQcy1BV2rpXxO373dTcLQ6coRWkt/RFo</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Llm — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Llm</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../plans/ollama-openclaw/">Настроить интеграцию Ollama с OpenClaw</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Llm on docs.a2v.space</title>
|
||||
<link>/tags/llm/</link>
|
||||
<description>Recent content in Llm on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/llm/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Настроить интеграцию Ollama с OpenClaw</title>
|
||||
<link>/plans/ollama-openclaw/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/ollama-openclaw/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.</p>
<h2 id="проблема">Проблема</h2>
<p>Модель <code>qwen3.5:9b</code> добавлена в конфиг <code>openclaw.json</code>, но не отображается в <code>openclaw models list</code>.</p>
<h2 id="статус">Статус</h2>
<p>Отложено по решению Антона.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Music — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Music</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../kb/eversolo-api/">Eversolo T8 API</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Music on docs.a2v.space</title>
|
||||
<link>/tags/music/</link>
|
||||
<description>Recent content in Music on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/music/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Eversolo T8 API</title>
|
||||
<link>/kb/eversolo-api/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/kb/eversolo-api/</guid>
|
||||
<description><p>Eversolo T8 — музыкальный стример.</p>
<p><strong>IP:</strong> 192.168.0.156
<strong>Порт:</strong> 9529
<strong>Авторизация:</strong> нет</p>
<p>Базовый URL: <code>http://192.168.0.156:9529</code></p>
<h2 id="воспроизведение">Воспроизведение</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Play/Pause</td>
 <td><code>/ZidooMusicControl/v2/playOrPause</code></td>
 </tr>
 <tr>
 <td>Следующий трек</td>
 <td><code>/ZidooMusicControl/v2/playNext</code></td>
 </tr>
 <tr>
 <td>Предыдущий трек</td>
 <td><code>/ZidooMusicControl/v2/playLast</code></td>
 </tr>
 <tr>
 <td>Перемотка (ms)</td>
 <td><code>/ZidooMusicControl/v2/seekTo?time=&lt;ms&gt;</code></td>
 </tr>
 <tr>
 <td>Воспроизвести по ID</td>
 <td><code>/ZidooMusicControl/v2/playMusic?type=4&amp;id=&lt;id&gt;</code></td>
 </tr>
 <tr>
 <td>Состояние</td>
 <td><code>/ZidooMusicControl/v2/getState</code></td>
 </tr>
 </tbody>
</table>
<h2 id="громкость">Громкость</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Громкость вверх</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeUp</code></td>
 </tr>
 <tr>
 <td>Громкость вниз</td>
 <td><code>/ZidooControlCenter/RemoteControl/sendkey?key=Key.VolumeDown</code></td>
 </tr>
 <tr>
 <td>Точная громкость</td>
 <td><code>/ZidooMusicControl/v2/setDevicesVolume?volume=&lt;0-200&gt;</code></td>
 </tr>
 <tr>
 <td>Mute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=1</code></td>
 </tr>
 <tr>
 <td>Unmute</td>
 <td><code>/ZidooMusicControl/v2/setMuteVolume?isMute=0</code></td>
 </tr>
 </tbody>
</table>
<h2 id="входывыходы">Входы/Выходы</h2>
<table>
 <thead>
 <tr>
 <th>Действие</th>
 <th>URL</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td>Получить список</td>
 <td><code>/ZidooMusicControl/v2/getInputAndOutputList</code></td>
 </tr>
 <tr>
 <td>Установить вход</td>
 <td><code>/ZidooMusicControl/v2/setInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 <tr>
 <td>Установить выход</td>
 <td><code>/ZidooMusicControl/v2/setOutInputList?tag=&lt;tag&gt;&amp;index=&lt;n&gt;</code></td>
 </tr>
 </tbody>
</table>
<p>Теги выхода: RCA, XLRRCA, XLR, HDMI, SPDIF, USB</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Nginx — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Nginx</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../creds/docs-a2v-space-auth/">docs.a2v.space Basic Auth</a></li>
|
||||
|
||||
<li><a href="../../guides/vps-reverse-proxy/">Настройка VPS как реверс-прокси</a></li>
|
||||
|
||||
<li><a href="../../guides/claw-a2v-space/">Подключение claw.a2v.space (OpenClaw)</a></li>
|
||||
|
||||
<li><a href="../../guides/code-a2v-space/">Подключение code.a2v.space (OpenCode)</a></li>
|
||||
|
||||
<li><a href="../../guides/sand-a2v-space/">Подключение sand.a2v.space (Leadera Project)</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,140 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru-ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Ollama — docs.a2v.space</title>
|
||||
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../css/custom.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="../../">docs.a2v.space</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarMain" aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarMain">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../diary/">Дневник</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../kb/">База знаний</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../plans/">Планы</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../guides/">Инструкции</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="../../creds/">Креды</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="d-flex search-form" role="search">
|
||||
<input class="form-control me-2" type="search" placeholder="Поиск..." aria-label="Search" id="search-input">
|
||||
<button class="btn btn-outline-light" type="submit">Найти</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-light d-md-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar" aria-expanded="false" aria-controls="sidebar">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<div id="search-results" class="search-results" style="display: none;">
|
||||
<div class="search-results-content">
|
||||
<button type="button" class="btn-close float-end" id="close-search"></button>
|
||||
<h5>Результаты поиска</h5>
|
||||
<ul id="results-list"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
||||
<aside class="col-md-3 col-lg-2 d-md-block sidebar collapse" id="sidebar">
|
||||
<div class="sidebar-content">
|
||||
|
||||
|
||||
|
||||
<h6>Разделы</h6>
|
||||
<ul class="nav flex-column">
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../diary/">Дневник</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../kb/">База знаний</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../plans/">Планы</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../guides/">Инструкции</a></li>
|
||||
|
||||
<li class="nav-item"><a class="nav-link" href="../../creds/">Креды</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<main class="col-md-9 col-lg-10 main-content">
|
||||
|
||||
<div class="article-content">
|
||||
<h1>Ollama</h1>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="../../plans/ollama-openclaw/">Настроить интеграцию Ollama с OpenClaw</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<p class="text-center mb-0">© 2026 docs.a2v.space</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@7.0.0/dist/fuse.min.js"></script>
|
||||
|
||||
|
||||
<script src="../../js/search.js"></script>
|
||||
<script src="../../js/creds.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Ollama on docs.a2v.space</title>
|
||||
<link>/tags/ollama/</link>
|
||||
<description>Recent content in Ollama on docs.a2v.space</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>ru-ru</language>
|
||||
<lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/tags/ollama/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Настроить интеграцию Ollama с OpenClaw</title>
|
||||
<link>/plans/ollama-openclaw/</link>
|
||||
<pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
|
||||
<guid>/plans/ollama-openclaw/</guid>
|
||||
<description><h2 id="описание">Описание</h2>
<p>Добавить поддержку Ollama в OpenClaw для использования локальных LLM моделей.</p>
<h2 id="проблема">Проблема</h2>
<p>Модель <code>qwen3.5:9b</code> добавлена в конфиг <code>openclaw.json</code>, но не отображается в <code>openclaw models list</code>.</p>
<h2 id="статус">Статус</h2>
<p>Отложено по решению Антона.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user