mirror of
https://gitverse.ru/kpa39l/gotosocial.git
synced 2026-09-29 09:55:10 +00:00
openspec: change deploy-gotosocial — развертывание GoToSocial (compose+config+backup+docs)
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# 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)
|
||||
```
|
||||
|
||||
## Команды
|
||||
|
||||
```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 не попадает
|
||||
Reference in New Issue
Block a user