# 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