138 lines
5.7 KiB
Markdown
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** 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
|