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,145 @@
|
||||
# Design — Deploy GoToSocial
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
Internet
|
||||
│ 443
|
||||
▼
|
||||
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 (v0.22.1) │
|
||||
│ config.yaml (host=social.dedinit.ru, │
|
||||
│ account-domain=dedinit.ru) │
|
||||
│ volumes: data/ (sqlite.db + storage) │
|
||||
│ metrics :8080/metrics (OTEL→prom) │
|
||||
│ logs: json → promtail → Loki │
|
||||
│ backup.sh → backups/ → Я.Диск │
|
||||
└──────────────────────────────────────┘
|
||||
```
|
||||
|
||||
- GtS живёт на bigbox (10.8.0.2), как остальные сервисы
|
||||
- Caddy на vps02 проксирует `social.dedinit.ru` → `10.8.0.2:8080` (через WG)
|
||||
- Split-domain: аккаунты `@user@dedinit.ru`, сервер на `social.dedinit.ru`
|
||||
- Apex (`dedinit.ru` на Jino, 81.177.135.38) получает .well-known редиректы
|
||||
|
||||
## Файлы
|
||||
|
||||
### /opt/gotosocial/docker-compose.yml
|
||||
|
||||
```yaml
|
||||
services:
|
||||
gotosocial:
|
||||
image: superseriousbusiness/gotosocial:v0.22.1
|
||||
container_name: gotosocial
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- ./data:/gotosocial/storage
|
||||
- ./config.yaml:/gotosocial/config.yaml:ro
|
||||
```
|
||||
|
||||
- Порт 8080 (внутри и наружу); проброс на bigbox-интерфейс или в WG-подсеть
|
||||
- `config.yaml` монтируется read-only
|
||||
- Пароль SMTP и секреты — из `.env` (переменные `GTS_*` приоритетнее config.yaml)
|
||||
|
||||
### /opt/gotosocial/config.yaml (ключевое)
|
||||
|
||||
```yaml
|
||||
host: "social.dedinit.ru"
|
||||
account-domain: "dedinit.ru"
|
||||
protocol: "https"
|
||||
bind-address: "0.0.0.0"
|
||||
port: 8080
|
||||
trusted-proxies:
|
||||
- "10.8.0.2" # Caddy (bigbox) — через WG от vps02
|
||||
|
||||
instance-account-domain: "dedinit.ru"
|
||||
instance-expose-peers: true # опционально
|
||||
instance-expose-suspended: false
|
||||
|
||||
# SQLite
|
||||
db-type: "sqlite"
|
||||
db-address: "/gotosocial/storage/sqlite.db"
|
||||
storage-local-base-path: "/gotosocial/storage/media"
|
||||
|
||||
# SMTP (smtp.jino.ru)
|
||||
smtp-host: "smtp.jino.ru"
|
||||
smtp-port: 587
|
||||
smtp-username: "social@dedinit.ru"
|
||||
smtp-password: "${GTS_SMTP_PASSWORD}"
|
||||
smtp-from: "social@dedinit.ru"
|
||||
|
||||
# Метрики
|
||||
metrics-enabled: true
|
||||
metrics-auth-enabled: false # защитим на уровне прокси при необходимости
|
||||
|
||||
# Логи
|
||||
log-level: "info"
|
||||
log-format: "json"
|
||||
log-timestamp-format: "2006-01-02T15:04:05.000Z07:00"
|
||||
```
|
||||
|
||||
### /opt/gotosocial/.env (в git исключён)
|
||||
|
||||
```bash
|
||||
GTS_SMTP_PASSWORD='fF@4guOf9spE2#8$'
|
||||
# любые другие секреты
|
||||
```
|
||||
|
||||
### /opt/gotosocial/backup.sh
|
||||
|
||||
- `VACUUM INTO` / `sqlite3 .backup` для consistent SQLite
|
||||
- tar.gz: `data/` (sqlite + storage/media) в `backups/gotosocial_<ts>.tar.gz`
|
||||
- env: `backups/gotosocial_env_<ts>.tar.gz`
|
||||
- копия на `/mnt/yandex-disk/backup/gotosocial-backups/`
|
||||
- ротация: локально 7 дней, ЯД 30 дней
|
||||
- проверка mountpoint ЯД, exit != 0 при ошибке
|
||||
|
||||
### /opt/gotosocial/README.md
|
||||
|
||||
- Порт-маппинги, структура, команды, бэкап/восстановление, обновление
|
||||
|
||||
## Применение
|
||||
|
||||
```bash
|
||||
# bigbox
|
||||
cd /opt/gotosocial
|
||||
docker compose up -d
|
||||
docker logs -f gotosocial
|
||||
|
||||
# создание пользователя (после первого старта)
|
||||
docker compose exec gotosocial gotosocial admin account create \
|
||||
--username estorozhenko --email kpa39l@yandex.ru \
|
||||
--password '<pass>' --confirmation
|
||||
|
||||
# vps02 — Caddyfile
|
||||
# добавить блок social.dedinit.ru { reverse_proxy 10.8.0.2:8080 }
|
||||
docker exec caddy caddy reload --config /etc/caddy/Caddyfile
|
||||
|
||||
# apex dedinit.ru — добавить .well-known редиректы на Jino
|
||||
```
|
||||
|
||||
## Откат (Rollback)
|
||||
|
||||
1. `docker compose down` на bigbox — сервис остановлен
|
||||
2. Удалить блок из Caddyfile на vps02, `caddy reload`
|
||||
3. Удалить/откатить .well-known редиректы на apex
|
||||
4. Данные (data/) не удаляются — можно перезапустить
|
||||
|
||||
## Проверка
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8080/ # 200
|
||||
curl -s http://127.0.0.1:8080/metrics | grep -E 'go_goroutines|gin_|bun_' # метрики
|
||||
echo | openssl s_client -connect social.dedinit.ru:443 2>/dev/null | openssl x509 -noout -dates
|
||||
curl -s 'https://social.dedinit.ru/.well-known/webfinger?resource=acct:estorozhenko@dedinit.ru'
|
||||
bash /opt/gotosocial/backup.sh && ls -lh /opt/gotosocial/backups/
|
||||
```
|
||||
Reference in New Issue
Block a user