Files
pagasis/docs/ACCESO_ADMIN.md
T
2025-10-15 23:45:32 -06:00

235 lines
6.6 KiB
Markdown

# Acceso al Panel de Administración de Django
## Estado Actual
Los contenedores Docker están corriendo correctamente:
-**Frontend (Nginx)**: http://localhost
-**Backend (Django)**: Disponible en http://localhost/api/
-**Panel Admin**: http://localhost/admin/
## Problema Resuelto
Se han corregido los siguientes problemas:
1. **STATIC_ROOT no configurado**: Se agregó `STATIC_ROOT = BASE_DIR / 'staticfiles'` en `settings.py`
2. **MEDIA_ROOT no configurado**: Se agregó `MEDIA_ROOT = BASE_DIR / 'media'` en `settings.py`
3. **Variables de entorno faltantes**: Se agregaron todas las variables necesarias en `docker-compose.yml`
4. **PostgreSQL removido**: Se simplificó usando SQLite para facilitar el desarrollo
## Crear Superusuario
Para acceder al panel de administración, primero necesitas crear un superusuario.
### En Windows (PowerShell):
```powershell
docker-compose exec backend python manage.py createsuperuser
```
### En Linux/Mac:
```bash
bash create_superuser.sh
```
O manualmente:
```bash
docker-compose exec backend python manage.py createsuperuser
```
### Proceso Interactivo:
El comando te pedirá:
1. **Username**: Ingresa un nombre de usuario (ejemplo: admin)
2. **Email**: Ingresa un email (ejemplo: admin@example.com)
3. **Password**: Ingresa una contraseña segura
4. **Password (again)**: Confirma la contraseña
Ejemplo:
```
Username: admin
Email address: admin@example.com
Password: **********
Password (again): **********
Superuser created successfully.
```
## Acceder al Panel de Administración
1. Abre tu navegador web
2. Ve a: **http://localhost/admin/**
3. Ingresa tus credenciales (username y password que creaste)
4. ¡Listo! Ya puedes administrar tu aplicación
## URLs Disponibles
| Servicio | URL | Descripción |
|----------|-----|-------------|
| Frontend | http://localhost | Aplicación React |
| API Backend | http://localhost/api/ | API REST de Django |
| Admin Django | http://localhost/admin/ | Panel de administración |
| Archivos Estáticos | http://localhost/static/ | CSS, JS, imágenes de Django |
| Archivos Media | http://localhost/media/ | Archivos subidos por usuarios |
## Verificar Estado de los Contenedores
```bash
# Ver estado de los contenedores
docker-compose ps
# Ver logs del backend
docker-compose logs backend
# Ver logs del nginx
docker-compose logs nginx
# Seguir logs en tiempo real
docker-compose logs -f
```
## Comandos Útiles de Django
```bash
# Crear migraciones
docker-compose exec backend python manage.py makemigrations
# Aplicar migraciones
docker-compose exec backend python manage.py migrate
# Crear superusuario adicional
docker-compose exec backend python manage.py createsuperuser
# Acceder al shell de Django
docker-compose exec backend python manage.py shell
# Colectar archivos estáticos
docker-compose exec backend python manage.py collectstatic --noinput
# Ver rutas disponibles
docker-compose exec backend python manage.py show_urls
```
## Solución de Problemas
### Error 502 Bad Gateway
Si ves este error, verifica que el backend esté corriendo:
```bash
docker-compose logs backend
docker-compose restart backend
```
### No puedo acceder a /admin/
1. Verifica que el backend esté corriendo:
```bash
docker-compose ps
```
2. Verifica los logs de nginx:
```bash
docker-compose logs nginx
```
3. Verifica que hayas creado un superusuario
### Error de permisos
Si hay errores de permisos en archivos:
```bash
# En el backend
docker-compose exec backend chmod -R 755 /app/staticfiles
docker-compose exec backend chmod -R 755 /app/media
```
### Reiniciar todo desde cero
Si algo sale mal, puedes reiniciar todo:
```bash
# Detener y eliminar todo (¡cuidado! elimina la base de datos)
docker-compose down -v
# Reconstruir
docker-compose build --no-cache
# Levantar
docker-compose up -d
# Aplicar migraciones
docker-compose exec backend python manage.py migrate
# Crear superusuario
docker-compose exec backend python manage.py createsuperuser
```
## Configuración de Producción
Para producción, debes cambiar estas variables en `docker-compose.yml`:
```yaml
environment:
- DEBUG=False # ⚠️ IMPORTANTE: Cambiar a False en producción
- SECRET_KEY=cambiar-por-una-clave-super-segura-y-aleatoria
- ALLOWED_HOSTS=tu-dominio.com,www.tu-dominio.com
- SECURE_SSL_REDIRECT=True
- SESSION_COOKIE_SECURE=True
- CSRF_COOKIE_SECURE=True
```
También deberías considerar usar PostgreSQL en lugar de SQLite para producción.
## Arquitectura
```
┌─────────────────────────────────────────┐
│ Cliente (Navegador) │
└────────────────┬────────────────────────┘
│ HTTP
┌─────────────────────────────────────────┐
│ Nginx (Puerto 80) │
│ ├─ / → Frontend React (build estático) │
│ ├─ /api/* → Backend Django (proxy) │
│ ├─ /admin/* → Django Admin (proxy) │
│ ├─ /static/* → Archivos estáticos │
│ └─ /media/* → Archivos media │
└────────────────┬────────────────────────┘
┌─────────┴─────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Frontend │ │ Backend │
│ (React) │ │ (Django) │
│ /usr/share/│ │ Puerto: │
│ nginx/html │ │ 8000 │
└─────────────┘ └──────┬──────┘
┌─────────────┐
│ SQLite │
│ (db.sqlite3)│
└─────────────┘
```
## Seguridad
- ✅ CORS configurado correctamente
- ✅ CSRF protection habilitado
- ✅ JWT Authentication para API
- ✅ Rate limiting disponible (deshabilitado en desarrollo)
- ⚠️ DEBUG=True (solo para desarrollo)
- ⚠️ Cambiar SECRET_KEY en producción
- ⚠️ Habilitar HTTPS en producción
## Próximos Pasos
1. ✅ Contenedores corriendo
2. ⚠️ Crear superusuario (pendiente - ejecuta el comando arriba)
3. ⚠️ Acceder a http://localhost/admin/
4. ⚠️ Configurar usuarios y permisos
5. ⚠️ Probar las funcionalidades de la aplicación