Scripts y Comandos de Admin del Workspace
Limpiar Base de Datos
./scripts/clean-db.sh
Limpia la base de datos eliminando todos los datos mientras preserva el esquema y la estructura de la base de datos.
Caution
Utilice con precaución ya que esto eliminará todos los datos existentes.
Limpiar artefactos de compilación y dependencias
scripts/clean-workspace.sh
Elimina todos los artefactos de compilación, el directorio node_modules y otros archivos generados para garantizar un estado limpio. Esto es útil cuando necesita realizar una instalación desde cero o resolver problemas de dependencias. El comando eliminará:
- Directorio
node_modules/ - Directorio de compilación
.next/ - Directorio
dist/ - Directorio
out/ - Directorio
.turbo/ pnpm-lock.yamldata/*.json(archivos de backup JSON de desarrollo)public/documentationdocumentation/.docusaurus,.cache,.cache-*,build,node_modules,pnpm-lock.yaml- Directorio
.genkit/ - Archivos
*.tsbuildinfo - Caché de almacén de pnpm (mediante
pnpm store prune) - Caché de compilación de Docker y limpieza del sistema (imágenes, redes, volúmenes)
Limpiar Docker Compose y el entorno Docker
scripts/clean-docker.sh
Realizar una limpieza completa de Docker, que es útil para:
- Liberar espacio en disco
- Eliminar artefactos antiguos/no utilizados de Docker
- Limpiar después de sesiones de desarrollo o pruebas
- Mantener un entorno Docker limpio
Actualizar los paquetes a la última versión
Puede actualizar paquetes manualmente utilizando:
ncu --upgrade
pnpm update
O utiliza el script automatizado:
./scripts/upgrade-dependencies.sh
El script upgrade-dependencies.sh automatiza todo el proceso de actualización de dependencias:
- Actualiza
package.jsoncon las últimas versiones utilizandonpm-check-updates - Actualiza el archivo de bloqueo de pnpm e instala las dependencias actualizadas
- Actualiza la base de datos de browserslist
- Verifica vulnerabilidades utilizando
pnpm audit - Corrige automáticamente las vulnerabilidades utilizando
pnpm audit fix - Verifica nuevamente las vulnerabilidades después de la corrección para verificar que las correcciones funcionan
Este script proporciona un flujo de trabajo completo para mantener las dependencias actualizadas y seguras.
Verificar paquetes no utilizados
pnpm depcheck
Actualizar información de versión
./scripts/update-version.sh
Este script actualiza automáticamente la información de versión en múltiples archivos para mantenerlos sincronizados. Realiza lo siguiente:
- Extrae la versión de
package.json - Actualiza el archivo
.envcon la variableVERSION(la crea si no existe) - Actualiza el
Dockerfilecon la variableVERSION(si existe) - Actualiza el campo de versión en
documentation/package.json(si existe) - Solo actualiza si la versión ha cambiado
- Proporciona retroalimentación en cada operación
Script de verificaciones previas
./scripts/pre-checks.sh
Este script ejecuta verificaciones previas antes de iniciar el servidor de desarrollo, compilar o iniciar el servidor de producción. Realiza lo siguiente:
- Garantiza que el archivo
.duplistatus.keyexista (medianteensure-key-file.sh) - Actualiza la información de versión (mediante
update-version.sh)
Este script se llama automáticamente mediante pnpm dev, pnpm build y pnpm start-local.
Asegurar que el archivo de clave existe
./scripts/ensure-key-file.sh
Este script garantiza que el archivo .duplistatus.key exista en el directorio data. Realiza lo siguiente:
- Crea el directorio
datasi no existe - Genera un nuevo archivo de clave aleatoria de 32 bytes si falta
- Establece los permisos del archivo en 0400 (solo lectura para el propietario)
- Corrige los permisos si son incorrectos
El archivo de clave se utiliza para operaciones criptográficas en la aplicación.
Recuperación de cuenta de Admin
./admin-recovery <username> <new-password>
Este script permite la recuperación de cuentas de admin si están bloqueadas u olvida la contraseña. Realiza lo siguiente:
- Restablece la contraseña del usuario especificado
- Desbloquea la cuenta si estaba bloqueada
- Restablece el contador de intentos de iniciar sesión fallidos
- Borra la bandera "Debe cambiar la contraseña"
- Valida que la contraseña cumpla con los requisitos de seguridad
- Registra la acción en el Log de Auditoría
Ejemplo:
./admin-recovery admin NewPassword123
Caution
Este script modifica directamente la base de datos. Utilícelo solo cuando sea necesario para la recuperación de cuentas.
Copiar imágenes
./scripts/copy-images.sh
Copia archivos de imagen de documentation/static/img a sus ubicaciones correspondientes en la aplicación:
- Copia
favicon.icoasrc/app/ - Copia
duplistatus_logo.pngapublic/images/ - Copia
duplistatus_banner.pngapublic/images/
Útil para mantener las imágenes de la aplicación sincronizadas con las imágenes de la documentación.
Comparar versiones entre desarrollo y Docker
./scripts/compare-versions.sh
Este script compara versiones entre su entorno de desarrollo y un contenedor Docker en ejecución. Realiza lo siguiente:
- Compara versiones de SQLite solo por versión principal (por ejemplo, 3.45.1 vs 3.51.1 se consideran compatibles, mostrado como "✅ (major)")
- Compara versiones de Node, npm y Duplistatus exactamente (deben coincidir exactamente)
- Muestra una tabla formateada con todas las comparaciones de versiones
- Proporciona un resumen con resultados codificados por color (✅ para coincidencias, ❌ para discrepancias)
- Sale con código 0 si todas las versiones coinciden, 1 si hay discrepancias
Requisitos:
- El contenedor Docker denominado
duplistatusdebe estar en ejecución - El script lee información de versión desde los logs del contenedor Docker
Salida de ejemplo:
┌─────────────────────────┬──────────────────────────────┬──────────────────────────────┬──────────────┐
│ Component │ Development │ Docker │ Match │
├─────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────┤
│ SQLite │ 3.45.1 │ 3.51.1 │ ✅ (major) │
│ Node │ 24.12.0 │ 24.12.0 │ ✅ │
│ npm │ 10.9.2 │ 10.9.2 │ ✅ │
│ Duplistatus │ 1.2.1 │ 1.2.1 │ ✅ │
└─────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────┘
Nota: Las versiones de SQLite se comparan solo por versión principal porque las diferentes versiones de parche dentro de la misma versión principal generalmente son compatibles. El script indicará si las versiones de SQLite coinciden a nivel principal pero difieren en versiones de parche.
Visualización de las configuraciones en la base de datos
sqlite3 data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R
sqlite3 /var/lib/docker/volumes/duplistatus_data/_data/backups.db "SELECT key, value FROM configurations;" | awk -F'|' '
{print "\n" $1 ": ";
if(index($2,"{")>0) {print $2 |"jq -C ."; close("jq -C .")}
else {print $2;}}' | less -R
Mostrar configuración de backup
./scripts/show-backup-settings.sh [database_path]
Muestra el contenido del valor backup_settings en la tabla de configuraciones en un formato de tabla. Útil para depurar configuraciones de notificaciones. Ruta predeterminada de la base de datos: data/backups.db.