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 necesitas realizar una instalación limpia o resolver problemas de dependencias. El comando eliminará:
- el directorio
node_modules/ - el directorio de compilación
.next/ - el directorio
dist/ - Directorio
out/ - Directorio
.turbo/ pnpm-lock.yamldata/*.json(archivos de respaldo JSON de desarrollo)public/documentationdocumentation/.docusaurus,.cache,.cache-*,build,node_modules,pnpm-lock.yaml- Directorio
.genkit/ - Archivos
*.tsbuildinfo - Caché del 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
Realiza una limpieza completa de Docker, lo cual es útil para:
- Liberar espacio en disco
- Eliminar artefactos antiguos o no utilizados de Docker
- Limpiar después de sesiones de desarrollo o pruebas
- Mantener un entorno de Docker limpio
Actualizar los paquetes a la última versión
Puede actualizar paquetes manualmente utilizando:
ncu --upgrade
pnpm update
O use el script automatizado (prefiera source para que nvm se aplique a su shell actual; para ejecuciones de CI o no interactivas, use CI=1 o UPGRADE_ALLOW_EXEC=1):
source ./scripts/upgrade-dependencies.sh
El script upgrade-dependencies.sh automatiza todo el proceso de actualización de dependencias. Es independiente del proyecto: el gestor de paquetes, los paquetes del espacio de trabajo y el comando de verificación de cada paquete se detectan automáticamente (para que se actualicen tanto la raíz como los paquetes documentation/, sin rutas codificadas). Hace lo siguiente:
- Configura herramientas mediante
upgrade-tools.sh(nvm / Node LTS, globalpnpm,npm-check-updates,doctoc) - Realiza actualizaciones seguras de compilación con modo doctor
npm-check-updatespara cada paquete: mantiene las actualizaciones que pasan latypecheck/lintdel paquete y revierte las que rompen la compilación (con una puerta de pares ESLint integrada para que las actualizaciones deeslinty el complemento de React se mantengan compatibles) - Actualiza el archivo de bloqueo de pnpm del espacio de trabajo e instala dependencias
- Actualiza la base de datos de browserslist
- Busca vulnerabilidades (
pnpm audit) y aplica correcciones no disruptivas (pnpm audit --fix) - Prioriza la seguridad: si una dependencia directa vulnerable solo puede corregirse con una actualización que rompe la compilación, se aplica forzosamente la versión segura y se informan los errores de compilación para que el código pueda actualizarse para garantizar la compatibilidad
- Imprime un resumen (paquetes actualizados frente a paquetes omitidos por romper la compilación, vulnerabilidades corregidas/pendientes y una ruta de instantánea de manifiesto para reversión manual)
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:
- 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 de
documentation/package.json(si existe) - Solo actualiza si la versión ha cambiado
- Proporciona retroalimentación sobre 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 asegura que el archivo .duplistatus.key exista en el directorio data. Realiza:
- 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 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 administrador si se queda bloqueado o se olvida la contraseña. Realiza lo siguiente:
- Restablece la contraseña para el usuario especificado
- Desbloquea la cuenta si estaba bloqueada
- Restablece el contador de intentos fallidos de inicio de sesión
- Elimina la marca de "debe cambiar la contraseña"
- Valida que la contraseña cumpla con los requisitos de seguridad
- Registra la acción en el registro 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 las versiones entre tu entorno de desarrollo y un contenedor Docker en ejecución. Realiza lo siguiente:
- Compara las versiones de SQLite solo por versión principal (por ejemplo, 3.45.1 y 3.51.1 se consideran compatibles, mostrado como "✅ (principal)")
- Compara las 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 colores (✅ para coincidencias, ❌ para diferencias)
- Finaliza con código 0 si todas las versiones coinciden, 1 si hay diferencias
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.