Documentación Primeros pasos
Instalación
Instala Rainy con Docker Compose, o ejecútalo directamente con Python en Linux, macOS o Windows.
Puedes ejecutar Rainy de dos maneras. Docker Compose es la opción recomendada: el stack incluye su propia base de datos MySQL 8.4, ffmpeg, la herramienta fpcalc (huellas acústicas) y el entorno de ejecución de JavaScript Deno, así que no tienes que instalar nada más. La vía de Python necesita Python 3.11 o superior y guarda todo en un único archivo SQLite, lo que resulta adecuado para un equipo personal.
Ambas vías inician el servidor en el puerto 6969 y necesitan una carpeta de música en la máquina donde se ejecuta Rainy.
Opción A: Docker Compose
-
Clona el repositorio y entra en la carpeta. Deben estar instalados Git y el plugin de Docker Compose.
git clone https://github.com/Rainer-Technologies/Rainy.git cd Rainy cp .env.example .env -
Abre
.envy define estos cuatro valores antes de iniciar:Ajuste Qué poner FLASK_SECRET_KEYUna clave aleatoria de al menos 32 caracteres. Rainy no arranca sin ella. MYSQL_PASSWORDUna contraseña segura para el usuario de la base de datos de Rainy. MYSQL_ROOT_PASSWORDUna contraseña segura distinta para el usuario root de MySQL. MUSIC_LIBRARY_PATHUna ruta absoluta a tu carpeta de música, o ./musicpara una biblioteca vacía.Para generar una clave de sesión, ejecuta
python3 -c "import secrets; print(secrets.token_hex(32))"y pega el resultado después deFLASK_SECRET_KEY=. -
Si el equipo no tiene GPU NVIDIA, elimina todo el bloque
deploy:bajo el servicioappencompose.yaml. Por defecto solicita dispositivos NVIDIA, y Compose no arrancará sin el NVIDIA Container Toolkit. Sin él, Rainy analiza los espectáculos de luces en la CPU. Para la configuración de la GPU, consulta aceleración por GPU. -
Compila e inicia el stack:
docker compose up --build -d -
Abre
http://localhost:6969. Si cambiasteRAINY_PORT, usa ese puerto en su lugar. Completa el formulario de configuración para crear la cuenta de administrador e introduce/musiccomo ruta de la biblioteca. Aquí es donde aparece tu carpetaMUSIC_LIBRARY_PATHdentro del contenedor. -
Ve a Ajustes > Mantenimiento y ejecuta Escaneo rápido para indexar los archivos que ya hay en la carpeta.
El contenedor app espera a que la base de datos esté en buen estado, inicializa el esquema y después arranca Gunicorn. Tu música se queda en la carpeta del equipo anfitrión; la base de datos vive en el volumen de Docker mysql_data.
Compose solo pasa al contenedor las variables que aparecen enapp.environment. Para definir cualquier otra opciónRAINY_*con Docker, añádela a esa lista encompose.yamly ejecuta de nuevodocker compose up -d. Consulta configuración.
Opción B: Python con SQLite
Instala primero estos programas:
- Python 3.11 o superior.
- ffmpeg en tu
PATH. Rainy lo usa para procesar el audio. - Un entorno de ejecución de JavaScript para las importaciones de YouTube: Deno, Node.js o Bun. Sin ninguno, la mayoría de formatos de YouTube fallan con HTTP 403.
- fpcalc (Chromaprint), opcional. Rainy lo usa para reconocer la misma canción de otra fuente. Ponlo en tu
PATHo en la carpetabindel proyecto. Sin él, solo cuentan como duplicados los archivos idénticos byte a byte.
Linux y macOS
- Clona el repositorio y entra en la carpeta.
-
Crea
.envy define el backend de base de datos. Copia la plantilla y después abre.env:cp .env.example .envDescomenta
RAINY_DB=sqlite. Sin esa línea, las líneasMYSQL_*activas de la plantilla seleccionan MySQL en su lugar, y Rainy intenta conectarse a un servidor de base de datos. -
Inicia Rainy con el lanzador. Crea
.venv, instala los requisitos y escribe unaFLASK_SECRET_KEYsegura en.envsi el valor falta o es débil:./start.shPara usar un intérprete concreto, define
PYTHON=python3.12 ./start.sh. -
Abre
http://localhost:6969, crea la cuenta de administrador e introduce la ruta absoluta a tu carpeta de música. La carpeta debe existir ya. Después ejecuta Ajustes > Mantenimiento > Escaneo rápido.
Para un servidor persistente, ejecuta ./start.sh --gunicorn en su lugar. La opción --gunicorn solo la admite el lanzador de Linux y macOS.
Windows
- Clona el repositorio y abre la carpeta en el Explorador de archivos.
- Crea
.envcopiando.env.example, descomentaRAINY_DB=sqlitey define tú mismoFLASK_SECRET_KEY. A diferencia destart.sh,start.batno genera la clave. Usa un valor aleatorio de 32 caracteres o más. - Haz doble clic en
start.bato ejecútalo desde el Símbolo del sistema. Crea.venv, instala los requisitos e iniciaapp.py. - Abre
http://localhost:6969, completa la configuración y ejecuta un escaneo rápido como se indicó antes.
Ejecutar desde un entorno virtual
Si prefieres gestionar tú el entorno, los lanzadores hacen los mismos pasos:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python app.py
En Windows, usa py -m venv .venv y .venv\Scripts\activate.
Usar MySQL en su lugar
Si ya usas MySQL 8, define RAINY_DB=mysql en .env y rellena MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD y MYSQL_DATABASE. El usuario de la base de datos debe poder crear y modificar tablas en esa base de datos.
Actualizar
Con Docker, haz una copia de seguridad del volumen mysql_data, de tu .env y de tu carpeta de música, y después ejecuta:
git pull
docker compose up --build -d
Evita docker compose down -v, que elimina el volumen de la base de datos. Con la instalación de Python, ejecuta git pull y luego ./start.sh de nuevo. El lanzador reinstala los requisitos que hayan cambiado.
Solución de problemas
| Problema | Qué revisar |
|---|---|
Rainy no arranca y menciona FLASK_SECRET_KEY |
Falta la clave, sigue siendo un marcador de posición o tiene menos de 32 caracteres. |
| El inicio local intenta conectarse a MySQL | Define RAINY_DB=sqlite en .env. |
| La configuración rechaza la ruta de música | Usa /music en Docker. En local, usa una ruta absoluta existente. |
| Las importaciones de YouTube fallan | Comprueba que ffmpeg y un entorno de ejecución de JavaScript están instalados. En Docker ya están incluidos ambos. |
| Compose no puede seleccionar un driver de NVIDIA | Elimina el bloque deploy: de compose.yaml en un equipo sin GPU. |
Para cada ajuste que lee Rainy, consulta configuración. Cuando el servidor responda, continúa con la primera ejecución.