Une bonne cheatsheet pour Docker.
— Permalink
Avec la Raspberry Pi AI HAT+ 2, Raspberry Pi propose une carte intégrant directement un accélérateur Hailo-10H et 8 Go de mémoire dédiée, conçue pour le Raspberry Pi 5. Cette carte permet d’exécuter localement des modèles d’IA générative, des LLM et des Vision-Language Models, sans recours au cloud. L’AI HAT+ 2 délivre jusqu’à 40 TOPS […]
Cet article Raspberry Pi AI HAT+ 2 : installer Hailo-10H et lancer un LLM local (Partie 1) a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....
Ackify CE est une plateforme open-source (AGPL v3) permettant de générer des preuves de lecture cryptographiquement vérifiables pour des documents internes.
Les organisations doivent souvent prouver qu'un collaborateur a lu un document (politique RGPD, charte de sécurité, formation obligatoire). Les solutions existantes sont soit trop lourdes (signature électronique qualifiée comme DocuSign à 10-30€/utilisateur/mois), soit non sécurisées (simple email).
Ackify génère des preuves de lecture cryptographiques avec :
Ackify n'est pas une alternative à DocuSign pour des contrats juridiques. C'est une solution simple pour des besoins internes où la signature qualifiée est overkill.
N'hésitez pas si vous avez des questions techniques !
curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh | bash
cd ackify-ce
nano .env # Configurer OAuth2
docker compose up -d
Installation complète en ~5 minutes.
Backend
Frontend
DevOps
Commentaires : voir le flux Atom ouvrir dans le navigateur
Une approche intéressante pour héberger des containers (Podman en l'occurrence) : les gérer avec systemd, le gestionnaire de service de nombreuses distributions Linux.
C'est moins standard qu'un Docker Compose mais ça peut avoir un intérêt pour les admins sys pure souche qui retrouveront ainsi des outils familiers.
Une approche intéressante pour héberger des containers (Podman en l'occurrence) : les gérer avec systemd, le gestionnaire de service de nombreuses distributions Linux.
C'est moins standard qu'un Docker Compose mais ça peut avoir un intérêt pour les admins sys pure souche qui retrouveront ainsi des outils familiers.
Très pratique ça ! Des tout petits binaires pour mettre en place des healthchecks dans vos containers Docker qui exposent des services HTTP ou TCP.
Tout petits comme 75 ko au lieu de – par exemple – curl et ses ~10 Mo.
Très pratique ça ! Des tout petits binaires pour mettre en place des healthchecks dans vos containers Docker qui exposent des services HTTP ou TCP.
Tout petits comme 75 ko au lieu de – par exemple – curl et ses ~10 Mo.
Je cherchais à découvrir une alternative à Portainer, qui me permette de gérer très simplement des Dockers (MàJ, add, remove, prune) sur un hôte comme des machines distantes (j’en ai déjà 3 au garage).
J’ai le plaisir d’être tombé sur Arcane de Kyle Mendell : open source, beau, complet sans tomber dans l’excès d’options, traduit en plusieurs langues, permet de visualiser les containers, images, volumes, réseaux, de les créer/retirer/mettre à jour (avec notifications), créer des stacks etc. On peut accéder à des templates de la communauté ou autres, parcourir les registres DockerHub, GitHub et compagnie. Et ça s’installe/configure très facilement en prime.
En bref : ça claque !

Suivre la documentation pour installer Arcane et celle pour ses agents. Pour ces derniers, le AGENT_BOOTSTRAP_TOKEN est juste un mot de passe de son choix (qui ne sert qu’au 1er lancement).
Exemples chez moi où je place le serveur sur un NAS Synology.
services:
arcane:
image: ghcr.io/getarcaneapp/arcane:latest
container_name: arcane
restart: always
ports:
- 3552:3552
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /volume1/docker/arcane/data:/app/data
- /volume1/docker/arcane/projects:/app/data/projects
environment:
- APP_URL=http://localhost:3552
- PUID=1000
- PGID=1000
- ENCRYPTION_KEY=o2XKBfUGHw76fN89Ipr8CGqzO75HllzZ9iebkxMo3Aw=
- JWT_SECRET=2OfmGSZa3Bfef1lzgeFI3SiEJCoK15TZ3F4UiCCWsk4=
labels:
- com.centurylinklabs.watchtower.enable=true
Et les agents (en changeant de mot de passe à chaque fois)
services:
arcane-agent:
image: ghcr.io/getarcaneapp/arcane-headless:latest
container_name: arcane-agent
restart: always
ports:
- 3553:3553
environment:
- AGENT_MODE=true
- AGENT_BOOTSTRAP_TOKEN=sXtNKgdWb93KSykAr
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/aerya/docker/agent-data:/app/data
labels:
- com.centurylinklabs.watchtower.enable=true
Il suffit ensuite d’ajouter les agents pour pouvoir les gérer

Seul bémol, y’a de la statistique d’envoyée, ici bloquée par mon serveur AdGuardHome, et j’ai pas trouvé d’option pour désactiver ça.

C’est peut-être pas votre cas mais moi j’ai mis du temps à trouver comment accéder à mes agents distants ^^’

Voici un aperçu de l’outil







![]()
Il arrive que des gens publient un code sur GitHub avec un Dockerfile mais sans package. Le container est donc à construire soi-même, localement.
Ça peut se faire directement depuis un compose
services:
applicationABC:
build:
context: https://github.com/user/applicationABC.git
dockerfile: Dockerfile
container_name: applicationABC
restart: always
ports:
- 8080:8080
Mais dans ce cas la mise à jour automatisée via WatchTower ne fonctionne pas puisqu’il n’y a pas d’image à aller chercher.
labels:
- com.centurylinklabs.watchtower.enable=true
Du coup voici une solution de contournement, simple et surtout qui n’implique pas d’outil tiers ou de cloner un dépôt GitHub et faire/tenir à jour un package moi-même.
Ce bout de code va checker les commits d’un dépôt GitHub à intervalles réguliers et, au besoin, construire un container à jour localement et relancer le tout.
Avec notification Discord, parce que j’aime ça.
applicationABC-autoupdate:
image: alpine:latest
container_name: applicationABC-autoupdate
restart: always
environment:
GITHUB_REPO: https://github.com/user/applicationABC.git
DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
POLL_INTERVAL: 172800 # secondes
SERVICE_NAME: applicationABC
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /tmp:/repo
command: >
sh -c "
apk add --no-cache git bash curl docker-cli jq &&
mkdir -p /repo &&
cd /repo &&
git clone --depth 1 \$GITHUB_REPO . || true &&
REPO_NAME=\$(basename -s .git \$GITHUB_REPO) &&
DEFAULT_BRANCH=\$(curl -s https://api.github.com/repos/\$(echo \$GITHUB_REPO | sed 's|.*/||;s|.git||') | jq -r .default_branch) &&
git fetch origin \$DEFAULT_BRANCH &&
git checkout \$DEFAULT_BRANCH &&
LAST_COMMIT=\$(git rev-parse HEAD) &&
while true; do
git fetch origin \$DEFAULT_BRANCH &&
NEW_COMMIT=\$(git rev-parse origin/\$DEFAULT_BRANCH) &&
if [ \"\$NEW_COMMIT\" != \"\$LAST_COMMIT\" ]; then
echo \"[$(date)] Nouveau commit détecté sur \$DEFAULT_BRANCH, rebuild...\"
git reset --hard origin/\$DEFAULT_BRANCH &&
docker compose -f /repo/docker-compose.yml build \$SERVICE_NAME &&
docker compose -f /repo/docker-compose.yml up -d \$SERVICE_NAME &&
REPO_LINK=\$GITHUB_REPO &&
COMMIT_LINK=\"\$GITHUB_REPO/commit/\$NEW_COMMIT\" &&
curl -H 'Content-Type: application/json' -X POST -d '{\"content\": \"\$REPO_NAME mis à jour automatiquement !\nBranche : \$DEFAULT_BRANCH\nCommit : \$NEW_COMMIT\nDépôt : <\$REPO_LINK|\$REPO_NAME>\nLien du commit : <\$COMMIT_LINK|voir commit>\"}' \$DISCORD_WEBHOOK &&
LAST_COMMIT=\$NEW_COMMIT
else
echo \"[$(date)] Aucun changement sur \$DEFAULT_BRANCH.\"
fi
sleep \$POLL_INTERVAL
done
"
Le travail est effectué dans le dossier temporaire.
Il suffit d’éditer les variables voire le nom du container, histoire de faire propre
applicationABC-autoupdate:
image: alpine:latest
container_name: applicationABC-autoupdate
restart: always
environment:
GITHUB_REPO: https://github.com/user/applicationABC.git
DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
POLL_INTERVAL: 172800 # secondes
SERVICE_NAME: applicationABC
Attention, la variable SERVICE_NAME doit être le nom exact du service à reconstruire/relancer
services:
applicationABC:
build:
context: https://github.com/user/applicationABC.git
dockerfile: Dockerfile
container_name: applicationABC
restart: always
ports:
- 8080:8080
![]()