Credenciales y Rotación
El instalador genera cada secreto que tu instalación necesita, por lo que nada se envía con una contraseña predeterminada. Esta página enumera lo que generó, dónde vive cada valor y cómo cambiarlo sin romper la instalación.
Lo que generó el instalador
| Secreto | Generado como | Almacenado en | Protege |
|---|---|---|---|
| Contraseña de administrador | Cadena aleatoria de 16 caracteres | .conzent-credentials (modo 600) y hash bcrypt en la base de datos | Inicio de sesión en el panel |
DB_PASSWORD | Cadena aleatoria de 24 caracteres | .env, dos veces: DB_PASSWORD= y dentro de DATABASE_URL= | Acceso a MariaDB |
SCANNER_API_KEY | Cadena aleatoria de 32 caracteres | .env | Autenticación de app a escáner |
APP_SECRET | Cadena hexadecimal de 64 caracteres | .env | Reservado — ningún camino de código lo lee hoy |
Consulta las credenciales de administrador guardadas en cualquier momento con bash scripts/install.sh --config.
Primera cosa a hacer: .conzent-credentials contiene tu contraseña de administrador en texto plano. Existe para que el instalador pueda mostrártela nuevamente si te la perdiste. Una vez que la contraseña esté en un gestor de contraseñas, elimina el archivo con rm .conzent-credentials. Nada depende de él.
Rotando la contraseña de administrador
Si puedes iniciar sesión, cámbiala en el panel bajo Cuenta → Perfil.
Si no puedes iniciar sesión, restablece desde el host. Esto solía ser un callejón sin salida: bin/oci setup se niega a ejecutarse una vez que existe una cuenta, y el correo electrónico de "contraseña olvidada" necesita un servidor SMTP en funcionamiento, que las instalaciones autoalojadas a menudo no tienen.
# Genera una nueva contraseña y la imprime
docker compose exec app php bin/oci user:password --email=you@example.com
# O establece una específica
docker compose exec app php bin/oci user:password --email=you@example.com --password='tu-nueva-contraseña'
El comando hash bcrypt y almacena la nueva contraseña, cierra todas las sesiones existentes para ese usuario y elimina cualquier bloqueo por intentos fallidos de inicio de sesión. Funciona para cualquier usuario, no solo para administradores — útil cuando un cliente olvida la suya y no tienes servidor de correo.
Para hacer que el flujo de correo funcione en su lugar, configura SMTP en .env (MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION, MAIL_FROM_ADDRESS), reinicia y prueba con docker compose exec app php bin/oci test:email --to=you@example.com. Con MAIL_HOST vacío, Conzent registra "Correo no enviado: no se configuró servidor SMTP" y continúa — los enlaces de restablecimiento nunca se entregan.
Rotando la contraseña de la base de datos
Cuatro lugares deben estar de acuerdo: MariaDB en sí, DB_PASSWORD, DATABASE_URL y los contenedores en ejecución.
# 1. Escoge una nueva contraseña
NEW_PASS=$(openssl rand -hex 16)
# 2. Cámbiala dentro de MariaDB
docker compose exec -T mariadb mariadb -uroot -p"$DB_ROOT_PASSWORD" \
-e "ALTER USER 'oci'@'%' IDENTIFIED BY '$NEW_PASS'; FLUSH PRIVILEGES;"
# 3. Actualiza AMBOS lugares en .env
sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=$NEW_PASS|" .env
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=mysql://oci:$NEW_PASS@mariadb:3306/oci?charset=utf8mb4|" .env
# 4. Reinicia los servicios que mantienen conexiones
docker compose up -d --force-recreate app worker scheduler beacon-worker
# 5. Confirma
docker compose exec app php bin/oci health
Si health informa un fallo de base de datos, los dos valores de .env no coinciden. DATABASE_URL es lo que la aplicación realmente usa; DB_PASSWORD es lo que se inicializa en MariaDB. Ambos deben llevar el nuevo valor.
DB_ROOT_PASSWORD tiene como valor predeterminado root. El contenedor de MariaDB no publica ningún puerto de host en la pila autoalojada, por lo que solo es accesible desde dentro de la red de Compose — pero establece un valor real antes de agregar cualquier mapeo de puerto de host propio.
Rotando la clave API del escáner
sed -i "s|^SCANNER_API_KEY=.*|SCANNER_API_KEY=$(openssl rand -hex 16)|" .env
docker compose up -d --force-recreate scanner app worker scheduler
docker compose exec app php bin/oci scanner:register
docker compose exec app php bin/oci scanner:health
La registración se basa en URL y es idempotente, por lo que volver a ejecutar actualiza el registro existente en lugar de agregar un duplicado. Si ejecutas escáneres adicionales, rota la clave en cada uno y vuelve a registrar cada URL.
Claves API y claves de sitio
Dos credenciales que el instalador no genera:
- Claves API — creadas por usuario para acceso programático. Revoca y vuelve a emitir desde el panel.
- Claves de sitio — el valor
data-keyen cada fragmento de inserción. Este es un identificador público, no un secreto: aparece en el código fuente de cada sitio que utiliza el banner. No se puede rotar sin actualizar la inserción de ese sitio.
Manejo de .env
.env es el archivo más sensible en la instalación. Está ignorado por git y creado en modo 600 — si lo copiaste, restaura eso con chmod 600 .env. Se incluye en los archivos de respaldo, por lo que también se escriben en modo 600 y pertenecen a un lugar privado.
La referencia completa vive con el código: docs/credentials.md en GitHub.