openspec: change deploy-gotosocial — развертывание GoToSocial (compose+config+backup+docs)

This commit is contained in:
2026-09-06 19:09:50 +00:00
commit d385d8b42e
19 changed files with 1888 additions and 0 deletions
@@ -0,0 +1,67 @@
# Tasks — Deploy GoToSocial
## 1. Базовая структура проекта
- [ ] Создан `/opt/gotosocial` с docker-compose.yml, config.yaml, .env, backup.sh, README.md
- [ ] Проверка: `ls -la /opt/gotosocial` содержит файлы
## 2. Конфигурация GoToSocial
- [ ] config.yaml: host=social.dedinit.ru, account-domain=dedinit.ru, protocol=https, port=8080, trusted-proxies=[10.8.0.2]
- [ ] База SQLite: `db-type: sqlite`, `db-address` в volume
- [ ] SMTP: smtp.jino.ru:587, social@dedinit.ru, пароль из .env
- [ ] Метрики: `metrics-enabled: true` + OTEL prometheus env
- [ ] Логи: `log-format: json`
- [ ] Проверка: `docker compose config` успешен, ключи на месте
## 3. docker-compose.yml
- [ ] Образ `superseriousbusiness/gotosocial:v0.22.1` (фиксированный тег), restart unless-stopped
- [ ] ports: 8080:8080, volumes: ./data, ./config.yaml:ro, env_file: .env
- [ ] Проверка: `docker compose config --quiet`
## 4. .env
- [ ] Создан .env с `GTS_SMTP_PASSWORD` (и др. секретами), в .gitignore
- [ ] Проверка: `.env` не виден в git (`git check-ignore .env`)
## 5. Запуск и создание админа
- [ ] `docker compose up -d` — контейнер Up
- [ ] `curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8080/` → 200
- [ ] Админ: `gotosocial admin account create --username estorozhenko --email kpa39l@yandex.ru --confirmation`
- [ ] Проверка: `docker compose exec gotosocial gotosocial admin account promote --username estorozhenko` (или через CLI)
## 6. Реверс-прокси Caddy на vps02
- [ ] Caddyfile: `social.dedinit.ru { reverse_proxy 10.8.0.2:8080 }`, caddy reload
- [ ] Проверка: `curl https://social.dedinit.ru/` → 200, сертификат LE
## 7. Split-domain: .well-known на apex
- [ ] На dedinit.ru (Jino) добавлены редиректы webfinger/nodeinfo/host-meta → social.dedinit.ru
- [ ] Проверка: `curl -sL 'https://dedinit.ru/.well-known/webfinger?resource=acct:estorozhenko@dedinit.ru'` → 200 JSON
## 8. Метрики/логи
- [ ] `/metrics` отдаёт метрики
- [ ] Prometheus job `gotosocial` (scrape 127.0.0.1:8080) — если включено в стек
- [ ] Promtail собирает docker-логи gotosocial
- [ ] Проверка: `curl http://127.0.0.1:9090/api/v1/targets` → gotosocial UP
## 9. Бэкап
- [ ] `backup.sh`: SQLite VACUUM INTO + медиа, tar.gz, ротация 7/30 дней, копия на ЯД
- [ ] Проверка: `bash backup.sh` → архив создан, на ЯД есть, exit 0
- [ ] Расписание (cron/systemd timer) — ежедневно, тихо
## 10. Документация
- [ ] README.md: порты, структура, бэкап/восстановление, обновление
- [ ] Проверка: README содержит порт-маппинг и команды
## Отложено (post-MVP)
- [ ] Дашборд Grafana (GtS + бэкапы)
- [ ] Мониторинг бэкапов
- [ ] Импорт из Telegram