Files
gotosocial/STATUS.md
T
estorozhenko c8d490d1c6 feat(webclient): Phanpy on web.dedinit.ru; clean footer without pride flags
- phanpy service (openengineering/phanpy:latest) :8383->8080, Caddy vps02 → 10.8.0.2:8383
- custom page_footer.tmpl mounted ro: removes 🏳️🌈/🏳️⚧️/🦥 from footer
- scripts/check-pride.sh + check-pride.py: detect LGBTQ flags in GtS templates (unicode-normalized),
  to run on every image upgrade
- STATUS.md: procedure for GtS upgrades
- openspec: add-webclient-and-clean-footer
2026-09-07 13:55:45 +00:00

95 lines
6.1 KiB
Markdown

# GoToSocial — Статус
Обновлено: 2026-09-07
## Текущее состояние
GoToSocial **запущен и работает** на social.dedinit.ru: контейнер Up, HTTPS 200, админ создан.
Split-domain работает: аккаунты `@user@dedinit.ru`, хост social.dedinit.ru, apex-webfinger отдаёт JSON.
Ежедневный cron-бэкап (02:00) активен и проверен.
## Сделано
### Запуск на bigbox (шаг 1)
- 2026-09-06: тег образа `0.22.1` (не `v0.22.1` — оригинала не существует), порт `8082:8080`
(8080 на bigbox занят NetBox!), права `data/` → 1000:1000
- 2026-09-06: конфиг через `GTS_*` env — docker-образ НЕ читает смонтированный config.yaml
(падал «host must be set»), .cache для Wazero
- 2026-09-06: админ `estorozhenko` создан/confirmed/promoted; HTTPS LE на social.dedinit.ru ✅
### Caddy vps02 (шаг 2)
- 2026-09-06: Caddyfile: `social.dedinit.ru { reverse_proxy 10.8.0.2:8082 }` + reload
(бэкап Caddyfile.bak-1788723018), сертификат LE выпущен сразу, сайт 200
### Split-domain apex Jino (шаг 3)
- 2026-09-06: .htaccess/mod_rewrite на Jino НЕ работают (проверено) → статический ответ:
- `/.well-known/webfinger?resource=...` → Apache 301 → `/webfinger/` → 200 JSON (index.html)
- `/.well-known/nodeinfo` → 301 → `/nodeinfo/` → 200 JSON
- `/.well-known/host-meta` → 200 XRD (text/xml)
- Файлы в `/dedinit.ru/.well-known/` (Jino) + `/opt/dedinit.ru/static/.well-known/` (в git, Hugo копирует)
### Крон бэкапа (шаг 4)
- 2026-09-06: backup.sh переписан на SQLite Backup API через python3 (sqlite3 CLI нет ни на хосте,
ни в контейнере); медиа из data/ (это и есть /gotosocial/storage), SQLite отдельно
- 2026-09-06: cron `gotosocial-backup-daily` (id 67308da56b6d), daily 02:00, no_agent, deliver local,
тихий (пустой stdout при успехе), проверен немедленным запуском (3 бэкапа 19:41-19:42)
- Локально 7 дней, ЯД 30 дней
### Git
- 2026-09-06: gotosocial commit d9951b6 запушен на gitverse (56f228a..d9951b6)
- 2026-09-06: dedinit.ru commit b049cb2 запушен на gitverse (3d2f07b..b049cb2)
### Веб-клиент Phanpy + чистый подвал (2026-09-07)
- Phanpy (openengineering/phanpy:latest) в docker-compose, порт 8383 (внутри nginx слушает 8080!) → https://web.dedinit.ru (Caddy vps02 → 10.8.0.2:8383)
- DNS: web.dedinit.ru A 87.242.100.206 (добавлен пользователем); TLS от Caddy (авто-LE)
- CORS на API GtS уже `*` — Phanpy работает из браузера напрямую; проверено preflight 204 + allow-origin
- Кастомный page_footer.tmpl (без 🏳️🌈🏳️⚧️🦥 в подвале), смонтирован volume `./web/template/page_footer.tmpl:ro`
- Проверка при обновлении GtS: `./scripts/check-pride.sh` (python3-детект юникода, нормализация; grep-эмодзи ловил ложные срабатывания)
## В работе / Следующие шаги
- [x] Регистрация открыта (10/день) + apex-webfinger динамический (change fix-apex-webfinger-and-registration, архив)
- [x] Веб-клиент Phanpy + чистый подвал (change add-webclient-and-clean-footer)
- [ ] Мониторинг: пробросить :9464 (метрики уже слушают), job в prometheus.yml, дашборд Grafana
(инструкция по метрикам GtS получена от пользователя 2026-09-06)
- [ ] Логи в json-формате при желании (log-format: json) — по умолчанию logfmt
## Процедура при обновлении версии GtS (важно!)
1. Обновить тег образа в docker-compose.yml (например `0.23.0`).
2. Проверить шаблон подвала на флаги ДО перезапуска:
```bash
IMAGE=superseriousbusiness/gotosocial:0.23.0 /opt/gotosocial/scripts/check-pride.sh
```
(скрипт создаёт временный контейнер из образа, копирует шаблоны, ищет 🏳️🌈🏳️⚧️).
3. Если найдены — обновить `/opt/gotosocial/web/template/page_footer.tmpl` (убрать span с эмодзи),
затем `docker compose up -d gotosocial`.
4. Проверить: `curl -s https://social.dedinit.ru/@kpa39l | grep -c '🏳'` → 0.
## Отложено (post-MVP, по решению пользователя)
- Мониторинг бэкапов (метрики в Prometheus + дашборд Grafana)
- Импорт из Telegram
## Как запустить / проверить
```bash
cd /opt/gotosocial
docker compose up -d
curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8082/ # 200
curl -s http://127.0.0.1:9464/metrics | head # метрики (в контейнере)
curl -s 'https://social.dedinit.ru/.well-known/webfinger?resource=acct:estorozhenko@dedinit.ru'
curl -s 'https://dedinit.ru/.well-known/webfinger?resource=acct:estorozhenko@dedinit.ru' # apex JSON
bash backup.sh && ls -lh backups/
```
## Ключевые артефакты
- /opt/gotosocial/docker-compose.yml, .env, backup.sh, README.md (config.yaml — reference, НЕ читается образом)
- gitverse.ru/kpa39l/gotosocial (истина), gitea.nixg.ru/estorozhenko/gotosocial (зеркало)
- /opt/dedinit.ru/static/.well-known/ (apex, в git b049cb2)
## Открытые вопросы
- Пароль админа: создан с паролем из сессии (если менялся — обновить в заметках)
- ZFS-бэкапы/другие ротации не требуются (хватает local 7д + ЯД 30д)