Fizzy y SMTP: dónde vive el código mágico cuando el email falla
Fizzy usa magic links para autenticación: genera un código de acceso, lo envía por email y lo guarda en SQLite. Cuando el email no llega, hay que saber exactamente dónde mirar.
Configuración SMTP necesaria
Fizzy requiere cinco variables SMTP para enviar email correctamente. Cualquiera que falte puede hacer que el envío falle silenciosamente:
SMTP_ADDRESS: smtppro.zoho.eu
SMTP_PORT: 587
SMTP_USERNAME: envio@dato.digital
SMTP_PASSWORD: ...
SMTP_AUTHENTICATION: plain ← esta variable se olvida frecuentemente
Verificar que están todas en el contenedor:
docker exec app-fizzy-1 env | grep -E '^SMTP_|^MAILER_'
Consultar el código directamente en SQLite
Fizzy guarda los magic links en /rails/storage/production.sqlite3. Si el email no llega, el código puede recuperarse directamente:
docker exec app-fizzy-1 sh -lc "sqlite3 /rails/storage/production.sqlite3 "
SELECT identities.email_address, magic_links.code, magic_links.expires_at
FROM magic_links
JOIN identities ON identities.id = magic_links.identity_id
WHERE identities.email_address = 'usuario@dominio.com'
ORDER BY magic_links.created_at DESC LIMIT 5;
""
Verificar que existe la identidad
Si el usuario existe en Authentik pero no en Fizzy, el login falla porque no hay Identity asociada:
docker exec app-fizzy-1 sh -lc "sqlite3 /rails/storage/production.sqlite3 "
SELECT id, email_address, created_at FROM identities
WHERE email_address = 'usuario@dominio.com';
""
# Si no devuelve nada, crear la identidad:
docker exec app-fizzy-1 sh -lc "cd /rails && bin/rails runner "Identity.find_or_create_by!(email_address: 'usuario@dominio.com')""
O usar el target del Makefile, que además sincroniza el grupo en Authentik:
make kanban-user email='usuario@dominio.com' name='Nombre Apellido'