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

6.3 KiB


title: Sablier created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, docker, conteneur, auto-hebergement, go, economie-ressources] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Docker, https://github.com/sablierapp/sablier]

🐳 Sablier

L'économie d'énergie Docker, simplement : mettez en veille vos conteneurs quand vous ne les utilisez pas, et réveillez-les à la demande. Idéal pour les services « à la demande » comme les sites de démo, les labs, ou les services de développement.

📋 Informations Générales

Champ Valeur
Site web (GitHub)
GitHub sablierapp/sablier
License AGPL-3.0
Langage Go
Étoiles GitHub 2751
Dernière MAJ 2026-06-04
Catégorie cat-docker

📝 Description

Sablier est un projet permettant de démarrer, arrêter et mettre en veille (« sleep ») des conteneurs Docker à la demande. Comme un sablier, on peut retourner le conteneur pour le réveiller, et le remettre en sommeil après un délai d'inactivité configurable.

Le cas d'usage principal est l'économie de ressources : sur un homelab ou un petit serveur, beaucoup de conteneurs ne servent que ponctuellement (Jellyfin, Pi-hole de secours, sites de dev, agents de sauvegarde…). Les laisser tourner en permanence consomme du CPU, de la RAM et de l'électricité. Sablier les endort automatiquement et les réveille dès qu'une requête arrive.

  • Stratégies d'activation : web, Sleeping (timer), Schedule (cron-like), Dynamic (Docker labels)
  • Wake-up HTTP : endpoints GET /start, GET /stop, GET /sablier/{provider}/{name}
  • Page de statut personnalisable : affiche un placeholder pendant que le conteneur démarre
  • Providers : Docker, Docker Swarm, Kubernetes (via plugins)
  • Authentification : basic auth, OAuth2
  • API REST : pilotable depuis n8n, Home Assistant, etc.
  • Léger : un seul binaire Go, pas de base de données requise

Sablier vs alternatives : c'est l'un des rares projets à combiner à la fois le « sleep on inactivity » et le « wake on HTTP » dans une seule solution simple. Plus léger qu'un PaaS complet (Coolify, Kamal), plus flexible qu'un simple cron.

🚀 Installation

Docker Compose (recommandé)

# docker-compose.yml
version: '3.8'
services:
  sablier:
    image: sablierapp/sablier:1
    container_name: sablier
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro  # ⚠️ équivalent root
    environment:
      - SABLIER_LISTEN_PORT=8080
      - SABLIER_PROVIDER=docker
      - SABLIER_DYNAMIC_CONFIG=true
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.sablier.rule=Host(`sablier.example.com`)"
      - "traefik.http.routers.sablier.entrypoints=websecure"
      - "traefik.http.routers.sablier.tls.certresolver=letsencrypt"

  # Exemple : un conteneur à piloter via Sablier
  jellyfin-sleep:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    labels:
      - "sablier.enable=true"
      - "sablier.group=medias"
      - "sablier.schedule=0 8 * * *|0 23 * * *"  # actif de 8h à 23h
      - "sablier.timeout=30m"
      - "traefik.enable=false"  # Sablier agit comme reverse-proxy

Binaire standalone

wget -O sablier.tar.gz https://github.com/sablierapp/sablier/releases/latest/download/sablier_Linux_x86_64.tar.gz
tar -xzf sablier.tar.gz && sudo mv sablier /usr/local/bin/
sablier serve --provider docker

⚙️ Configuration Initiale

  1. Monter le socket Docker : Sablier a besoin de /var/run/docker.sock pour piloter les conteneurs
  2. Annoter les conteneurs à piloter avec les labels sablier.enable=true, sablier.group=…
  3. Choisir la stratégie d'activation : web (wake on HTTP) ou schedule (plages horaires) ou sleeping (timer)
  4. Configurer le timeout : sablier.timeout=30m → le conteneur s'endort après 30 min d'inactivité
  5. Accéder au statut : http://IP:8080 affiche la page d'attente quand un service démarre
  6. Tester : déclencher un curl http://sablier.example.com/start/jellyfin et vérifier avec docker ps

🔄 Alternatives

Open Source

  • Kiosk / Watchtower — gèrent les updates, pas le sleep
  • Docker Swarm / Kubernetes HPA — orchestration à plus grande échelle
  • Home Assistant + shell_command — DIY : docker stop après inactivité
  • Kuma (app-uptime-kuma) — monitoring, pas de mise en veille

Comparaison Sablier vs alternatives

Critère Sablier Cron maison Home Assistant K8s + HPA
Wake-on-HTTP (DIY)
Sleep on inactivity (DIY)
Page de statut
Setup 5 min 10 min 30 min 1h+
Complexité Faible Faible Moyenne Élevée

Verdict : Sablier est le meilleur compromis simplicité/fonctionnalité pour un homelab. Pour de la production à l'échelle, tournez-vous vers Kubernetes.

Propriétaires (ce que Sablier remplace)

  • Heroku Eco dynos (sleep après 30 min d'inactivité — modèle similaire)
  • Render free tier (idem)
  • Kaffeine (auto-wake Heroku, mais obsolète)

🔐 Sécurité

  • ⚠️ Socket Docker monté = accès root sur l'hôte. En cas de compromission Sablier, l'attaquant contrôle tout l'hôte. Alternatives : app-docker-socket-proxy-docker en mode read-only, ou exécuter Sablier en mode rootless.
  • Activer l'authentification (SABLIER_BASIC_AUTH_USER / SABLIER_BASIC_AUTH_PASSWORD) pour l'API d'administration
  • Page de statut publique : ne pas y exposer de liens /start sensibles si l'API est ouverte

📚 Ressources

Pages Liées