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

drydock

drydock

**Observateur de mise à jour d'image de conteneur : 23 registres, 21 fournisseurs de notifications et d'actions.**

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 est une version de test facultative.** Arrêtez Drydock et sauvegardez tout le répertoire de stockage avant de la tester. Le premier démarrage importe les données JSON dans SQLite. Revenir à une ancienne version exige de restaurer la sauvegarde préalable ; les changements effectués uniquement dans SQLite ne sont pas repris. Voir [migration et dépréciations](DEPRECATIONS.md). > [!WARNING] > **Vous effectuez une mise à jour à partir d'une ancienne version ? Lisez d'abord les notes de mise à niveau.** Trois correctifs de renforcement de la sécurité ont été livrés pour la première fois dans **1.4.6** et sont exécutés sur toute la ligne **1.5**, de sorte que toute mise à jour à partir d'une version antérieure à 1.4.6 est affectée quelle que soit la version sur laquelle elle atterrit (1.4.6, toute version 1.5.x ou ultérieure). Ce ne sont pas des dépréciations et n'ont pas de période de grâce : OIDC nécessite désormais `authorization_endpoint` dans les métadonnées de découverte de votre fournisseur, des clés de limitation de débit non authentifiées sur l'adresse homologue TCP (compartiment partagé derrière un proxy inverse) et les URL de proxy déclencheur HTTP doivent utiliser `http(s)://`. Voir **[UPGRADE-NOTES.md](UPGRADE-NOTES.md)** avant la mise à jour. > [!WARNING] > **Mise à niveau vers 1.6.0-rc.3 ou une version ultérieure ?** Des renforcements de sécurité supplémentaires s'appliquent sans délai de grâce. Une instance sans authentification configurée, ou avec l'accès anonyme activé mais non confirmé, échoue désormais en mode fermé lors d'une mise à niveau comme lors d'une nouvelle installation : le conteneur fonctionne, les requêtes API protégées renvoient `401`, les routes publiques de découverte et d'état d'authentification restent disponibles et `/health` renvoie `503`. L'interface SPA peut se charger, mais ne peut pas lire les données protégées. Définissez `DD_ANONYMOUS_AUTH_CONFIRM=true` ou configurez `DD_AUTH_BASIC_*`/OIDC avant la mise à niveau. Le cookie de session passe de `connect.sid` à `drydock.sid`, ce qui déconnecte une fois tous les utilisateurs. Les déclencheurs HTTP, le webhook Hass et les téléchargements d'icônes de registre utilisent désormais une résolution DNS protégée qui bloque les cibles de métadonnées cloud et link-local et ne suit jamais les redirections. Réservez `allowmetadata=true` à un déclencheur `DD_NOTIFICATION_HTTP_*` qui en a réellement besoin. Consultez **[DEPRECATIONS.md](DEPRECATIONS.md#enforced-security-changes-no-deprecation-window)** pour la procédure complète.

Contenu

- [Documentation](#documentation) - [Démarrage rapide](#quick-start) - [Captures d'écran et démo en direct](#screenshots) - [Pourquoi Drydock](#why-drydock) - [Caractéristiques](#features) - [Intégrations prises en charge](#supported-integrations) - [Comparaison des fonctionnalités](#feature-comparison) - [Migration](#migration) - [Feuille de route](#roadmap) - [Historique des étoiles](#star-history) - [Construit avec](#built-with) - [Communauté et support](#community-support) - [Écosystème CodesWhat](#codeswhat-ecosystem)

Documentations

| Ressource | Lien | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | Site Web | [getdrydock.com](https://getdrydock.com/) | | Démo en direct | [demo.getdrydock.com](https://demo.getdrydock.com) | | Documents | [getdrydock.com/docs](https://getdrydock.com/docs) | | Configuration | [Configuration](https://getdrydock.com/docs/configuration) | | Démarrage rapide | [Démarrage rapide](https://getdrydock.com/docs/quickstart) | | Journal des modifications | [`CHANGELOG.md`](CHANGELOG.md) | | Dépréciations | [`DEPRECATIONS.md`](DEPRECATIONS.md) | | Feuille de route | Voir la section [Roadmap](#roadmap) ci-dessous | | Contribuer | [`CONTRIBUTING.md`](CONTRIBUTING.md) | | Code de conduite | [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) | | Gouvernance | [`GOVERNANCE.md`](GOVERNANCE.md) | | Assurance de sécurité | [`SECURITY-ASSURANCE.md`](SECURITY-ASSURANCE.md) | | Politique de sécurité | [`SECURITY.md`](SECURITY.md) | | Problèmes | [Problèmes GitHub](https://github.com/CodesWhat/drydock/issues) | | Discussions | [GitHub Discussions](https://github.com/CodesWhat/drydock/discussions) — demandes de fonctionnalités et idées bienvenues |

Démarrage rapide

**Recommandé : utilisez un proxy de socket** pour restreindre les points de terminaison de l'API Docker auxquels Drydock peut accéder. Cela évite de donner au conteneur un accès complet au socket Docker. > **Remarque :** Compose traite `$` comme une syntaxe d'interpolation de variables, donc un hash argon2id collé avec un seul `$` arrive corrompu chez Drydock. Doublez chaque `$` en `$$` lorsque vous collez le hash réel, par exemple `$$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: ```
Alternative : sockguard proxy de socket [sockguard](https://github.com/CodesWhat/sockguard) est un filtre de socket Docker à refus par défaut du même écosystème CodesWhat, avec un préréglage conçu pour drydock : > **Remarque :** Compose traite `$` comme une syntaxe d'interpolation de variables, donc un hash argon2id collé avec un seul `$` arrive corrompu chez Drydock. Doublez chaque `$` en `$$` lorsque vous collez le hash réel, par exemple `$$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: ``` Voir le préréglage [`app/configs/portwing.yaml`](https://github.com/CodesWhat/sockguard/blob/dev/v1.5/app/configs/portwing.yaml) de sockguard pour un `sockguard.yaml` de départ (le même préréglage portwing est livré dans ses propres exemples).
Alternative : démarrage rapide avec montage direct sur prise ```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 ``` > **Avertissement :** L'accès direct au socket accorde au conteneur un contrôle total sur le démon Docker. Utilisez la configuration du proxy de socket ci-dessus pour les déploiements de production. Consultez le [Docker Socket Security guide](https://getdrydock.com/docs/configuration/watchers#docker-socket-security) pour toutes les options, y compris TLS distant et Docker sans racine. > > Utilisez des guillemets simples autour de la valeur du hash, comme indiqué. Les guillemets doubles laissent le shell développer `$` avant que docker ne le voie, corrompant un vrai hash argon2id.
> Générez un hachage de mot de passe (`argon2` CLI — installation via votre gestionnaire de packages) : > > ```bash > echo -n "yourpassword" | argon2 $(openssl rand -base64 32) -id -m 16 -t 3 -p 4 -l 64 -e > ``` > > Ou avec Node.js 24.7+ (aucun package supplémentaire nécessaire) : > > ```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 accepte uniquement les hachages d'authentification de base argon2id. Les anciens hachages `{SHA}`, `$apr1$`/`$1$`, `crypt` et en texte brut sont rejetés ; régénérez-les avant la mise à niveau. > L'authentification est **requise par défaut**. Consultez le [auth docs](https://getdrydock.com/docs/configuration/authentications) pour OIDC, accès anonyme et autres options. > L'accès anonyme doit être explicitement confirmé avec `DD_ANONYMOUS_AUTH_CONFIRM=true` sur les installations nouvelles comme mises à niveau. Sans cette confirmation, une instance sans authentification configurée, ou avec une authentification anonyme non confirmée, démarre en mode fermé : les requêtes API protégées renvoient `401`, les routes publiques de découverte et d'état de l'authentification restent disponibles, et `/health` renvoie `503`. L'image comprend les binaires `trivy` et `cosign` pour l'analyse des vulnérabilités locales et la vérification des images. Consultez le [Guide de démarrage rapide](https://getdrydock.com/docs/quickstart) pour Docker Compose, la sécurité des sockets, le proxy inverse et les registres alternatifs. Les changements de chaque version sont dans [`CHANGELOG.md`](CHANGELOG.md) et sur la page [GitHub Releases](https://github.com/CodesWhat/drydock/releases).

Captures d'écran et démo en direct

Drydock detecting and applying a container update

Repérez une mise à jour, voyez exactement quels changements, appliquez-la. Sauvegarde, vérification de l'état et restauration gérées.

Lumière Sombre
Dashboard Light Dashboard Dark
**Pourquoi regarder des captures d'écran quand vous pouvez en faire l'expérience vous-même ?** Try the Live Demo Entièrement interactif : véritable interface utilisateur, données fictives, aucune installation requise. Fonctionne entièrement dans le navigateur.

Pourquoi Drydock

Les images de conteneurs deviennent obsolètes en silence. Une image de base corrige un CVE, une application supprime une version, une balise se déplace. À moins que vous ne surveilliez chaque registre à la main, vos conteneurs en cours d'exécution prennent du retard jusqu'à ce que quelque chose se brise ou soit exploité. La plupart des outils imposent un compromis. Les mises à jour automatiques (Watchtower, Ouroboros) s'exécutent et redémarrent avec peu de visibilité ou de contrôle, et ne sont désormais en grande partie pas entretenues. Les tableaux de bord (Portainer) gèrent les conteneurs mais ne sont pas conçus pour l'intelligence des mises à jour. Drydock est **surveillant d'abord** : il surveille 23 registres et vous indique exactement ce qui a changé (majeur, mineur, correctif ou résumé) avant que quoi que ce soit ne se produise, puis n'agit que lorsque vous l'autorisez. Et cela va plus loin que n’importe lequel d’entre eux. L'analyse des vulnérabilités Trivy/Grype bloque les mises à jour dangereuses, Cosign vérifie les signatures, les sauvegardes d'images préalables à la mise à jour sont automatiquement annulées en cas d'échec du contrôle de santé, les agents distribués couvrent les hôtes distants et 21 intégrations de notifications et d'actions bouclent la boucle. Le cycle de vie complet des mises à jour, avec une interface utilisateur Web et une API REST.

Caractéristiques

| | Fonctionnalité | Descriptif | | --- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 🔭 | **Détection sur le moniteur en premier** | Surveille chaque conteneur en cours d'exécution et classe chaque mise à jour disponible comme majeure, mineure, correctif ou résumé avant que quoi que ce soit ne se produise. Rien ne change jusqu'à ce que vous le disiez. | | 📦 | **23 fournisseurs de registre** | Docker Hub, GHCR, ECR, ACR, GCR, GAR, GitLab, Quay, Harbor, Artifactory, Nexus et 12 autres. Public et privé, cloud et auto-hébergé, avec TLS et authentification par registre. | | 🔔 | **21 déclencheurs** | 17 canaux de notification (Slack, Discord, Telegram, Teams, SMTP, MQTT, ntfy et plus) ainsi que des actions Docker, Docker Compose, Portainer et Command, avec des modèles par événement/fournisseur, un aperçu en direct, un filtrage de seuil et un mode batch. | | 🥊 | **Update Bouncer** | L'analyse des vulnérabilités Trivy/Grype bloque les mises à jour dangereuses avant leur déploiement, avec vérification de la signature Cosign et génération SBOM (CycloneDX et SPDX). | | ↩️ | **Sauvegarde d'image et restauration automatique** | Pré-mettez à jour les instantanés d'image avec conservation configurable, restauration automatique en cas d'échec du contrôle de santé et restauration manuelle en un clic depuis l'interface utilisateur. | | 🪝 | **Crochets de cycle de vie** | Commandes shell avant et après la mise à jour via des étiquettes de conteneur, avec délais d'attente par hook et contrôle d'abandon en cas d'échec. | | 🗂️ | **Mises à jour Docker Compose** | Extrayez et recréez les services Compose via l'API Docker Engine avec des correctifs d'image préservant YAML. | | 🎛️ | **Politique par conteneur** | Les règles de balise Regex et le routage des déclencheurs utilisent les étiquettes `dd.*` ; les portes de maturité, les sauts/répétitions/épingles et les fenêtres de maintenance sont stockés via l'interface utilisateur/API ou la configuration de l'observateur. | | 🛰️ | **Agents distribués** | Surveillez les hôtes Docker distants via SSE. Les agents Portwing 0.9.0+ utilisent Standard HTTP entrant ou le transport WebSocket Edge sortant ; Drydock 1.6.0-rc.11+ exécute côté contrôleur les vérifications natives de registre et les mises à jour Docker individuelles ou groupées par l'un ou l'autre chemin authentifié. Edge transporte aussi les journaux continus sans port entrant ; `DD_EXPERIMENTAL_PORTWING=false` reste l'arrêt d'urgence. | | 🖥️ | **Tableau de bord Web** | Interface utilisateur Vue 3 avec une grille de widgets personnalisable sans dépendance, des vues de table/carte réactives, des mises à jour SSE en direct, des contrôles de cloche de notification et des détails, journaux et statistiques par conteneur. | | 🔗 | **API REST et webhooks** | Points de terminaison authentifiés par jeton pour les déclencheurs de surveillance et de mise à jour CI/CD, ainsi que l'ingestion de webhooks de registre signés pour les événements push. | | 🔐 | **Authentification OIDC** | Sécurisez le tableau de bord avec OpenID Connect (Authelia, Auth0, Authentik). Par défaut, tous les flux d’authentification refusent l’accès en cas d’échec (fail-closed). | | 📈 | **Métriques Prometheus** | Point de terminaison `/metrics` intégré avec contournement d'authentification en option pour les piles de surveillance Prometheus et Grafana. | | 🌍 | **17 paramètres régionaux de l'interface utilisateur** | Système de traduction entièrement câblé avec anglais complet et 16 paramètres régionaux gérés par la communauté synchronisés via Crowdin, commutables dans Config. | | 🔒 | **Regex immunitaire ReDoS** | Chaque modèle de balise fourni par l'utilisateur est compilé via re2js (un port pur JS RE2) pour une correspondance temporelle linéaire qui ne peut pas être bloquée par un modèle de retour en arrière catastrophique. |

Supported Integrations

### Registres (23) Docker Hub · GHCR · ECR · ACR · GCR · GAR · GitLab · Quay · LSCR · Harbor · Artifactory · Nexus · Gitea · Forgejo · Codeberg · MAU · TrueForge · Personnalisé · DOCR · DHI · IBM Cloud · Oracle Cloud · Alibaba Cloud ### Actions (4) Docker · Docker Compose · Portainer · Command ### Notifications (17) Apprise · Discord · Google Chat · Gotify · HTTP · IFTTT · Kafka · Matrix · Mattermost · MQTT · MS Teams · NTFY · Pushover · Rocket.Chat · Slack · SMTP · Telegram ### Authentification Anonyme (inscription via `DD_ANONYMOUS_AUTH_CONFIRM=true`) · Basique (nom d'utilisateur + hachage du mot de passe) · OIDC (Authelia, Auth0, Authentik). Par défaut, tous les flux d’authentification refusent l’accès en cas d’échec (fail-closed). ### Update Bouncer L'analyse des vulnérabilités basée sur Trivy ou Grype bloque les mises à jour dangereuses avant leur déploiement. Comprend la vérification de la signature Cosign et la génération SBOM (CycloneDX et SPDX).

Comparaison des fonctionnalités

Comment drydock se compare-t-il aux autres outils de mise à jour de conteneurs ? > ✅ = pris en charge   ❌ = non pris en charge   ⚠️ = partiel / limité   ? = non confirmé   † = archivé, n'est plus conservé

Gestionnaires de mises à jour

Fonctionnalité drydock WUD Diun Watchtower †
Maintenance active✅✅✅❌
Interface web / tableau de bord✅✅❌❌
Mise à jour automatique des conteneurs✅✅❌✅
Mises à jour Docker Compose✅✅❌⚠️
Mises à jour compatibles SemVer✅✅⚠️❌
Surveillance des digests✅✅✅✅
Filtrage par seuil de mise à jour (major/minor/patch/digest)✅✅❌❌
Ordre de mise à jour tenant compte des dépendances⚠️❌❌❌
File d'attente d'approbations en attente✅❌❌❌
Sauvegarde et restauration d'images✅❌❌❌
Hooks de cycle de vie (avant/après)✅❌❌✅
Analyse des vulnérabilités✅❌❌❌
Journal d'audit✅❌❌❌
RBAC / rôles multi-utilisateurs❌❌❌❌
Authentification OIDC / SSO✅✅❌❌
Canaux de déclenchement / notification211717~20
MQTT / Home Assistant✅✅⚠️❌
Fournisseurs de registres2312⚠️⚠️
API REST✅✅⚠️⚠️
API webhook pour CI/CD✅❌❌✅
Métriques Prometheus✅✅✅✅
Agents distribués (distants)✅⚠️❌⚠️
Regroupement de conteneurs / piles✅✅❌❌
Démarrer/arrêter/redémarrer/mettre à jour✅❌❌❌
Visionneuse de journaux de conteneur✅❌❌❌
> Watchtower a été archivé en décembre 2025 et sa dernière version était la v1.7.1 (novembre 2023). Un fork communautaire non officiel, nicholas-fedor/watchtower, continue de publier des versions.

Plateformes de gestion

Fonctionnalité drydock Arcane Komodo Dockhand
Maintenance active✅✅✅✅
Interface web / tableau de bord✅✅✅✅
Mise à jour automatique des conteneurs✅✅✅✅
Mises à jour Docker Compose✅✅✅✅
Mises à jour compatibles SemVer✅❌❌✅
Surveillance des digests✅✅✅✅
Filtrage par seuil de mise à jour (major/minor/patch/digest)✅❌⚠️⚠️
Ordre de mise à jour tenant compte des dépendances⚠️✅✅?
File d'attente d'approbations en attente✅❌❌❌
Sauvegarde et restauration d'images✅❌❌❌
Analyse des vulnérabilités✅✅❌✅
Journal d'audit✅✅✅⚠️
RBAC / rôles multi-utilisateurs❌✅✅⚠️
Authentification OIDC / SSO✅✅✅✅
Canaux de déclenchement / notification2111+515+
MQTT / Home Assistant✅❌❌✅
Fournisseurs de registres23⚠️⚠️⚠️
Métriques Prometheus✅❌❌✅
Agents distribués (distants)✅✅✅✅
Regroupement de conteneurs / piles✅✅✅?
> Compilé à partir de la documentation et des dépôts publics de chaque projet, le 29/08/2026. > Les contributions sont les bienvenues si des informations sont inexactes.

Migration

Migration depuis WUD (What's Up Docker ?) Drydock v1.6 ne charge plus les variables d'environnement `WUD_*` ou les étiquettes `wud.*` au moment de l'exécution. Réécrivez-les avant de démarrer le service mis à niveau ; l'état persistant migre toujours automatiquement. Utilisez `docker exec -it drydock node dist/index.js config migrate --dry-run` pour prévisualiser, puis `docker exec -it drydock node dist/index.js config migrate --file .env --file compose.yaml` pour réécrire la configuration en dénomination `DD_*` et `dd.*`.

Feuille de route

Thèmes et faits saillants de la version Cette orientation couvre au moins les douze prochains mois, jusqu'en août 2027. Thèmes généraux uniquement ; consultez [CHANGELOG.md](CHANGELOG.md) pour les détails de chaque version. | Version | Thème | Faits saillants | | -------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **v1.3.x** ✅ | Sécurité et stabilité | Analyse Trivy, Update Bouncer, SBOM, 7 nouveaux registres, 4 nouveaux déclencheurs, moteur regex re2js | | **v1.4.x** ✅ | Modernisation et renforcement de l'interface utilisateur | Tailwind 4 + composants personnalisés, 6 thèmes, palette Cmd/K, OpenAPI 3.1, mises à jour YAML natives, analyse à double emplacement, renforcement OIDC | | **v1.5.0** ✅ | Observabilité & i18n | répartition de la taxonomie de déclenchement (`DD_ACTION_*`/`DD_NOTIFICATION_*`), visionneuse de journaux WebSocket, personnalisation du tableau de bord, surveillance des ressources, boîte d'envoi de notification + DLQ, résumé d'analyse de sécurité, 17 paramètres régionaux, relecture de l'ID du dernier événement SSE, appel sortant de l'agent Edge avec authentification Ed25519 (expérimental, `DD_EXPERIMENTAL_PORTWING=true`) | | **v1.5.1** ✅ | Sécurité et maintenance | Correction d'authentification par extraction GCR/GAR, achèvement du registre TLS (M-2), renforcement par injection d'environnement de crochet, prise en charge de `DD_SESSION_SECRET__FILE`, suppression des informations d'identification de débogage, vérification des autorisations de fichiers secrets, correction de l'impasse de la porte de maturité, traductibilité complète de l'interface utilisateur + traductions communautaires, porte d'application automatique de la fenêtre de maintenance, affichage de la disponibilité du conteneur, version du logiciel de surfaçage de colonne Tag/Version (étiquette OCI, avec double écriture `dd.inspect.tag.path` + routage `dd.inspect.tag.version-only` opt-in), correspondance de préfixe de montage de composition opt-in, modèle `${currentReleaseNotes}` var | | **v1.5.2** ✅ | Politique et fiabilité des balises épinglées | Rétention des politiques de maturité/saut/répétition sécurisées pour les loisirs, détection de reconstruction de résumé de balises épinglées et informations informationnelles sur la même famille, nettoyage des candidats à l'annulation, prévention des cascades d'annulation, préservation MAC explicite et comportement de saut de registre d'images locales | | **v1.6.0** | Notifications, politiques et versions Intel | Modèles de notification par règle/par déclencheur avec aperçu en direct, préférences de cloche de notification, synchronisation des préférences entre appareils, grille de tableau de bord personnalisée sans dépendance ([#281](https://github.com/CodesWhat/drydock/issues/281)), politique de mise à jour déclarative ([#320](https://github.com/CodesWhat/drydock/issues/320)), compte à rebours de stabilisation de la maturité + visibilité immédiate des candidats + remplacement manuel ([#406](https://github.com/CodesWhat/drydock/discussions/406)), panneau d'état de mise à jour exploitable et global Mode de mise à jour `notify` / `manual` / `auto` ([#325](https://github.com/CodesWhat/drydock/discussions/325)), héritage de stratégie de balise observateur/imgset/conteneur plus courant empilé → visibilité de balise épinglée plus récente ([#498](https://github.com/CodesWhat/drydock/issues/498)), source 44px standardisée/notes de version/actions de ressources de registre dans la table, les cartes et les détails ([#295](https://github.com/CodesWhat/drydock/discussions/295)), notifications d'événements d'état de santé ([#198](https://github.com/CodesWhat/drydock/discussions/198)), Home Assistant bidirectionnel MQTT, vues de table/liste de cartes réactives, Trivy/Grype/les deux analyses via des commandes ou des backends Docker-worker épinglés, contrôles d'extraction/chauffage des ressources du scanner, SBOM dédupliqué hors tas stockage, exactitude de l'analyse longue Trivy ([#490](https://github.com/CodesWhat/drydock/issues/490)), avertissements de migration de taxonomie de déclenchement, suppressions de compatibilité v1.6, hygiène des documents/API et achèvement de la migration `/api` → `/api/v1` avec une cale de compatibilité opt-in wud-card/page d'accueil (`DD_COMPAT_WUDCARD`). | | **v1.7.0** | Mises à jour intelligentes et UX | Ordre de mise à jour tenant compte des dépendances ([#219](https://github.com/CodesWhat/drydock/discussions/219)), politique de mise à jour par action ([#511](https://github.com/CodesWhat/drydock/discussions/511)), horloge unifiée de maturité/âge des mises à jour, liens de port cliquables, raccourcis clavier, PWA, amélioration du contraste du thème sombre (WCAG 2.2) ([#850](https://github.com/CodesWhat/drydock/issues/850), [#865](https://github.com/CodesWhat/drydock/discussions/865)), suppression de `DD_TRIGGER_*` (fin de la fenêtre de dépréciation de la v1.5.0), curl supprimé de l'image | | **v1.8.0** | Gestion de flotte et configuration en direct | **Disponible en test dans v1.8.0-rc.1 ; GA à venir :** SQLite, file d'approbation, configuration YAML, éditeurs limités de politiques des observateurs/notifications/actions et modèles de résumés de sécurité, mises à jour parallèles et sélectives en masse ([#232](https://github.com/CodesWhat/drydock/discussions/232)), interface des dépendances, inventaire et nettoyage des images, état de flotte et actualisation de l'inventaire, regroupement par étiquette partageable, routage par groupe exact réservé aux notifications ([#1251](https://github.com/CodesWhat/drydock/pull/1251)), politiques persistantes de groupe avec restrictions d'actions, vue et éditeur de la politique effective, réglages Drydock prioritaires sur les paramètres de conteneur définis par étiquettes, connexion TOTP avec codes de récupération, fenêtres de maintenance limitées aux installations ([#946](https://github.com/CodesWhat/drydock/discussions/946)), authentification interne, clés API à portée limitée ([#469](https://github.com/CodesWhat/drydock/discussions/469)) et progression/appareils Home Assistant ([#210](https://github.com/CodesWhat/drydock/discussions/210)). **À venir :** La configuration en direct étendue exige des décisions sur la propriété des réglages ; l'observateur de listes d'images statiques reste reporté après GA. | | **v2.0+** | Extension de la plateforme et au-delà | Observateurs Swarm/Kubernetes, synchronisation GitOps, navigateur de volumes, images construites localement surveillées par rapport à une base upstream déclarée ([#897](https://github.com/CodesWhat/drydock/discussions/897)), barrières de santé, déploiements Canary, terminal Web, RBAC, LDAP/AD, prise en charge basique de Podman via son API compatible Docker, CLI, image renforcée Wolfi, proxy de socket | **Demandes communautaires encore ouvertes :** Les mises à jour et redémarrages de dépendances entre hôtes ([#219](https://github.com/CodesWhat/drydock/discussions/219)) ne sont pas implémentés. La maturité fondée sur le nombre de versions ([#558](https://github.com/CodesWhat/drydock/discussions/558)) comprend dans v1.8 la logique des familles de versions, un recours facultatif à l'ancienneté et une vérification bornée des digests pour les alias versionnés. Le comptage historique des digests des canaux non versionnés reste à faire. L'ordre des dépendances sur un même hôte ne couvre pas les hôtes distants. La détection des builds locaux et leur reconstruction sûre restent à développer ([#897](https://github.com/CodesWhat/drydock/discussions/897)). Le digest par défaut du processus ([#657](https://github.com/CodesWhat/drydock/discussions/657)) utilise `DD_DEFAULTS_WATCH_DIGEST` ; chaque agent se configure séparément. Aucune date de sortie n'est promise.

Historique des étoiles

Star History Chart
---

Construit avec

[![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/)

Communauté et support

Chat en temps réel et assistance précoce : **[CodesWhat Discord](https://discord.gg/mWHCPJRzSx)** Les bogues et les demandes de fonctionnalités concrètes vont dans **[GitHub Issues](https://github.com/CodesWhat/drydock/issues)** ; les questions ouvertes, idées et démonstrations vont dans **[GitHub Discussions](https://github.com/CodesWhat/drydock/discussions)** ; le chat en temps réel se passe sur **[CodesWhat Discord](https://discord.gg/mWHCPJRzSx)**. ### Contrôle qualité de la communauté Merci aux utilisateurs qui ont aidé à tester les versions candidates v1.4.0 et v1.5.0 et qui ont signalé des bugs : [@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)

Fait partie de l'écosystème CodesWhat

OutilRôle
drydockSurveillance des mises à jour des conteneurs : interface utilisateur Web et moteur de notification
portwingAgent Docker distant : accès sécurisé au niveau du socket à partir de Drydock ou autonome
sockguardDocker socket proxy - filtre de liste blanche de refus par défaut protégeant le socket
Ces trois outils sont conçus pour superposer : sockguard filtre le socket, portwing l'expose à distance et drydock surveille et agit sur l'état du conteneur. Voir le [COMPATIBILITY.md de portwing](https://github.com/CodesWhat/portwing/blob/main/COMPATIBILITY.md) pour connaître la matrice de compatibilité complète des trois outils. --- **[Licence AGPL-3.0](LICENSE)** CodesWhat Retour en haut