nakama/MINIO_403_FIX.md

114 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

2025-12-01 00:51:23 +00:00
# Исправление ошибки 403 в MinIO
## 🔴 Проблема
```
Failed to load resource: the server responded with a status of 403 ()
```
Это означает, что bucket `nakama-media` не публичный и браузер не может загрузить изображения.
---
## ✅ Быстрое решение (через MinIO Console)
### Шаг 1: Откройте консоль MinIO
```
http://103.80.87.247:9901/
```
### Шаг 2: Войдите
- **Username**: `minioadmin` (или ваш логин)
- **Password**: `minioadmin` (или ваш пароль)
### Шаг 3: Настройте публичный доступ
1. В боковом меню выберите **Buckets**
2. Найдите **nakama-media**
3. Нажмите на имя bucket
4. Перейдите на вкладку **Anonymous**
5. Нажмите **Add Access Rule**
6. Введите префикс: `*` (для всех файлов)
7. Права доступа: выберите **readonly** или **download**
8. Нажмите **Save**
---
## ✅ Альтернатива: Через MinIO Client (mc)
### На сервере с MinIO выполните:
```bash
# Установите mc
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
# Настройте подключение
mc alias set myminio http://localhost:9000 minioadmin minioadmin
# Сделайте bucket публичным
mc anonymous set download myminio/nakama-media
# Проверьте
mc anonymous get myminio/nakama-media
```
Должно вывести: `Access permission for 'myminio/nakama-media' is 'download'`
---
## ✅ Автоматический скрипт
```bash
bash fix-minio-public.sh
```
---
## 📝 Проверьте .env
Убедитесь, что в `.env` (в корне проекта) установлено:
```env
MINIO_ENABLED=true
MINIO_ENDPOINT=103.80.87.247
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_PUBLIC_BUCKET=true
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=nakama-media
```
---
## 🔄 Перезапустите backend
```bash
docker compose restart backend
```
---
## ✅ Проверка
Откройте в браузере:
```
http://103.80.87.247:9000/nakama-media/posts/test.jpg
```
Если файл существует, он должен загрузиться без ошибок.
---
## 🔧 Если используете Nginx (minio.glpshchn.ru)
Убедитесь, что:
1. **MINIO_ENDPOINT** = `minio.glpshchn.ru`
2. **MINIO_PORT** = `443`
3. **MINIO_USE_SSL** = `true`
4. **MINIO_PUBLIC_URL** = `https://minio.glpshchn.ru`
И перезапустите backend!