fix: EmptyState по центру и импорт SQLite без 413
Docker / build (push) Failing after 19s

Центрирование заглушек в графиках/Frame; лимит тела backup 100 MiB;
WAL checkpoint при экспорте и очистка -wal/-shm при импорте.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
DenozordecandCursor committed 2026-07-19 04:41:42 +07:00
1 parent 2931d6ee0f
commit e079a61811
12 files changed
+284 -62

No files matched your search

+20 -1
View File
@@ -177,15 +177,33 @@ docker compose down
## Бэкап
```bash
# SQLite
# SQLite (на хосте; контейнер лучше остановить на время копии)
docker compose stop app
cp /opt/vps-tracker/data/vps-tracker.db \
/opt/vps-tracker/data/vps-tracker.db.bak-$(date +%F)
# при WAL также можно скопировать *-wal / *-shm или делать бэкап через UI (там checkpoint)
docker compose start app
# ACME (Let's Encrypt)
docker run --rm -v vps_tracker_traefik_letsencrypt:/data -v "$PWD:/backup" alpine \
tar czf /backup/traefik-acme-$(date +%F).tgz -C /data .
```
### Импорт SQLite через UI
`POST /api/backup/database` принимает файл до **100 MiB** (`BACKUP_BODY_LIMIT_BYTES`, см. `env.traefik.example`).
Раньше лимит Fastify был **1 MiB** → браузерный **413 Content Too Large**.
Офлайн на новый сервер (без UI):
```bash
docker compose stop app
cp ./vps-tracker.db /opt/vps-tracker/data/vps-tracker.db
rm -f /opt/vps-tracker/data/vps-tracker.db-wal \
/opt/vps-tracker/data/vps-tracker.db-shm
docker compose start app
```
---
## Troubleshooting
@@ -199,6 +217,7 @@ docker run --rm -v vps_tracker_traefik_letsencrypt:/data -v "$PWD:/backup" alpin
| `/health` OK, `/api/data` 500 | Старые образы без bootstrap схемы — `docker compose pull && up -d`; смотрите `docker compose logs app` (`no such table`) |
| `/health` OK, UI пустой | образ / кэш CDN; смотрите `docker compose logs app` |
| SSO 401 / issuer mismatch | `AUTH_JWT_SECRET` = `JWT_SECRET` портала; `AUTH_ISSUER` |
| `POST /api/backup/database` **413** | Обновить образ (лимит 100 MiB) или `BACKUP_BODY_LIMIT_BYTES`; либо копировать `data/*.db` на сервере как выше |
```bash
docker compose logs traefik 2>&1 | grep -iE 'acme|certificate|cloudflare|error'