Files
NovaWoW/README.md
T
Inna b43b888f53 Añade README de despliegue y soporte Docker
- README.md: guía de instalación (venv, .env, migraciones, gunicorn) y notas de producción/seguridad
- Dockerfile: imagen Python 3.14 con deps de sistema para mysqlclient/Pillow
- docker-compose.yml: servicios web (Django+gunicorn) y db (MySQL 8.4) con las 4 BBDD
- docker/entrypoint.sh: espera a MySQL, migra, collectstatic y arranca gunicorn
- docker/mysql-init.sql: crea django_wow + bases acore_*
- .dockerignore y gunicorn en requirements

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 16:16:29 +00:00

116 lines
3.3 KiB
Markdown

# Nova WoW
Portal web (Django) para un servidor de World of Warcraft basado en AzerothCore.
- **Python:** 3.14
- **Framework:** Django 6.0
- **Base de datos:** MySQL (4 bases: la del portal `django_wow` + las de AzerothCore `acore_auth`, `acore_characters`, `acore_world`)
---
## 1. Requisitos
- Python 3.14 y `venv`
- MySQL/MariaDB accesible
- Librerías de sistema para compilar algunas dependencias:
```bash
sudo apt install python3.14-venv python3.14-dev build-essential pkg-config \
default-libmysqlclient-dev libgmp-dev libmpfr-dev libmpc-dev libjpeg-dev zlib1g-dev
```
---
## 2. Puesta en marcha (desarrollo)
```bash
git clone https://git.nightspire.gg/Inna/NovaWoW.git
cd NovaWoW
# Entorno virtual
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# Variables de entorno
cp .env.example .env
# edita .env con tus credenciales reales (ver sección 3)
# Migraciones y arranque
python manage.py migrate
python manage.py createsuperuser # opcional
python manage.py runserver
```
La app queda en http://127.0.0.1:8000
---
## 3. Configuración (`.env`)
Toda la configuración sensible se lee de variables de entorno mediante
[python-dotenv](https://pypi.org/project/python-dotenv/). Copia `.env.example`
a `.env` y rellena los valores. **El `.env` no se versiona.**
| Variable | Descripción |
|---|---|
| `DJANGO_SECRET_KEY` | Clave secreta de Django. Genera una nueva (ver abajo). |
| `DJANGO_DEBUG` | `True` en desarrollo, `False` en producción. |
| `DB_USER` / `DB_PASSWORD` | Credenciales MySQL (compartidas por las 4 BBDD). |
| `DB_HOST` / `DB_PORT` | Host y puerto de MySQL. |
| `DB_NAME_DEFAULT` | BD del portal (por defecto `django_wow`). |
| `DB_NAME_AUTH` / `DB_NAME_CHARACTERS` / `DB_NAME_WORLD` | BBDD de AzerothCore. |
| `AC_SOAP_*` | Conexión SOAP a AzerothCore (crear cuentas, etc.). |
| `SUMUP_*` / `STRIPE_*` | Pasarelas de pago. |
| `EMAIL_HOST_USER` / `EMAIL_HOST_PASSWORD` | SMTP de Gmail (App Password). |
Generar una `SECRET_KEY` nueva:
```bash
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
```
---
## 4. Producción
```bash
# Recopilar estáticos
python manage.py collectstatic --noinput
# Servir con gunicorn (4 workers)
gunicorn novawow.wsgi:application --bind 0.0.0.0:8000 --workers 4
```
Recomendaciones:
- `DJANGO_DEBUG=False` y una `DJANGO_SECRET_KEY` propia y secreta.
- Poner **Nginx** delante como proxy inverso y para servir `staticfiles/`.
- Revisar `ALLOWED_HOSTS` y `CSRF_TRUSTED_ORIGINS` en `novawow/settings.py`.
---
## 5. Docker
Alternativamente, se puede levantar todo con Docker (web + MySQL):
```bash
cp .env.example .env # ajusta los secretos (no las variables DB_*, las fija compose)
docker compose up --build
```
- La web queda en http://127.0.0.1:8000
- El servicio `db` crea automáticamente las 4 bases de datos.
- El `entrypoint` espera a MySQL, aplica migraciones y recopila estáticos antes de arrancar gunicorn.
Ver `docker-compose.yml` y `Dockerfile` para los detalles.
---
## 6. Notas de seguridad
- Los secretos que estuvieron hardcodeados en el historial de git deben **rotarse**
(contraseña MySQL/SOAP, App Password de Gmail, claves de Stripe/SumUp).
- Nunca subas el archivo `.env` al repositorio.