# GoToSocial — PRD ## Цель Развернуть собственную федиверсную ноду ActivityPub (GoToSocial) на личном домене dedinit.ru — «нода для обычных людей». Аккаунты `@user@dedinit.ru`, сервер на `https://social.dedinit.ru`. ## Пользователи - Владелец (admin): estorozhenko (@estorozhenko@dedinit.ru) - Приглашённые пользователи («обычные люди») ## Функциональные требования - Инстанс GoToSocial работает в Docker на bigbox (контейнер из /opt/gotosocial) - Split-domain: `host=social.dedinit.ru`, `account-domain=dedinit.ru` (аккаунты @user@dedinit.ru) - База данных: SQLite (файл в volume ./data) - Медиа: локальное хранилище (./data/storage), монтируется в контейнер - Реверс-прокси: Caddy на vps02 (social.dedinit.ru → 10.8.0.2:8080 через WireGuard) - TLS: Let's Encrypt автоматически (Caddy) - SMTP: отправка писем через smtp.jino.ru:587 (STARTTLS), ящик social@dedinit.ru - Метрики: Prometheus (OTEL экспортёр, /metrics) - Логи: JSON → Promtail → Loki - Бэкап: consistent SQLite (VACUUM INTO) + медиа; локально 7 дней, Яндекс.Диск 30 дней ## Нефункциональные требования - Версия GoToSocial фиксируется тегом релиза (v0.22.1), обновление вручную - Секреты (.env) не попадают в git (в .gitignore) - host/account-domain НЕ меняются после первого запуска (необратимо) - Рестарт контейнера: unless-stopped - Бэкап при недоступном Яндекс.Диске — ошибка (exit != 0), не тихий fail ## Границы (что НЕ делаем сейчас) - Мониторинг бэкапов + дашборд Grafana — **post-MVP** - Импорт из Telegram — **post-MVP** - Postgres вместо SQLite — нет (выбор пользователя, обратимо только до старта) - Remote-медиа не бэкапится (пере-фетчится) ## Критерии готовности (MVP) - [ ] `docker compose up -d` на bigbox — контейнер Up, :8080 отвечает 200 - [ ] Caddy на vps02: https://social.dedinit.ru отвечает 200, сертификат LE - [ ] Split-domain: мылтиаккаунт резолвится `acct:estorozhenko@dedinit.ru` (webfinger на apex) - [ ] SMTP-письмо уходит (подтверждение email) - [ ] backup.sh запускается, архив на ЯД - [ ] Админ-аккаунт estorozhenko создан и промоутнут