Files
2026-06-09 18:40:21 +02:00

138 lines
5.7 KiB
Markdown

---
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***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