---
title: Cup
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, docker, mise-a-jour, go, gui-web, auto-hebergement]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/sergi0g/cup]
---

# 🐳 Cup

> **Le café du matin pour vos conteneurs** : Cup (Container Updates for the Pour) est une GUI web minimaliste qui détecte les images Docker obsolètes et vous permet de les mettre à jour d'un clic. Simple, rapide, sans daemon permanent.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [sergi0g/cup](https://github.com/sergi0g/cup) |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 1309 ⭐ |
| **Dernière MAJ** | 2026-05-26 |
| **Catégorie** | [[cat-docker\|Docker]] |

## 📝 Description

**Cup** (parfois référencé `cup-updates`) est une **interface web légère** pour gérer les mises à jour d'images Docker. Il scanne périodiquement vos conteneurs, compare les tags locaux avec les distants, et affiche une **liste d'updates disponibles** avec un bouton « Update » par conteneur.

Le pari de Cup : entre [[app-watchtower|Watchtower]] (full auto, parfois trop) et [[app-dockcheck|Dockcheck]] (CLI pure, parfois trop brut), il y a la place pour une **GUI simple** où *vous* cliquez « update » quand *vous* êtes prêt.

- ✅ **Scan périodique** automatique (intervalle configurable, défaut 6h)
- ✅ **GUI web claire** : statut de chaque conteneur, tag local vs distant, bouton Update
- ✅ **Update sélectif** : un clic par conteneur, ou update multiple
- ✅ **Multi-registres** : Docker Hub, GHCR, Gitea, GitLab, Quay
- ✅ **Notifications** : Ntfy, Gotify, Discord, Slack, email, webhook custom
- ✅ **Binaire Go unique** : image Docker légère (~15 Mo), faible empreinte mémoire
- ✅ **Mode read-only / read-write** : paramétrable pour la sécurité
- ✅ **Statut public partageable** : page « what's outdated » accessible en lecture

**Cup vs Watchtower** : Watchtower met à jour **automatiquement** sans validation ; Cup affiche les MAJ et **attend votre clic**. Cup vs Diun : Diun *notifie* sans GUI de MAJ ; Cup *agit* depuis l'UI. Cup vs Portainer : Portainer fait 1000 choses, Cup en fait 1 (MAJ) bien.

## 🚀 Installation

### Docker Compose (recommandé)

```yaml
# docker-compose.yml
version: '3.8'
services:
  cup:
    image: ghcr.io/sergi0g/cup:latest
    container_name: cup
    restart: unless-stopped
    ports:
      - "8000:8000"  # Web UI
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # rw pour pouvoir update
      - cup-data:/data
    environment:
      - TZ=Europe/Paris
      - CUP_INTERVAL=6h
      - CUP_NOTIFIERS=ntfy
      - NTFY_URL=https://ntfy.sh/homelab-cup
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.cup.rule=Host(`cup.example.com`)"
      - "traefik.http.routers.cup.entrypoints=websecure"
      - "traefik.http.routers.cup.tls.certresolver=letsencrypt"

volumes:
  cup-data:
```

### Binaire standalone

```bash
wget -O cup.tar.gz https://github.com/sergi0g/cup/releases/latest/download/cup_Linux_x86_64.tar.gz
tar -xzf cup.tar.gz && sudo mv cup /usr/local/bin/
cup serve
```

## ⚙️ Configuration Initiale

1. **Monter le socket Docker en `rw`** (Cup doit pouvoir pull + recreate les conteneurs)
2. **Définir l'intervalle de scan** : `CUP_INTERVAL=6h` (ou `30m` pour des tests)
3. **Accéder à l'UI** : `http://IP:8000` — la page d'accueil liste les conteneurs et leur état
4. **Vérifier les MAJ détectées** : les conteneurs avec une nouvelle image affichent un badge « outdated »
5. **Tester un update** sur un conteneur de dev (pas de prod !), observer le recreate
6. **Configurer une notification** (Ntfy, Discord…) pour recevoir un récap à chaque scan

## 🔄 Alternatives

### Open Source
- [[app-watchtower|Watchtower]] — updates auto, sans GUI
- [[app-diun|Diun]] — notifications passives, sans update
- [[app-dockcheck|Dockcheck]] — CLI pure
- [[app-patchpanda|PatchPanda]] — orienté stacks Compose
- [[app-cupdate|Cupdate]] — update auto, zero-config

### Comparaison Cup vs alternatives

| Critère | Cup | Watchtower | Diun | Dockcheck |
| :--- | :--- | :--- | :--- | :--- |
| Type | GUI web | Daemon | Daemon notif | CLI |
| Update auto | ❌ (manuel) | ✅ | ❌ | ❌ (CLI) |
| Validation humaine | ✅ | ❌ | ❌ | ✅ |
| GUI | ✅ | ❌ | ❌ | ❌ (TUI) |
| Notifications | ✅ | ✅ | ✅ | ✅ |
| Setup | 3 min | 3 min | 5 min | 2 min |

**Verdict** : Cup est **le juste milieu parfait** entre « full auto » et « full manuel ». Si vous voulez voir ce qui se passe avant de cliquer, c'est lui. Pour du set-and-forget, [[app-watchtower|Watchtower]].

### Propriétaires (ce que Cup remplace)
- **Portainer auto-update** (Business uniquement)
- **Watchtower Cloud** (pas d'offre cloud officielle, donc gratuit)
- **Synology Container Manager** (DSM, propriétaire)

## 🔐 Sécurité

- ⚠️ **Socket Docker en `rw`** : c'est *volontaire* ici (Cup doit pouvoir update), mais cela donne à Cup un contrôle total sur l'hôte. À n'exposer que sur un réseau de confiance (VPN, LAN)
- **Authentification** : activer un reverse-auth (ex : [[app-authelia|authelia]]) devant la GUI si elle doit être accessible à plusieurs personnes
- **Logs des updates** : Cup journalise qui a cliqué « update » et quand — utile en équipe

## 📚 Ressources

- [GitHub sergi0g/cup](https://github.com/sergi0g/cup)
- [Démo / screenshots](https://github.com/sergi0g/cup#screenshots)

## Pages Liées
- [[cat-docker]] — Catégorie Docker
- [[app-portainer]] / [[app-dockge]] / [[app-yacht]] — GUI Docker
- [[app-traefik]] — Reverse-proxy
- [[recettes-docker-compose]] — Compose files
- [[securisation-home-lab]] — Bonnes pratiques
