Ce billet de blog présente une configuration impliquant trois outils : StepCA, Caddy et MISP, via le protocole ACME. L'auteur, ayant travaillé sur du CTI (Cyber Threat Intelligence), utilise MISP, une plateforme open source pour partager des informations sur les menaces. Il explique comment il a mis en place une PKI interne avec StepCA pour gérer les certificats TLS, et utilise Caddy comme reverse proxy pour le SSL offloading. Le lab comprend une root CA offline, une sub CA avec serveur ACME privé, un serveur DNS, et une VM avec Docker exécutant Caddy et MISP. L'article détaille également le rôle du CTI et de MISP dans la cybersécurité proactive.
Ce billet explique comment implémenter un audit de sécurité DAST (Dynamic Application Security Testing) automatisé avec OWASP ZAP, Symfony et Docker. L'auteur décrit l'architecture de l'intégration, qui repose sur trois composants clés : l'image Docker officielle de ZAP, l'Automation Framework pour configurer le scan via un fichier YAML, et l'orchestrateur Castor pour gérer l'interconnexion réseau. Le défi principal est de permettre au conteneur ZAP d'accéder à l'application locale, résolu en utilisant le flag --add-host pour mapper dynamiquement le domaine cible. L'automatisation est réalisée via l'Automation Framework de ZAP, permettant de définir le périmètre de l'audit et d'exclure des chemins spécifiques pour éviter les faux positifs. Le processus inclut un spider pour explorer l'application et des scans pour détecter les vulnérabilités.
Shelfmark est un outil open-source pour rechercher et télécharger des livres et des audiolivres à partir de multiples sources en un seul endroit. Il offre une interface moderne et intuitive, prenant en charge divers types de sources (sites web populaires, torrents, Usenet, IRC) et des fonctionnalités avancées comme le contournement de Cloudflare et une file d'attente de téléchargement en temps réel. Facile à installer avec Docker, Shelfmark est conçu pour fonctionner de manière autonome ou en complément d'autres outils de gestion de bibliothèque comme Calibre-Web-Automated ou Booklore.
La "Networking Toolbox" est une boîte à outils complète et autonome pour les administrateurs système, proposant plus de 100 utilitaires de réseau. Elle est conçue pour fonctionner hors ligne, est optimisée pour les appareils mobiles et ne dépend d'aucune bibliothèque tierce. Les outils disponibles permettent de convertir, calculer, diagnostiquer et vérifier les configurations de serveurs. Le projet est développé avec Svelte, SvelteKit et TypeScript, et peut être déployé via Docker, des services cloud ou directement depuis le code source. Les contributions sont les bienvenues. Plus d'informations sur le dépôt GitHub : https://github.com/Lissy93/networking-toolbox.
Ce billet de blog explique comment rendre son terminal plus intelligent et productif grâce à des alias, des scripts et des intégrations. L'auteur partage ses astuces pour améliorer l'historique des commandes, l'autocomplétion, et l'utilisation de Docker avec FZF. Il montre également comment automatiser la gestion des versions de Node.js et PHP, rendant le terminal presque magique. Des exemples de code sont fournis pour illustrer chaque amélioration.
Ce billet explique comment configurer Google Jules, une IA, pour automatiser les tâches de QA, sécurité et performance d'un projet Symfony avec Docker. L'auteur, ne pouvant consacrer beaucoup de temps à la maintenance, utilise Jules comme une équipe de support asynchrone. Il décrit le défi de rendre l'IA compatible avec Docker et partage un script Bash qui configure l'environnement pour que Jules puisse interagir avec la stack complexe (Docker, PostgreSQL, Redis, Meilisearch) sans compromettre l'intégrité du projet. Le script gère la détection dynamique du contexte, les permissions Git et Docker, et permet à Jules de piloter le daemon Docker de la machine hôte.
L’article propose une définition claire et structurée des systèmes de build. Un système de build est un outil qui permet de définir et exécuter des transformations de données d’entrée en données de sortie, en mémorisant les résultats via un cache pour éviter de refaire des calculs inutiles. Ces transformations, appelées règles ou étapes, forment un graphe de dépendances. Un build est dit correct si les résultats incrémentaux sont identiques à ceux d’un build complet, et minimal si seules les étapes nécessaires sont réexécutées.
Les systèmes de build peuvent être inter-processus (exécution de commandes externes) ou intra-processus (appels de fonctions internes), avec des mécanismes de suivi des dépendances soit déclaratives (tout est spécifié à l’avance), soit dynamiques (dépendances inférées à l’exécution). Ils peuvent aussi être hermétiques (isolés des dépendances système) ou reproductibles (mêmes résultats dans n’importe quel environnement). L’article explore aussi des concepts comme le cache distant, la détection des rebuilds, et donne des exemples concrets (Make, Bazel, React, Docker, etc.), tout en soulignant les défis comme la gestion des dépendances dynamiques ou la traçabilité des entrées/sorties.
Une lecture utile pour comprendre les enjeux et les nuances des outils qui automatisent la compilation et la génération de projets logiciels.
Ce guide pratique explique comment créer des microservices hexagonaux performants en PHP avec Symfony et gRPC. Il détaille les avantages de gRPC, comme la communication efficace entre microservices grâce à un format binaire compact et le support de HTTP/2 pour le multiplexage et le streaming bidirectionnel. Le tutoriel couvre l'installation de Symfony avec Docker et Roadrunner, la configuration de Docker Compose, et l'implémentation d'un serveur gRPC avec RoadRunner. Il inclut également des étapes pour créer un projet Symfony, installer les dépendances nécessaires, et configurer un conteneur Docker avec PHP et Roadrunner. Enfin, il montre comment exécuter la première application Symfony via Roadrunner et commencer à implémenter un serveur gRPC.
Dans ce tutoriel DomoPi, l’auteur montre comment mettre en place une redondance simple pour un broker MQTT Mosquitto : en utilisant Keepalived pour une IP virtuelle partagée entre deux serveurs (un Mosquitto en Docker comme principal et un Mosquitto natif sur Raspberry Pi comme secondaire). Si le serveur principal tombe, l’IP virtuelle bascule automatiquement vers le secondaire, permettant aux clients MQTT de continuer à fonctionner sans interruption (bien que l’état ne soit pas synchronisé car Mosquitto n’a pas de clustering natif).
Ce tutoriel explique comment intégrer CrowdSec, une solution open source de cybersécurité, avec le reverse proxy Traefik pour détecter et bloquer les attaques web. Il détaille les étapes pour configurer Traefik afin de générer des logs d'accès, installer CrowdSec via Docker, et intégrer le bouncer CrowdSec à Traefik. Le guide aborde également la protection de l'hôte Docker et l'utilisation du module AppSec de CrowdSec comme WAF. Une ressource utile pour renforcer la sécurité des applications web.
Dans cet article, Rémi Verchère partage son expérience de création et de gestion de plusieurs clusters Kubernetes Talos sur Docker pour une démo ArgoCD multi-clusters. Il détaille les étapes de configuration réseau, la création des clusters avec des CIDR dédiés, et les défis rencontrés pour assurer la communication inter-clusters. Des scripts d'automatisation et des commandes talosctl sont fournis pour faciliter le processus. Un guide pratique pour ceux qui souhaitent expérimenter des architectures multi-clusters en local.
Ce tutoriel explique comment créer un registry Docker privé avec Podman et Quadlet, en mode rootless pour plus de sécurité. Après avoir installé Podman et créé un utilisateur dédié, on génère un certificat auto-signé et un fichier d’authentification (htpasswd). Le registry est lancé via un conteneur Docker officiel, puis configuré pour démarrer automatiquement avec un fichier registry.container dans ~/.config/containers/systemd/. Une redirection de port (443 → 5000) est configurée via firewalld, et un nettoyage automatique des fichiers temporaires est mis en place. Pour tester, on pousse une image (hello-world) depuis une machine cliente après avoir configuré l’accès en mode insecure dans /etc/containers/registries.conf. Une solution simple et locale pour héberger ses images conteneurisées.
Exemple de commande clé :
podman run -d --name registry -p 5000:5000 -v ~/podman-registry/data:/var/lib/registry:Z [...]Ce partage explique comment utiliser Symfony 7 et Mercure pour créer une session live réactive sans WebSocket. L'auteur, Jean-Sébastien Christophe, explore l'intégration de Mercure, un protocole de Server-Sent Events (SSE), pour gérer des états de session en temps réel, comme la présence des utilisateurs, sans nécessiter de requêtes répétées ou de boucles côté client. Il détaille la stack technique utilisée (Symfony 7.3, PHP 8.4, Docker, PostgreSQL, MailCatcher) et les avantages de Mercure pour des applications temps réel, tout en prévoyant une future intégration avec FrankenPHP pour optimiser les performances et la sécurité.
Ce billet détaille l’expérience de passage à FrankenPHP en production, comparant l’ancienne stack Nginx/PHP-FPM à une technologie dépassée comme le Minitel. L’auteur explique comment il a déployé FrankenPHP sur un VPS à l’aide d’un Makefile optimisé, en abordant la création d’un Dockerfile de production, l’intégration CI/CD, et une astuce de multiplexing SSH pour éviter les blocages par fail2ban. Une lecture utile pour ceux qui veulent moderniser leur infrastructure PHP avec simplicité et efficacité.
Le billet explique comment FrankenPHP rend obsolètes les configurations traditionnelles utilisant Nginx et PHP-FPM pour les applications PHP. L'auteur partage son retour d'expérience sur le déploiement d'un projet Symfony avec FrankenPHP sur un VPS, mettant en avant sa simplicité et ses performances, même en production. L'article souligne que FrankenPHP offre une alternative moderne, plus légère et efficace, pour les environnements Docker, tout en évitant les problèmes classiques comme les timeouts SSH. Une solution idéale pour ceux qui cherchent à optimiser leur infrastructure PHP.
L’article raconte une expérience douloureuse : l’utilisation du tag latest pour une image Docker a causé une panne en production après qu’une mise à jour silencieuse de l’image de base (PostgreSQL) ait changé la version de collation du système d’exploitation, rendant la base de données incompatible. L’auteur explique que latest n’est pas synonyme de « stable » ou « sûr », mais simplement de « dernière version disponible », ce qui peut varier à tout moment. Il détaille trois raisons d’éviter latest : stabilité (comportement cohérent), reproductibilité (diagnostic et audit facilités), et contrôle des mises à jour (éviter les surprises). La solution ? Toujours spécifier un tag explicite (ex: postgres:15.3-alpine) dans Docker, Docker Compose ou Kubernetes. Un rappel utile : ne jamais laisser le choix de la version à quelqu’un d’autre, surtout en production.
L’article explique comment FrankenPHP a rendu obsolètes les stacks traditionnelles à base de Nginx + PHP-FPM, en offrant une solution plus simple, performante et moderne pour exécuter des applications PHP. L’auteur détaille son passage à une architecture Docker intégrant FrankenPHP (basé sur le serveur web Caddy) et PostgreSQL, mettant en avant plusieurs avantages clés : une isolation complète des services, une parité parfaite entre développement et production, et une expérience développeur optimisée (hot reload, HTTPS local automatique, débogage facilité avec Xdebug). FrankenPHP se distingue par son mode "worker", qui maintient l’application PHP en mémoire, éliminant ainsi les temps de démarrage à chaque requête. Le billet décrit aussi l’utilisation de Docker multi-stage pour générer des images légères et sécurisées, et l’importance d’une configuration adaptée pour le développement (logs détaillés, désactivation du cache) comme pour la production (optimisation des performances). En résumé, FrankenPHP simplifie la stack technique tout en améliorant significativement les performances et la productivité. Une lecture utile pour les développeurs PHP souhaitant moderniser leur environnement.
L’article explique comment mettre en place un système de visioconférence performant dans Nextcloud, en dépassant les limites des solutions traditionnelles comme Talk ou l’intégration de BigBlueButton. Il propose deux méthodes d’installation : un script de déploiement pour un serveur dédié, ou un déploiement en conteneurs Docker (pour le signaling et l’enregistrement), avec des exemples de fichiers docker-compose et de configurations Apache. L’objectif est d’offrir une solution scalable, intégrée à Nextcloud, permettant notamment l’enregistrement de webinaires ou de démonstrations. L’auteur partage aussi des captures d’écran et un exemple concret d’utilisation réussie. Idéal pour ceux qui cherchent à optimiser la visio et l’enregistrement dans leur instance Nextcloud.
L’article explique deux approches pour gérer plusieurs environnements (développement, staging, production) avec Docker : une approche inspirée de Rails, utilisant des Dockerfiles séparés (ex: Dockerfile.dev, Dockerfile.prod), et une approche idiomatique Docker basée sur les multi-stage builds. La première méthode offre une séparation claire, mais peut entraîner de la duplication de code, tandis que la seconde permet de centraliser la configuration dans un seul fichier, réduisant la redondance et facilitant la maintenance, bien qu’elle puisse devenir complexe à mesure que les builds se sophistiquent. L’auteur souligne que le choix dépend de la complexité des environnements et de l’expérience de l’équipe avec Docker.
Ce shaarli explique comment utiliser Podman comme un substitut à Docker, en permettant l'exécution des commandes Docker habituelles avec Podman. L'article détaille l'installation du paquet podman-docker, qui fournit un script docker émulant les commandes Docker, ainsi que la suppression du message d'avertissement via la création du fichier /etc/containers/nodocker. Il aborde aussi la compatibilité avec docker-compose grâce à l'installation de podman-compose, et présente deux solutions pour gérer le démarrage automatique des conteneurs (via Quadlet ou en activant le service podman-restart). L'objectif est de faciliter la transition pour les utilisateurs habitués à Docker, tout en profitant des avantages de Podman, notamment son absence de démon.