mirror of
https://gitverse.ru/kpa39l/gotosocial.git
synced 2026-09-29 01:50:08 +00:00
138 lines
5.4 KiB
Markdown
138 lines
5.4 KiB
Markdown
# GoToSocial — нода на social.dedinit.ru
|
|
|
|
Split-domain федиверсная нода ActivityPub (GoToSocial v0.22.1) в Docker на bigbox.
|
|
Аккаунты: `@user@dedinit.ru`. Сервер: `https://social.dedinit.ru`.
|
|
|
|
## Архитектура
|
|
|
|
```
|
|
Internet ──► vps02 87.242.100.206 (Caddy 2, host net)
|
|
social.dedinit.ru ──► reverse_proxy 10.8.0.2:8080
|
|
│ WireGuard 10.8.0.0/24
|
|
▼
|
|
bigbox 10.8.0.2 (Docker)
|
|
└─ gotosocial (superseriousbusiness/gotosocial:v0.22.1)
|
|
volumes: ./data → /gotosocial/storage (SQLite + медиа)
|
|
./config.yaml → /gotosocial/config.yaml (ro)
|
|
env_file: .env (секреты)
|
|
```
|
|
|
|
## Порт-маппинг
|
|
|
|
| Порт (host bigbox) | Контейнер | Назначение |
|
|
|---|---|---|
|
|
| 8080 | 8080 | HTTP GoToSocial (API/UI), проксируется Caddy с vps02 |
|
|
|
|
- Внешний доступ: только через `https://social.dedinit.ru` (Caddy, 80/443 на vps02)
|
|
- `172.29.0.0/16` — docker network `gotosocial`
|
|
|
|
## Структура
|
|
|
|
```
|
|
/opt/gotosocial/
|
|
├── docker-compose.yml # сервис (фиксированный тег v0.22.1)
|
|
├── config.yaml # конфиг GtS (host/account-domain/SMTP/метрики)
|
|
├── .env # секреты (в git исключён)
|
|
├── backup.sh # consistent бэкап SQLite + медиа → ЯД
|
|
├── data/ # данные: sqlite.db + storage/ (медиа)
|
|
├── backups/ # локальные бэкапы (7 дней)
|
|
└── openspec/ # OpenSpec-воркфлоу (changes/deploy-gotosocial)
|
|
```
|
|
|
|
## Правила изменений (обязательно)
|
|
|
|
**Все изменения проекта** (код, docker-compose.yml, config.yaml, документы,
|
|
статусы) проводятся **только через OpenSpec-воркфлоу**:
|
|
|
|
1. `openspec new change '<имя>'` — proposal → specs (delta) → design → tasks
|
|
2. выполнение задач из `tasks.md` (каждая — с реальной верификацией)
|
|
3. `openspec archive '<имя>'` — влить delta в `openspec/specs/`, коммит
|
|
|
|
Прямое редактирование файлов или коммиты без openspec-change **запрещены**
|
|
(SMTP-фикс 13.09 — прецедент, оформлен постфактум как
|
|
`fix-smtp-from-address`). Исключение — только явная команда владельца.
|
|
|
|
Подробно: `AGENTS.md` (корень проекта).
|
|
|
|
## Команды
|
|
|
|
```bash
|
|
# Запуск / остановка / логи
|
|
docker compose up -d
|
|
docker compose down
|
|
docker logs -f gotosocial
|
|
|
|
# Конфиг проверить
|
|
docker compose config --quiet
|
|
|
|
# Создать пользователя (первый раз) + сделать админом
|
|
docker compose exec gotosocial gotosocial admin account create \
|
|
--username estorozhenko --email kpa39l@yandex.ru \
|
|
--password 'ВРЕМЕННЫЙ_ПАРОЛЬ' --confirmation
|
|
docker compose exec gotosocial gotosocial admin account promote \
|
|
--username estorozhenko
|
|
```
|
|
|
|
## Реверс-прокси (vps02)
|
|
|
|
Caddyfile на vps02:
|
|
```
|
|
social.dedinit.ru {
|
|
reverse_proxy 10.8.0.2:8080
|
|
}
|
|
```
|
|
Применить: `docker exec caddy caddy reload --config /etc/caddy/Caddyfile`
|
|
TLS (Let's Encrypt) Caddy выдаёт автоматически.
|
|
|
|
## Split-domain (.well-known на apex dedinit.ru)
|
|
|
|
На apex `dedinit.ru` (хостинг Jino) добавить редиректы:
|
|
- `/.well-known/webfinger` → `https://social.dedinit.ru/.well-known/webfinger`
|
|
- `/.well-known/nodeinfo` → `https://social.dedinit.ru/.well-known/nodeinfo`
|
|
- `/.well-known/host-meta` → `https://social.dedinit.ru/.well-known/host-meta`
|
|
|
|
Проверка: `curl -sL 'https://dedinit.ru/.well-known/webfinger?resource=acct:estorozhenko@dedinit.ru'`
|
|
|
|
> ВАЖНО: `host` и `account-domain` после первого запуска менять нельзя (необратимо).
|
|
|
|
## Бэкап
|
|
|
|
```bash
|
|
bash /opt/gotosocial/backup.sh
|
|
```
|
|
- SQLite consistent (`VACUUM INTO`), медиа (`storage/`), `.env` — отдельным архивом
|
|
- Локально: `backups/` (ротация 7 дней)
|
|
- Яндекс.Диск: `/mnt/yandex-disk/backup/gotosocial-backups/` (ротация 30 дней)
|
|
- При недоступности ЯД — exit code != 0, ошибка в stderr
|
|
|
|
## Восстановление
|
|
|
|
```bash
|
|
# остановить сервис
|
|
docker compose down
|
|
# распаковать архив данных
|
|
tar xzf gotosocial_<TS>.tar.gz -C /opt/gotosocial/data/
|
|
# вернуть .env при необходимости
|
|
tar xzf gotosocial_env_<TS>.tar.gz -C /opt/gotosocial/
|
|
# запустить
|
|
docker compose up -d
|
|
```
|
|
|
|
## Обновление
|
|
|
|
```bash
|
|
# 1. бэкап: bash backup.sh
|
|
# 2. поменять тег в docker-compose.yml (фиксированный, напр. v0.22.2)
|
|
# 3. docker compose pull && docker compose up -d
|
|
```
|
|
|
|
## Метрики и логи
|
|
|
|
- Метрики: `:8080/metrics` (Prometheus, OTEL) — Go runtime / Gin / Bun
|
|
- Логи: `log-format: json` → собираются Promtail → Loki
|
|
- Дашборд Grafana и мониторинг бэкапов — post-MVP
|
|
|
|
## SMTP
|
|
|
|
- `smtp.jino.ru:587`, STARTTLS, логин `social@dedinit.ru`
|
|
- Пароль в `.env` (`GTS_SMTP_PASSWORD`), в git не попадает |