168 lines
4.5 KiB
Markdown
168 lines
4.5 KiB
Markdown
|
|
# Диагностика: Посты не сохраняются
|
|||
|
|
|
|||
|
|
## 🔴 Проблема
|
|||
|
|
Посты создаются в интерфейсе, но исчезают при обновлении страницы.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 1: Проверьте логи backend
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Посмотрите логи backend
|
|||
|
|
docker logs nakama-backend -f
|
|||
|
|
|
|||
|
|
# Или только последние 100 строк
|
|||
|
|
docker logs nakama-backend --tail 100
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Что искать:**
|
|||
|
|
- ❌ `Ошибка создания поста`
|
|||
|
|
- ❌ `S3 клиент не инициализирован`
|
|||
|
|
- ❌ `Ошибка загрузки в MinIO`
|
|||
|
|
- ❌ `403` или `Access Denied`
|
|||
|
|
- ✅ `Файлы загружены в MinIO`
|
|||
|
|
- ✅ `POST /api/posts 201`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 2: Проверьте MinIO bucket
|
|||
|
|
|
|||
|
|
### Вариант А: Через консоль браузера
|
|||
|
|
|
|||
|
|
1. Откройте DevTools (F12) в браузере
|
|||
|
|
2. Вкладка **Network**
|
|||
|
|
3. Попробуйте создать пост
|
|||
|
|
4. Найдите запрос `POST /api/posts`
|
|||
|
|
5. Посмотрите на:
|
|||
|
|
- **Status**: должен быть `201 Created`
|
|||
|
|
- **Response**: должен содержать объект `post` с `_id`
|
|||
|
|
- **Если 500**: смотрите `error` в ответе
|
|||
|
|
|
|||
|
|
### Вариант Б: Проверьте bucket в MinIO Console
|
|||
|
|
|
|||
|
|
1. Откройте http://103.80.87.247:9901/
|
|||
|
|
2. **Buckets** → **nakama-media** → **posts/**
|
|||
|
|
3. Должны видеть загруженные файлы
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 3: Убедитесь, что bucket публичный
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# На сервере с MinIO
|
|||
|
|
mc alias set myminio http://localhost:9000 minioadmin minioadmin
|
|||
|
|
mc anonymous get myminio/nakama-media
|
|||
|
|
|
|||
|
|
# Должно быть: Access permission for 'myminio/nakama-media' is 'download'
|
|||
|
|
# Если нет, выполните:
|
|||
|
|
mc anonymous set download myminio/nakama-media
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 4: Проверьте .env
|
|||
|
|
|
|||
|
|
Откройте `.env` (в корне проекта) и убедитесь:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# MinIO ДОЛЖЕН быть включен
|
|||
|
|
MINIO_ENABLED=true
|
|||
|
|
|
|||
|
|
# Правильные настройки
|
|||
|
|
MINIO_ENDPOINT=103.80.87.247
|
|||
|
|
MINIO_PORT=9000
|
|||
|
|
MINIO_USE_SSL=false
|
|||
|
|
MINIO_ACCESS_KEY=minioadmin
|
|||
|
|
MINIO_SECRET_KEY=minioadmin
|
|||
|
|
MINIO_BUCKET=nakama-media
|
|||
|
|
MINIO_PUBLIC_BUCKET=true
|
|||
|
|
|
|||
|
|
# База данных
|
|||
|
|
MONGODB_URI=mongodb://103.80.87.247:27017/nakama
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 5: Перезапустите backend
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker compose restart backend
|
|||
|
|
|
|||
|
|
# Посмотрите логи запуска
|
|||
|
|
docker logs nakama-backend --tail 50
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Что должно быть в логах:**
|
|||
|
|
```
|
|||
|
|
✅ [SUCCESS] MinIO успешно подключен
|
|||
|
|
📝 [INFO] S3 клиент для MinIO инициализирован
|
|||
|
|
📝 [INFO] Bucket nakama-media существует
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ Шаг 6: Тестовый запрос
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Создайте тестовый пост через curl
|
|||
|
|
curl -X POST http://your-backend-url/api/posts \
|
|||
|
|
-H "Authorization: Bearer YOUR_TOKEN" \
|
|||
|
|
-F "content=Test post" \
|
|||
|
|
-F "tags=[\"furry\"]" \
|
|||
|
|
-F "isNSFW=false"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 Если все еще не работает
|
|||
|
|
|
|||
|
|
### Проверьте подключение к MongoDB:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# На сервере с MongoDB
|
|||
|
|
docker exec -it nakama-mongodb mongosh
|
|||
|
|
|
|||
|
|
# В консоли MongoDB
|
|||
|
|
use nakama
|
|||
|
|
db.posts.find().limit(5)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Если посты есть в БД, но не отображаются в интерфейсе - проблема в frontend или API запросе.
|
|||
|
|
|
|||
|
|
Если постов нет - проблема в backend при сохранении.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 Контрольный список
|
|||
|
|
|
|||
|
|
- [ ] Логи backend не содержат ошибок
|
|||
|
|
- [ ] MinIO bucket `nakama-media` существует
|
|||
|
|
- [ ] Bucket публичный (anonymous download)
|
|||
|
|
- [ ] `.env` настроен правильно (`MINIO_ENABLED=true`)
|
|||
|
|
- [ ] Backend перезапущен
|
|||
|
|
- [ ] MongoDB доступна (`mongodb://103.80.87.247:27017/nakama`)
|
|||
|
|
- [ ] В консоли браузера нет ошибок при создании поста
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💡 Быстрое решение
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. Сделайте bucket публичным
|
|||
|
|
mc alias set myminio http://103.80.87.247:9000 minioadmin minioadmin
|
|||
|
|
mc anonymous set download myminio/nakama-media
|
|||
|
|
|
|||
|
|
# 2. Проверьте .env
|
|||
|
|
grep MINIO .env
|
|||
|
|
|
|||
|
|
# 3. Перезапустите
|
|||
|
|
docker compose restart backend
|
|||
|
|
|
|||
|
|
# 4. Проверьте логи
|
|||
|
|
docker logs nakama-backend -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Теперь попробуйте создать пост!
|
|||
|
|
|
|||
|
|
|