Commit graph

4 commits

Author SHA1 Message Date
lekss361
cdce8e84a1 fix(security): применить ревью PR #426 — route wrap + log rotation + base64 busybox + runbook log fix
- Caddyfile: обернуть gendsgn.ru и :80 в route { } — сохраняет порядок директив,
  /health и /preview/* теперь действительно short-circuit до basic_auth
- Caddyfile: добавить roll_size 50MiB / roll_keep 5 / roll_keep_for 720h в gendsgn.ru.log
- scripts/auth/add_user.sh: заменить base64 -w 0 (GNU-only) на base64 | tr -d "\n"
  (busybox-compatible, caddy:2 Alpine base image)
- docs/runbooks/basic_auth_management.md: убрать несуществующий auth_audit.log,
  заменить на реальную команду grep по статусу 401 в gendsgn.ru.log

caddy validate: Valid configuration (confirmed locally via caddy:2 container).
Ref: #426 (comment)
2026-05-23 11:11:50 +03:00
lekss361
b89b34c300 feat(security): закрыть gendsgn.ru basic_auth gate (multi-user, 11 users)
Добавить Caddy basic_auth gate на gendsgn.ru и :80 для pilot demo 28.05.2026.
Только /health и /preview/* остаются публичными. Управление пользователями
через scripts/auth/ скрипты + git history как audit trail.
2026-05-23 10:55:03 +03:00
lekss361
b0f5c38894 feat(deploy): split obsidian stack from main + path-filtered GHA
Obsidian Self-hosted LiveSync (CouchDB) выведен в отдельный docker-compose
stack и GHA workflow. Любой стек теперь редеплоится независимо.

* docker-compose.obsidian.yml: только couchdb в shared external network
* docker-compose.prod.yml: убрана couchdb-секция; caddy подключён к
  shared network для маршрута obsidian.gendsgn.ru → couchdb:5984
* .github/workflows/deploy-obsidian.yml: новый workflow с path-filters
  (триггерится только при изменениях obsidian-related файлов)
* .github/workflows/deploy.yml: + path-filters (триггерится только при
  main-related файлах) + создание shared network в bootstrap
* docs/obsidian-livesync.md: обновлены инструкции под split-архитектуру

После push:
1. ssh gendesign 'docker network create gendesign_shared'  (один раз)
2. Прописать COUCHDB_USER/PASSWORD в backend/.env.runtime
3. Добавить DNS A-record obsidian.gendsgn.ru → IP VPS
4. git push → GHA задеплоит обе части независимо

Преимущества:
- Изменения main не разрывают LiveSync клиентов
- Изменения obsidian не рестартуют main
- Падение obsidian-стека не влияет на основное приложение
2026-05-11 09:51:31 +03:00
lekss361
1c47f781f0 Initial commit: Discovery MVP docs (v2.1 + v2.2) 2026-04-25 08:40:09 +03:00