English · Español · Polski · 简体中文 · Deutsch · Français · Português (Brasil)

drydock

drydock

**Observador de actualizaciones de imágenes de contenedores: 23 registros, 21 proveedores de notificaciones y acciones.**

Release Multi-arch License
CI OpenSSF Scorecard OpenSSF Best Practices Maintainability Mutation testing Coverage
Docker Hub pulls Stars Mentioned in Awesome Docker Crowdin localization Sponsor


> [!WARNING] > **v1.8.0-rc.1 es una compilación de prueba opcional.** Detén Drydock y guarda una copia de todo el directorio de datos antes de probarla. El primer inicio importa los datos JSON a SQLite. Volver a una versión anterior exige restaurar la copia previa; los cambios realizados solo en SQLite no se transfieren. Consulta [migración y funciones obsoletas](DEPRECATIONS.md). > [!WARNING] > **¿Actualizando desde una versión anterior? Lea primero las notas de actualización.** Tres correcciones de refuerzo de seguridad se enviaron por primera vez en **1.4.6** y se ejecutan en toda la línea **1.5**, por lo que cualquiera que actualice desde una versión anterior a 1.4.6 se verá afectado independientemente de la versión a la que acceda (1.4.6, cualquier 1.5.x o posterior). No están en desuso y no tienen período de gracia: OIDC ahora requiere `authorization_endpoint` en los metadatos de descubrimiento de su proveedor, claves de limitación de velocidad no autenticadas en la dirección del par TCP (depósito compartido detrás de un proxy inverso) y las URL del proxy de activación HTTP deben usar `http(s)://`. Consulte **[UPGRADE-NOTES.md](UPGRADE-NOTES.md)** antes de actualizar. > [!WARNING] > **¿Actualizando a 1.6.0-rc.3 o posterior?** Se aplican más refuerzos de seguridad sin período de gracia. Una instancia sin autenticación configurada, o con autenticación anónima habilitada pero no confirmada, ahora se cierra de forma segura al actualizar, igual que una instalación nueva: el contenedor sigue ejecutándose; las solicitudes protegidas de la API devuelven `401`; las rutas públicas de descubrimiento y estado de autenticación siguen disponibles; y `/health` devuelve `503`. La interfaz SPA puede cargar, pero no puede leer datos protegidos. Configure `DD_ANONYMOUS_AUTH_CONFIRM=true` o `DD_AUTH_BASIC_*`/OIDC antes de actualizar. La cookie de sesión cambia de `connect.sid` a `drydock.sid`, cerrando una vez todas las sesiones existentes. Los activadores HTTP, el webhook de Hass y las descargas de iconos de registros ahora resuelven nombres mediante una consulta DNS protegida que bloquea destinos de metadatos de nube y link-local, y nunca sigue redirecciones. Use `allowmetadata=true` solo en un activador `DD_NOTIFICATION_HTTP_*` que realmente lo necesite. Consulte **[DEPRECATIONS.md](DEPRECATIONS.md#enforced-security-changes-no-deprecation-window)** para ver la guía completa.

Contenidos

- [Documentación](#documentation) - [Inicio rápido](#quick-start) - [Capturas de pantalla y demostración en vivo](#screenshots) - [Por qué Drydock](#why-drydock) - [Características](#features) - [Integraciones admitidas](#supported-integrations) - [Comparación de funciones](#feature-comparison) - [Migración](#migration) - [Hoja de ruta](#roadmap) - [Historia de las estrellas](#star-history) - [Construido con](#built-with) - [Comunidad y soporte](#community-support) - [Ecosistema CodesWhat](#codeswhat-ecosystem)

Documentación

| Recurso | Enlace | | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | Sitio web | [obtenerdrydock.com](https://getdrydock.com/) | | Demostración en vivo | [demo.getdrydock.com](https://demo.getdrydock.com) | | Documentos | [getdrydock.com/docs](https://getdrydock.com/docs) | | Configuración | [Configuración](https://getdrydock.com/docs/configuration) | | Inicio rápido | [Inicio rápido](https://getdrydock.com/docs/quickstart) | | Registro de cambios | [`CHANGELOG.md`](CHANGELOG.md) | | Deprecations | [`DEPRECATIONS.md`](DEPRECATIONS.md) | | Hoja de ruta | Consulte la sección [Hoja de ruta](#roadmap) más abajo | | Contribuyendo | [`CONTRIBUTING.md`](CONTRIBUTING.md) | | Código de conducta | [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) | | Governance | [`GOVERNANCE.md`](GOVERNANCE.md) | | Garantía de seguridad | [`SECURITY-ASSURANCE.md`](SECURITY-ASSURANCE.md) | | Política de seguridad | [`SECURITY.md`](SECURITY.md) | | Problemas | [Problemas de GitHub](https://github.com/CodesWhat/drydock/issues) | | Discusiones | [Discusiones de GitHub](https://github.com/CodesWhat/drydock/discussions): se aceptan solicitudes de funciones e ideas |

Inicio rápido

**Recomendado: use un proxy de socket** para restringir a qué puntos finales de la API de Docker puede acceder Drydock. Esto evita darle al contenedor acceso completo al socket Docker. > **Nota:** Compose trata `$` como sintaxis de interpolación de variables, por lo que un hash argon2id pegado con un solo `$` llega a Drydock dañado. Duplique cada `$` como `$$` al pegar el hash real, por ejemplo `$$argon2id$$v=19$$m=65536,t=3,p=4$$salt$$hash`. ```yaml services: drydock: image: codeswhat/drydock depends_on: socket-proxy: condition: service_healthy volumes: - drydock-store:/store environment: - DD_WATCHER_LOCAL_HOST=socket-proxy - DD_WATCHER_LOCAL_PORT=2375 - DD_AUTH_BASIC_ADMIN_USER=admin - "DD_AUTH_BASIC_ADMIN_HASH=" ports: - 3000:3000 socket-proxy: image: tecnativa/docker-socket-proxy volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - CONTAINERS=1 - IMAGES=1 - EVENTS=1 - SERVICES=1 - INFO=1 # Required for daemon identity detection (notification prefixes) # Add POST=1 and NETWORKS=1 for container actions and auto-updates healthcheck: test: wget --spider http://localhost:2375/version || exit 1 interval: 5s timeout: 3s retries: 3 start_period: 5s restart: unless-stopped volumes: drydock-store: ```
Alternativa: sockguard proxy de socket [sockguard](https://github.com/CodesWhat/sockguard) es un filtro de socket Docker de denegación predeterminado del mismo ecosistema CodesWhat, con un ajuste preestablecido creado para drydock: > **Nota:** Compose trata `$` como sintaxis de interpolación de variables, por lo que un hash argon2id pegado con un solo `$` llega a Drydock dañado. Duplique cada `$` como `$$` al pegar el hash real, por ejemplo `$$argon2id$$v=19$$m=65536,t=3,p=4$$salt$$hash`. ```yaml services: drydock: image: codeswhat/drydock depends_on: sockguard: condition: service_healthy volumes: - drydock-store:/store environment: - DD_WATCHER_LOCAL_HOST=sockguard - DD_WATCHER_LOCAL_PORT=2375 - DD_AUTH_BASIC_ADMIN_USER=admin - "DD_AUTH_BASIC_ADMIN_HASH=" ports: - 3000:3000 sockguard: image: codeswhat/sockguard volumes: - /var/run/docker.sock:/var/run/docker.sock - ./sockguard.yaml:/etc/sockguard/config.yaml:ro environment: - SOCKGUARD_CONFIG_FILE=/etc/sockguard/config.yaml healthcheck: test: wget --spider http://localhost:2375/version || exit 1 interval: 5s timeout: 3s retries: 3 start_period: 5s restart: unless-stopped volumes: drydock-store: ``` Consulte el ajuste preestablecido [`app/configs/portwing.yaml`](https://github.com/CodesWhat/sockguard/blob/dev/v1.5/app/configs/portwing.yaml) de sockguard para obtener un `sockguard.yaml` inicial (el mismo ajuste preestablecido portwing se envía en sus propios ejemplos).
Alternativa: inicio rápido con montaje directo en enchufe ```bash docker run -d \ --name drydock \ -p 3000:3000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v drydock-store:/store \ -e DD_AUTH_BASIC_ADMIN_USER=admin \ -e 'DD_AUTH_BASIC_ADMIN_HASH=' \ codeswhat/drydock:latest ``` > **Advertencia:** El acceso directo al socket otorga al contenedor control total sobre el demonio Docker. Utilice la configuración de proxy de socket anterior para implementaciones de producción. Consulte la [Guía de seguridad de Docker Socket](https://getdrydock.com/docs/configuration/watchers#docker-socket-security) para conocer todas las opciones, incluido TLS remoto y Docker sin raíz. > > Use comillas simples alrededor del valor del hash, como se muestra. Las comillas dobles permiten que el shell expanda `$` antes de que docker lo vea, dañando un hash argon2id real.
> Genere un hash de contraseña (`argon2` CLI: instálelo a través de su administrador de paquetes): > > ```bash > echo -n "yourpassword" | argon2 $(openssl rand -base64 32) -id -m 16 -t 3 -p 4 -l 64 -e > ``` > > O con Node.js 24.7+ (no se necesitan paquetes adicionales): > > ```bash > node -e 'const c=require("node:crypto");const s=c.randomBytes(32);const h=c.argon2Sync("argon2id",{message:process.argv[1],nonce:s,memory:65536,passes:3,parallelism:4,tagLength:64});console.log("argon2id$65536$3$4$"+s.toString("base64")+"$"+h.toString("base64"));' "yourpassword" > ``` > > Drydock v1.6 acepta solo hash de autenticación básica argon2id. Se rechazan los hashes heredados `{SHA}`, `$apr1$`/`$1$`, `crypt` y de texto sin formato; regenerarlos antes de actualizar. > La autenticación es **requerida de forma predeterminada**. Consulte los [auth docs](https://getdrydock.com/docs/configuration/authentications) para OIDC, acceso anónimo y otras opciones. > El acceso anónimo debe confirmarse explícitamente con `DD_ANONYMOUS_AUTH_CONFIRM=true` tanto en instalaciones nuevas como actualizadas. Sin esa confirmación, una instancia sin autenticación configurada o con autenticación anónima no confirmada se inicia cerrada de forma segura: las solicitudes protegidas de la API devuelven `401`, las rutas públicas de descubrimiento y estado de autenticación siguen disponibles y `/health` devuelve `503`. La imagen incluye archivos binarios `trivy` y `cosign` para escaneo de vulnerabilidades locales y verificación de imágenes. Consulte la [guía de inicio rápido](https://getdrydock.com/docs/quickstart) para Docker Compose, seguridad de socket, proxy inverso y registros alternativos. Los cambios de cada versión están en [`CHANGELOG.md`](CHANGELOG.md) y en la página de [GitHub Releases](https://github.com/CodesWhat/drydock/releases).

Capturas de pantalla y demostración en vivo

Drydock detecting and applying a container update

Detecte una actualización, vea exactamente qué cambios y aplíquela. Se manejan copias de seguridad, verificación de estado y reversión.

Luz oscuro
Dashboard Light Dashboard Dark
**¿Por qué mirar capturas de pantalla cuando puedes experimentarlo tú mismo?** Try the Live Demo Totalmente interactivo: interfaz de usuario real, datos simulados, no requiere instalación. Se ejecuta completamente en el navegador.

Por qué Drydock

Las imágenes de los contenedores quedan obsoletas silenciosamente. Una imagen base parchea un CVE, una aplicación corta una versión, una etiqueta se mueve. A menos que esté observando cada registro manualmente, sus contenedores en ejecución se retrasan hasta que algo se rompe o es explotado. La mayoría de las herramientas obligan a hacer concesiones. Los actualizadores automáticos (Watchtower, Ouroboros) se activan y reinician con poca visibilidad o control, y ahora prácticamente no reciben mantenimiento. Los paneles (Portainer) administran contenedores pero no están diseñados para inteligencia de actualización. Drydock es **monitor primero**: observa 23 registros y le dice exactamente qué cambió (mayor, menor, parche o resumen) antes de que suceda algo, luego actúa solo cuando usted lo permite. Y va más allá que cualquiera de ellos. El escaneo de vulnerabilidades Trivy/Grype bloquea actualizaciones no seguras, cosign verifica firmas, las copias de seguridad de imágenes previas a la actualización se revierten automáticamente en caso de falla en la verificación de estado, los agentes distribuidos cubren hosts remotos y 21 integraciones de notificaciones y acciones cierran el ciclo. El ciclo de vida completo de la actualización, con una interfaz de usuario web y una API REST.

Características

| | Característica | Descripción | | --- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 🔭 | **Monitorizar primero la detección** | Observa cada contenedor en ejecución y clasifica cada actualización disponible como principal, menor, parche o resumen antes de que suceda algo. Nada cambia hasta que tú lo digas. | | 📦 | **23 proveedores de registro** | Docker Hub, GHCR, ECR, ACR, GCR, GAR, GitLab, Quay, Harbour, Artifactory, Nexus y 12 más. Público y privado, en la nube y autohospedado, con autenticación y TLS por registro. | | 🔔 | **21 activadores** | 17 canales de notificación (Slack, Discord, Telegram, Teams, SMTP, MQTT, ntfy y más) además de acciones de Docker, Docker Compose, Portainer y Command, con plantillas por evento/proveedor, vista previa en vivo, filtrado de umbral y modo por lotes. | | 🥊 | **Update Bouncer** | El escaneo de vulnerabilidades Trivy/Grype bloquea las actualizaciones no seguras antes de que se implementen, con verificación de firma Cosign y generación de SBOM (CycloneDX y SPDX). | | ↩️ | **Copia de seguridad de imágenes y reversión automática** | Instantáneas de imágenes previas a la actualización con retención configurable, reversión automática en caso de falla en la verificación de estado y reversión manual con un solo clic desde la interfaz de usuario. | | 🪝 | **Ganchos de ciclo de vida** | Comandos de shell previos y posteriores a la actualización a través de etiquetas de contenedor, con tiempos de espera por gancho y control de cancelación en caso de falla. | | 🗂️ | **Actualizaciones Docker Compose** | Extraiga y vuelva a crear servicios de Compose a través de la API Docker Engine con parches de imágenes que preservan YAML. | | 🎛️ | **Política por contenedor** | Las reglas de etiquetas Regex y el enrutamiento de activación utilizan etiquetas `dd.*`; Las puertas de madurez, saltar/posponer/fijar y las ventanas de mantenimiento se almacenan a través de UI/API o la configuración del observador. | | 🛰️ | **Agentes distribuidos** | Supervise hosts Docker remotos mediante SSE. Los agentes Portwing 0.9.0+ funcionan por Standard HTTP entrante o transporte WebSocket Edge saliente; Drydock 1.6.0-rc.11+ puede ejecutar en el controlador comprobaciones nativas de registros y actualizaciones Docker individuales o por lotes a través de cualquiera de las rutas autenticadas. Edge también transporta registros continuos sin puerto de entrada; `DD_EXPERIMENTAL_PORTWING=false` sigue siendo la desactivación de emergencia. | | 🖥️ | **Panel web** | Interfaz de usuario de Vue 3 con una cuadrícula de widgets personalizable sin dependencia, vistas de tablas/tarjetas responsivas, actualizaciones SSE en vivo, controles de campana de notificación y detalles, registros y estadísticas por contenedor. | | 🔗 | **API REST y webhooks** | Puntos finales autenticados por token para activación de actualizaciones y vigilancia de CI/CD, además de ingesta de webhooks de registro firmados para eventos push. | | 🔐 | **Autenticación OIDC** | Asegure el tablero con OpenID Connect (Authelia, Auth0, Authentik). De forma predeterminada, todos los flujos de autenticación deniegan el acceso ante cualquier fallo (fail-closed). | | 📈 | **Métricas Prometheus** | Punto final `/metrics` incorporado con omisión de autenticación opcional para pilas de monitoreo Prometheus y Grafana. | | 🌍 | **17 configuraciones regionales de UI** | Sistema de traducción completamente cableado con inglés completo y 16 configuraciones regionales mantenidas por la comunidad sincronizadas a través de Crowdin, conmutables en Config. | | 🔒 | **Expresión regular inmune a ReDoS** | Cada patrón de etiquetas proporcionado por el usuario se compila a través de re2js (un puerto RE2 JS puro) para una coincidencia de tiempo lineal que no puede detenerse por un patrón de retroceso catastrófico. |

Integraciones admitidas

### Registros (23) Docker Hub · GHCR · ECR · ACR · GCR · GAR · GitLab · Quay · LSCR · Harbor · Artifactory · Nexus · Gitea · Forgejo · Codeberg · MAU · TrueForge · Personalizado · DOCR · DHI · IBM Cloud · Oracle Cloud · Alibaba Cloud ### Acciones (4) Docker · Docker Compose · Portainer · Command ### Notificaciones (17) Apprise · Discord · Google Chat · Gotify · HTTP · IFTTT · Kafka · Matrix · Mattermost · MQTT · MS Teams · NTFY · Pushover · Rocket.Chat · Slack · SMTP · Telegram ### Autenticación Anónimo (suscripción a través de `DD_ANONYMOUS_AUTH_CONFIRM=true`) · Básico (nombre de usuario + hash de contraseña) · OIDC (Authelia, Auth0, Authentik). De forma predeterminada, todos los flujos de autenticación deniegan el acceso ante cualquier fallo (fail-closed). ### Update Bouncer El escaneo de vulnerabilidades impulsado por Trivy o Grype bloquea las actualizaciones no seguras antes de que se implementen. Incluye verificación de firma Cosign y generación de SBOM (CycloneDX y SPDX).

Comparación de funciones

¿Cómo se compara drydock con otras herramientas de actualización de contenedores? > ✅ = compatible   ❌ = no compatible   ⚠️ = parcial/limitado   ? = sin confirmar   † = archivado, ya no se mantiene

Gestores de actualizaciones

Característica drydock WUD Diun Watchtower †
Mantenimiento activo✅✅✅❌
Interfaz web / panel✅✅❌❌
Actualización automática de contenedores✅✅❌✅
Actualizaciones de Docker Compose✅✅❌⚠️
Actualizaciones compatibles con SemVer✅✅⚠️❌
Monitorización de digest✅✅✅✅
Filtrado por umbral de actualización (major/minor/patch/digest)✅✅❌❌
Orden de actualización según dependencias⚠️❌❌❌
Cola de aprobaciones pendientes✅❌❌❌
Copia y reversión de imágenes✅❌❌❌
Hooks del ciclo de vida (antes/después)✅❌❌✅
Análisis de vulnerabilidades✅❌❌❌
Registro de auditoría✅❌❌❌
RBAC / roles multiusuario❌❌❌❌
Autenticación OIDC / SSO✅✅❌❌
Canales de activación / notificación211717~20
MQTT / Home Assistant✅✅⚠️❌
Proveedores de registro2312⚠️⚠️
API REST✅✅⚠️⚠️
API de webhooks para CI/CD✅❌❌✅
Métricas de Prometheus✅✅✅✅
Agentes distribuidos (remotos)✅⚠️❌⚠️
Agrupación de contenedores / stacks✅✅❌❌
Iniciar/detener/reiniciar/actualizar contenedores✅❌❌❌
Visor de registros del contenedor✅❌❌❌
> Watchtower se archivó en diciembre de 2025 y su última versión fue la v1.7.1 (noviembre de 2023). Un fork comunitario no oficial, nicholas-fedor/watchtower, sigue publicando versiones.

Plataformas de gestión

Característica drydock Arcane Komodo Dockhand
Mantenimiento activo✅✅✅✅
Interfaz web / panel✅✅✅✅
Actualización automática de contenedores✅✅✅✅
Actualizaciones de Docker Compose✅✅✅✅
Actualizaciones compatibles con SemVer✅❌❌✅
Monitorización de digest✅✅✅✅
Filtrado por umbral de actualización (major/minor/patch/digest)✅❌⚠️⚠️
Orden de actualización según dependencias⚠️✅✅?
Cola de aprobaciones pendientes✅❌❌❌
Copia y reversión de imágenes✅❌❌❌
Análisis de vulnerabilidades✅✅❌✅
Registro de auditoría✅✅✅⚠️
RBAC / roles multiusuario❌✅✅⚠️
Autenticación OIDC / SSO✅✅✅✅
Canales de activación / notificación2111+515+
MQTT / Home Assistant✅❌❌✅
Proveedores de registro23⚠️⚠️⚠️
Métricas de Prometheus✅❌❌✅
Agentes distribuidos (remotos)✅✅✅✅
Agrupación de contenedores / stacks✅✅✅?
> Recopilado de la documentación y los repositorios públicos de cada proyecto, 29-08-2026. > Se aceptan contribuciones si alguna información es inexacta.

Migración

Migrando desde WUD (¿Qué pasa Docker?) Drydock v1.6 ya no carga variables de entorno `WUD_*` o etiquetas `wud.*` en tiempo de ejecución. Vuelva a escribirlos antes de iniciar el servicio actualizado; El estado persistente aún migra automáticamente. Utilice `docker exec -it drydock node dist/index.js config migrate --dry-run` para obtener una vista previa y luego `docker exec -it drydock node dist/index.js config migrate --file .env --file compose.yaml` para reescribir la configuración con los nombres `DD_*` y `dd.*`.

Hoja de ruta

Temas y aspectos destacados de la versión Esta dirección cubre al menos los próximos doce meses, hasta agosto de 2027. Solo temas generales; consulte [CHANGELOG.md](CHANGELOG.md) para conocer el detalle de cada versión. | Versión | Tema | Aspectos destacados | | -------------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **v1.3.x** ✅ | Seguridad y Estabilidad | Escaneo Trivy, Update Bouncer, SBOM, 7 nuevos registros, 4 nuevos activadores, motor re2js regex | | **v1.4.x** ✅ | Modernización y refuerzo de la interfaz de usuario | Tailwind 4 + componentes personalizados, 6 temas, paleta Cmd/K, OpenAPI 3.1, actualizaciones YAML nativas de redacción, escaneo de doble ranura, refuerzo OIDC | | **v1.5.0** ✅ | Observabilidad e i18n | división de taxonomía de activación (`DD_ACTION_*`/`DD_NOTIFICATION_*`), visor de registros WebSocket, personalización del panel, monitoreo de recursos, bandeja de salida de notificaciones + DLQ, resumen de escaneo de seguridad, 17 configuraciones regionales, reproducción de ID del último evento SSE, acceso telefónico al agente perimetral con autenticación Ed25519 (experimental, `DD_EXPERIMENTAL_PORTWING=true`) | | **v1.5.1** ✅ | Seguridad y mantenimiento | Corrección de autenticación de extracción GCR/GAR, finalización de TLS de registro (M-2), refuerzo de inyección de env-var de gancho, compatibilidad con `DD_SESSION_SECRET__FILE`, redacción de credenciales de volcado de depuración, verificación de permisos de archivos secretos, corrección de bloqueo de puerta de madurez, traducibilidad completa de la interfaz de usuario + traducciones de la comunidad, puerta de aplicación automática de ventana de mantenimiento, visualización del tiempo de actividad del contenedor, versión de software de superficie dividida de columna Etiqueta/Versión (etiqueta OCI, con escritura dual `dd.inspect.tag.path` + opción de enrutamiento `dd.inspect.tag.version-only`), opción de coincidencia de prefijo de montaje de composición, var de plantilla `${currentReleaseNotes}` | | **v1.5.2** ✅ | Política y confiabilidad de etiquetas fijadas | Retención de política de madurez/omisión/posposición segura para recreación, detección de reconstrucción de resumen de etiquetas fijadas e información informativa de la misma familia, limpieza de candidatos de reversión, prevención de cascada de reversión, preservación de MAC explícito y comportamiento de omisión de registro de imágenes locales | | **v1.6.0** | Notificaciones, políticas y comunicados Intel | Plantillas de notificación por regla/por activador con vista previa en vivo, preferencias de campana de notificación, sincronización de preferencias entre dispositivos, cuadrícula de panel personalizado sin dependencia ([#281](https://github.com/CodesWhat/drydock/issues/281)), política de actualización declarativa ([#320](https://github.com/CodesWhat/drydock/issues/320)), cuenta regresiva de estabilización de madurez + visibilidad inmediata del candidato + anulación manual ([#406](https://github.com/CodesWhat/drydock/discussions/406)), panel de estado de actualización procesable y global Modo de actualización `notify` / `manual` / `auto` ([#325](https://github.com/CodesWhat/drydock/discussions/325)), herencia de políticas de etiquetas de observador/imgset/contenedor más actual apilada → visibilidad de etiquetas fijadas más nuevas ([#498](https://github.com/CodesWhat/drydock/issues/498)), fuente estandarizada de 44 px/notas de la versión/acciones de recursos de registro en tablas, tarjetas y detalles ([#295](https://github.com/CodesWhat/drydock/discussions/295)), notificaciones de eventos de estado de salud ([#198](https://github.com/CodesWhat/drydock/discussions/198)), Home Assistant MQTT bidireccional, vistas responsivas de tablas/listas de tarjetas, Trivy/Grype/análisis a través de comandos o backends de Docker-worker anclados, controles activos/de extracción de activos del escáner, deduplicación fuera del montón Almacenamiento SBOM, corrección de escaneo largo de Trivy ([#490](https://github.com/CodesWhat/drydock/issues/490)), advertencias de migración de taxonomía de activación, eliminaciones de compatibilidad v1.6, higiene de documentos/API y finalización de migración de `/api` → `/api/v1` con una cuña de compatibilidad de página de inicio/tarjeta wud opcional (`DD_COMPAT_WUDCARD`). | | **v1.7.0** | Actualizaciones inteligentes y UX | Ordenamiento de actualizaciones consciente de la dependencia ([#219](https://github.com/CodesWhat/drydock/discussions/219)), política de actualización por acción ([#511](https://github.com/CodesWhat/drydock/discussions/511)), reloj unificado de madurez/antigüedad de actualizaciones, enlaces de puertos en los que se puede hacer clic, atajos de teclado, PWA, revisión de contraste del tema oscuro (WCAG 2.2) ([#850](https://github.com/CodesWhat/drydock/issues/850), [#865](https://github.com/CodesWhat/drydock/discussions/865)), eliminación de `DD_TRIGGER_*` (fin de la ventana de obsolescencia de v1.5.0), curl eliminado de la imagen | | **v1.8.0** | Gestión de flotas y configuración en vivo | **Disponible para pruebas en v1.8.0-rc.1; GA pendiente:** SQLite, cola de aprobación, configuración YAML, editores acotados de políticas de observadores/notificaciones/acciones y plantillas de resúmenes de seguridad, actualizaciones paralelas y masivas selectivas ([#232](https://github.com/CodesWhat/drydock/discussions/232)), interfaz de dependencias, inventario y limpieza de imágenes, estado de flota y actualización de inventario, agrupación por etiquetas compartible, enrutamiento por grupo exacto solo para notificaciones ([#1251](https://github.com/CodesWhat/drydock/pull/1251)), políticas persistentes de grupo con restricciones de acciones, vista y editor de la política efectiva, ajustes de Drydock sobre la configuración del contenedor definida por etiquetas, inicio de sesión TOTP con códigos de recuperación, ventanas de mantenimiento solo para instalaciones ([#946](https://github.com/CodesWhat/drydock/discussions/946)), autenticación propia, claves API con alcance limitado ([#469](https://github.com/CodesWhat/drydock/discussions/469)) y progreso/dispositivos de Home Assistant ([#210](https://github.com/CodesWhat/drydock/discussions/210)). **Pendiente:** La configuración en vivo ampliada requiere decisiones sobre quién controla los ajustes; el observador de listas estáticas de imágenes queda para después de GA. | | **v2.0+** | Expansión de plataforma y más allá | Vigilantes de enjambre/Kubernetes, sincronización GitOps, navegador de volúmenes, imágenes creadas localmente monitoreadas contra una base upstream declarada ([#897](https://github.com/CodesWhat/drydock/discussions/897)), puertas de estado, implementaciones canary, terminal web, RBAC, LDAP/AD, compatibilidad básica con Podman a través de su API compatible con Docker, CLI, imagen reforzada de Wolfi, proxy de socket | **Requisitos pendientes de la comunidad:** Las actualizaciones y reinicios de dependencias entre hosts ([#219](https://github.com/CodesWhat/drydock/discussions/219)) no están implementados. La madurez por número de versiones ([#558](https://github.com/CodesWhat/drydock/discussions/558)) ya incluye la lógica de familias de versiones en v1.8, con alternativa opcional por antigüedad y comprobación acotada de digests para alias con versión. El recuento histórico de digests de canales sin versión queda pendiente. El orden de dependencias en un mismo host no cubre los hosts remotos. La detección de builds locales y la reconstrucción segura siguen siendo trabajo futuro ([#897](https://github.com/CodesWhat/drydock/discussions/897)). El valor predeterminado de digests del proceso ([#657](https://github.com/CodesWhat/drydock/discussions/657)) usa `DD_DEFAULTS_WATCH_DIGEST`; cada agente se configura por separado. Estas entradas no prometen fechas de lanzamiento.

Historia de las estrellas

Star History Chart
---

Construido con

[![TypeScript](https://img.shields.io/badge/TypeScript_6.0-3178C6?logo=typescript&logoColor=fff)](https://www.typescriptlang.org/) [![Vue 3](https://img.shields.io/badge/Vue_3-42b883?logo=vuedotjs&logoColor=fff)](https://vuejs.org/) [![Express 5](https://img.shields.io/badge/Express_5-000?logo=express&logoColor=fff)](https://expressjs.com/) [![Vitest](https://img.shields.io/badge/Vitest_4-6E9F18?logo=vitest&logoColor=fff)](https://vitest.dev/) [![Biome](https://img.shields.io/badge/Biome_2.5-60a5fa?logo=biome&logoColor=fff)](https://biomejs.dev/) [![Node 24](https://img.shields.io/badge/Node_24_Alpine-339933?logo=nodedotjs&logoColor=fff)](https://nodejs.org/) [![Anthropic](https://img.shields.io/badge/Anthropic-CC785C?style=flat&logo=anthropic&logoColor=white)](https://claude.ai/) [![OpenAI](https://img.shields.io/badge/OpenAI-10A37F?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU%2BT3BlbkFJPC90aXRsZT48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMjIuMjgxOSA5LjgyMTFhNS45ODQ3IDUuOTg0NyAwIDAgMC0uNTE1Ny00LjkxMDggNi4wNDYyIDYuMDQ2MiAwIDAgMC02LjUwOTgtMi45QTYuMDY1MSA2LjA2NTEgMCAwIDAgNC45ODA3IDQuMTgxOGE1Ljk4NDcgNS45ODQ3IDAgMCAwLTMuOTk3NyAyLjkgNi4wNDYyIDYuMDQ2MiAwIDAgMCAuNzQyNyA3LjA5NjYgNS45OCA1Ljk4IDAgMCAwIC41MTEgNC45MTA3IDYuMDUxIDYuMDUxIDAgMCAwIDYuNTE0NiAyLjkwMDFBNS45ODQ3IDUuOTg0NyAwIDAgMCAxMy4yNTk5IDI0YTYuMDU1NyA2LjA1NTcgMCAwIDAgNS43NzE4LTQuMjA1OCA1Ljk4OTQgNS45ODk0IDAgMCAwIDMuOTk3Ny0yLjkwMDEgNi4wNTU3IDYuMDU1NyAwIDAgMC0uNzQ3NS03LjA3Mjl6bS05LjAyMiAxMi42MDgxYTQuNDc1NSA0LjQ3NTUgMCAwIDEtMi44NzY0LTEuMDQwOGwuMTQxOS0uMDgwNCA0Ljc3ODMtMi43NTgyYS43OTQ4Ljc5NDggMCAwIDAgLjM5MjctLjY4MTN2LTYuNzM2OWwyLjAyIDEuMTY4NmEuMDcxLjA3MSAwIDAgMSAuMDM4LjA1MnY1LjU4MjZhNC41MDQgNC41MDQgMCAwIDEtNC40OTQ1IDQuNDk0NHptLTkuNjYwNy00LjEyNTRhNC40NzA4IDQuNDcwOCAwIDAgMS0uNTM0Ni0zLjAxMzdsLjE0Mi4wODUyIDQuNzgzIDIuNzU4MmEuNzcxMi43NzEyIDAgMCAwIC43ODA2IDBsNS44NDI4LTMuMzY4NXYyLjMzMjRhLjA4MDQuMDgwNCAwIDAgMS0uMDMzMi4wNjE1TDkuNzQgMTkuOTUwMmE0LjQ5OTIgNC40OTkyIDAgMCAxLTYuMTQwOC0xLjY0NjR6TTIuMzQwOCA3Ljg5NTZhNC40ODUgNC40ODUgMCAwIDEgMi4zNjU1LTEuOTcyOFYxMS42YS43NjY0Ljc2NjQgMCAwIDAgLjM4NzkuNjc2NWw1LjgxNDQgMy4zNTQzLTIuMDIwMSAxLjE2ODVhLjA3NTcuMDc1NyAwIDAgMS0uMDcxIDBsLTQuODMwMy0yLjc4NjVBNC41MDQgNC41MDQgMCAwIDEgMi4zNDA4IDcuODcyem0xNi41OTYzIDMuODU1OEwxMy4xMDM4IDguMzY0IDE1LjExOTIgNy4yYS4wNzU3LjA3NTcgMCAwIDEgLjA3MSAwbDQuODMwMyAyLjc5MTNhNC40OTQ0IDQuNDk0NCAwIDAgMS0uNjc2NSA4LjEwNDJ2LTUuNjc3MmEuNzkuNzkgMCAwIDAtLjQwNy0uNjY3em0yLjAxMDctMy4wMjMxbC0uMTQyLS4wODUyLTQuNzczNS0yLjc4MThhLjc3NTkuNzc1OSAwIDAgMC0uNzg1NCAwTDkuNDA5IDkuMjI5N1Y2Ljg5NzRhLjA2NjIuMDY2MiAwIDAgMSAuMDI4NC0uMDYxNWw0LjgzMDMtMi43ODY2YTQuNDk5MiA0LjQ5OTIgMCAwIDEgNi42ODAyIDQuNjZ6TTguMzA2NSAxMi44NjNsLTIuMDItMS4xNjM4YS4wODA0LjA4MDQgMCAwIDEtLjAzOC0uMDU2N1Y2LjA3NDJhNC40OTkyIDQuNDk5MiAwIDAgMSA3LjM3NTctMy40NTM3bC0uMTQyLjA4MDVMOC43MDQgNS40NTlhLjc5NDguNzk0OCAwIDAgMC0uMzkyNy42ODEzem0xLjA5NzYtMi4zNjU0bDIuNjAyLTEuNDk5OCAyLjYwNjkgMS40OTk4djIuOTk5NGwtMi41OTc0IDEuNDk5Ny0yLjYwNjctMS40OTk3WiIvPjwvc3ZnPg%3D%3D)](https://openai.com) [![SemVer](https://img.shields.io/badge/semver-2.0.0-blue)](https://semver.org/) [![Conventional Commits](https://img.shields.io/badge/commits-conventional-fe5196?logo=conventionalcommits&logoColor=fff)](https://www.conventionalcommits.org/) [![Keep a Changelog](https://img.shields.io/badge/changelog-Keep%20a%20Changelog-E05735)](https://keepachangelog.com/)

Comunidad y soporte

Chat en tiempo real y soporte temprano: **[CodesWhat Discord](https://discord.gg/mWHCPJRzSx)** Los errores y las solicitudes de funciones concretas van a **[GitHub Issues](https://github.com/CodesWhat/drydock/issues)**; las preguntas abiertas, ideas y demostraciones van a **[GitHub Discussions](https://github.com/CodesWhat/drydock/discussions)**; el chat en tiempo real ocurre en **[CodesWhat Discord](https://discord.gg/mWHCPJRzSx)**. ### Control de calidad de la comunidad Gracias a los usuarios que ayudaron a probar las versiones candidatas v1.4.0 y v1.5.0 y reportaron errores: [@RK62](https://github.com/RK62) · [@flederohr](https://github.com/flederohr) · [@rj10rd](https://github.com/rj10rd) · [@larueli](https://github.com/larueli) · [@Waler](https://github.com/Waler) · [@ElVit](https://github.com/ElVit) · [@nchieffo](https://github.com/nchieffo) · [@begunfx](https://github.com/begunfx) · [@Ra72xx](https://github.com/Ra72xx)

Parte del ecosistema CodesWhat

HerramientaRol
drydockMonitoreo de actualizaciones de contenedores: interfaz de usuario web y motor de notificaciones
portwingAgente Docker remoto: acceso seguro a nivel de socket desde Drydock o de forma independiente
sockguardProxy de socket de Docker: filtro de lista permitida de denegación predeterminada que protege el socket
Estas tres herramientas están diseñadas para capas: sockguard filtra el socket, portwing lo expone de forma remota y drydock monitorea y actúa sobre el estado del contenedor. Consulte el [COMPATIBILITY.md de portwing](https://github.com/CodesWhat/portwing/blob/main/COMPATIBILITY.md) para obtener la matriz de compatibilidad completa entre las tres herramientas. --- **[Licencia AGPL-3.0](LICENSE)** CodesWhat Volver arriba