4.2 KiB
Solución para el error "El usuario 'admin' ya existe"
Problema
Cuando se intenta crear un usuario administrador en una instalación nueva de OxiCloud, aparece el siguiente error:
oxicloud-1 | 2025-04-12T10:47:26.643669Z ERROR oxicloud::interfaces::api::handlers::auth_handler: Registration failed for user admin: Already Exists: El usuario 'admin' ya existe
Este error ocurre porque las migraciones de la base de datos ya crean un usuario administrador por defecto como parte del proceso de inicialización.
Solución implementada
Hemos mejorado el sistema para que maneje mejor el registro de usuarios administradores:
-
En una instalación nueva:
- Si registras cualquier usuario como administrador (sea cual sea su nombre), el sistema detectará que es una instalación nueva y eliminará automáticamente el usuario admin predeterminado.
- Esto te permite crear tu propio usuario administrador con el nombre que prefieras desde el principio.
-
En un sistema en uso:
- No se permite crear nuevos usuarios administradores desde la página de registro una vez que ya existe un administrador en el sistema
- Esto previene la creación no autorizada de usuarios con permisos elevados
- El sistema tampoco permite tener múltiples usuarios con el mismo nombre (incluido "admin")
Detalles técnicos
La solución implementa:
-
Detección inteligente de instalaciones nuevas basada en:
- Verificación del número total de usuarios en el sistema
- Verificación del número de usuarios administradores
-
Reconocimiento de usuarios administradores:
- Un usuario es administrador si su nombre es "admin"
- Un usuario es administrador si se proporciona un rol "admin" explícitamente
- Los administradores reciben automáticamente una cuota de 100GB
-
Eliminación segura del usuario admin predeterminado:
- Se detecta al inicio del registro si es una instalación nueva
- Se elimina el admin predeterminado antes de continuar con el registro
-
Prevención de creación de múltiples administradores:
- Una vez que existe un usuario administrador en el sistema, no se permite crear más administradores desde la página de registro
- Solo se puede crear un administrador desde la página de registro durante la instalación inicial
- Esto protege el sistema contra la creación no autorizada de usuarios con privilegios elevados
Cómo usar esta funcionalidad
En una instalación nueva:
- Inicia OxiCloud por primera vez (las migraciones crearán automáticamente un usuario admin predeterminado)
- Ve a la pantalla de registro y crea un usuario con:
- Nombre de usuario: Cualquier nombre que prefieras (por ejemplo, "torrefacto")
- Contraseña: La que tú quieras
- Email: Tu correo electrónico
- El sistema detectará automáticamente que se trata de una instalación nueva
- Si es un usuario administrador (porque el nombre es "admin" o porque explícitamente quieres que sea admin), el sistema eliminará el admin predeterminado antes de continuar
- Tu nuevo usuario se creará y podrás iniciar sesión con él
Si necesitas restablecer el usuario administrador:
Si ya tienes un sistema en uso y necesitas restablecer el usuario administrador:
Opción 1: Usar el script proporcionado
cat scripts/reset_admin.sql | docker exec -i oxicloud-postgres-1 psql -U postgres -d oxicloud
Opción 2: Hacerlo manualmente
docker exec -it oxicloud-postgres-1 psql -U postgres -d oxicloud
SET search_path TO auth;
DELETE FROM auth.users WHERE username = 'admin';
SELECT username, email, role FROM auth.users;
Luego registra un nuevo usuario admin a través de la interfaz web.
Nota técnica
El usuario administrador predeterminado se crea durante las migraciones con estos valores:
INSERT INTO auth.users (
id,
username,
email,
password_hash,
role,
storage_quota_bytes
) VALUES (
'00000000-0000-0000-0000-000000000000',
'admin',
'admin@oxicloud.local',
'$argon2id$v=19$m=65536,t=3,p=4$c2FsdHNhbHRzYWx0c2FsdA$H3VxE8LL2qPT31DM3loTg6D+O4MSc2sD7GjlQ5h7Jkw', -- Admin123!
'admin',
107374182400 -- 100GB for admin
);