Configuración de Google Drive para DocuCenter
Problema: Service Accounts sin Cuota de Almacenamiento
Las Service Accounts de Google no tienen cuota de almacenamiento propia. Este es el error que obtuviste:
Service Accounts do not have storage quota. Leverage shared drives
or use OAuth delegation instead.
Soluciones Disponibles
Opción 1: Google Shared Drive (Team Drive) ⭐ Recomendado
Requisitos: - Google Workspace Enterprise, Business Standard o Business Plus - Permisos de administrador del Workspace
Ventajas: - ✅ Almacenamiento compartido del Workspace (ilimitado en Enterprise) - ✅ No depende de usuarios individuales - ✅ Mejor control de acceso y auditoría - ✅ Ideal para organizaciones
Pasos de Configuración:
1. Crear Shared Drive
En Google Drive:
1. Ir a "Shared drives" (Unidades compartidas)
2. Click en "New shared drive"
3. Nombre: DocuCenter-Facturas (o el que prefieras)
4. Click en "Create"
2. Agregar Service Account al Shared Drive
- Abrir el Shared Drive creado
- Click en el icono de configuración (⚙️)
- Click en "Manage members"
- Agregar el email de la Service Account:
firebase-adminsdk-csm4f@docucenter-aci.iam.gserviceaccount.com - Rol: Content Manager o Manager
- Click en "Send"
3. Obtener ID del Shared Drive
Método 1 - Desde la URL:
1. Abrir el Shared Drive en el navegador
2. La URL será algo como:
https://drive.google.com/drive/folders/0AByG_Vq7Zf8qUk9PVA
3. El ID es la parte después de /folders/: 0AByG_Vq7Zf8qUk9PVA
Método 2 - Con API:
# Usando el comando de verificación
docker exec -it docucenter_laravel.test php artisan drive:list-shared-drives
4. Configurar en .env
Agregar en .env:
# Google Drive - Shared Drive Configuration
GOOGLE_SHARED_DRIVE_ID=0AByG_Vq7Zf8qUk9PVA
Con esto, el sistema automáticamente usará el Shared Drive en lugar del espacio personal.
Opción 2: Domain-Wide Delegation (OAuth Delegation)
Requisitos: - Google Workspace (cualquier plan) - Permisos de Super Admin del Workspace - Usuario con espacio de almacenamiento suficiente
Ventajas: - ✅ Funciona con cualquier plan de Workspace - ✅ Usa el almacenamiento de un usuario específico
Desventajas: - ❌ Depende de la cuota de un usuario específico - ❌ Si el usuario se elimina, se pierde acceso - ❌ Configuración más compleja
Pasos de Configuración:
1. Habilitar Domain-Wide Delegation
En Google Cloud Console:
- Ir a https://console.cloud.google.com
- Seleccionar proyecto:
docucenter-aci - Ir a "IAM & Admin" → "Service Accounts"
- Click en tu Service Account
- Click en "Show domain-wide delegation"
- Click en "Enable G Suite Domain-wide Delegation"
- Copiar el "Client ID" (número largo)
2. Autorizar en Google Workspace Admin
En Google Admin Console:
- Ir a https://admin.google.com
- "Security" → "API Controls" → "Manage Domain-wide Delegation"
- Click en "Add new"
- Client ID: (pegar el copiado anteriormente)
- OAuth Scopes:
https://www.googleapis.com/auth/drive - Click en "Authorize"
3. Configurar en .env
Agregar en .env:
# Google Drive - Domain-Wide Delegation
GOOGLE_DRIVE_DELEGATE_EMAIL=admin@tudominio.com
Donde admin@tudominio.com es el email del usuario que actuará como "dueño" de los archivos.
Verificación de Configuración
1. Verificar Variables de Entorno
docker exec -it docucenter_laravel.test php artisan config:cache
2. Ejecutar Verificación Completa
docker exec -it docucenter_laravel.test php artisan drive:verify-setup
3. Prueba de Subida
docker exec -it docucenter_laravel.test php artisan drive:verify-setup --test-upload --organization_id=2
Si todo está bien, deberías ver:
✓ Archivo subido exitosamente
File ID: 1abc123...
Link: https://drive.google.com/file/d/...
Comparación de Opciones
| Característica | Shared Drive | Domain Delegation |
|---|---|---|
| Costo | Requiere plan Business+ | Funciona con cualquier plan |
| Almacenamiento | Compartido del Workspace | Cuota del usuario |
| Dependencia | Independiente | Depende del usuario |
| Configuración | Simple | Compleja |
| Mantenimiento | Bajo | Medio |
| Recomendado para | Empresas medianas/grandes | Pequeñas empresas |
Recomendación
Para DocuCenter en producción, recomendamos Opción 1: Shared Drive por:
- Escalabilidad: No depende de cuotas individuales
- Organización: Mejor estructura de carpetas compartidas
- Continuidad: No afectado por cambios de personal
- Auditoría: Mejor control de acceso y tracking
- Costo: Inversión justificada para operación empresarial
Estructura de Carpetas Resultante
Con cualquiera de las dos opciones, la estructura será:
📁 DocuCenter-Facturas/ (Raíz - en Shared Drive o espacio del usuario)
└── 📁 1825706-1-709732-90/ (RUC-DV de la organización)
└── 📁 2026/ (Año)
└── 📁 02-Febrero/ (Mes)
├── 📄 factura1.xml
├── 📄 factura2.xml
├── 📄 factura3.xml
└── ...
Troubleshooting
Error: Cannot find shared drive
Causa: ID de Shared Drive incorrecto o Service Account no tiene permisos
Solución: 1. Verificar que el ID es correcto (desde la URL) 2. Verificar que la Service Account está agregada como miembro 3. Esperar 5-10 minutos después de agregar la Service Account
Error: Insufficient permissions
Causa: Service Account no tiene rol adecuado en Shared Drive
Solución: 1. En el Shared Drive, verificar permisos de la Service Account 2. Debe tener rol "Content Manager" o "Manager" 3. Rol "Commenter" o "Viewer" NO es suficiente
Error: Invalid delegation
Causa: Domain-Wide Delegation no configurado correctamente
Solución: 1. Verificar que Client ID es correcto 2. Verificar que scopes están autorizados 3. Verificar que GOOGLE_DRIVE_DELEGATE_EMAIL es correcto 4. El usuario debe existir y tener permisos de Drive
Comandos Útiles
# Verificar configuración completa
docker exec -it docucenter_laravel.test php artisan drive:verify-setup
# Prueba de subida
docker exec -it docucenter_laravel.test php artisan drive:verify-setup --test-upload --organization_id=2
# Limpiar cache de configuración
docker exec -it docucenter_laravel.test php artisan config:cache
# Ver logs de Google Drive
docker exec -it docucenter_laravel.test tail -f storage/logs/laravel.log | grep "Google\|Drive"
Próximos Pasos
Una vez configurado correctamente:
- ✅ Ejecutar verificación
- ✅ Hacer prueba de subida
- ✅ Habilitar backup en organizaciones de prueba
- ✅ Ejecutar comando de backup manual
- ✅ Verificar archivos en Google Drive
- ✅ Programar ejecución automática (ya está configurado)
Fecha: 25 de Febrero, 2026
Sistema: DocuCenter Email Backup
Tipo: Guía de Configuración