Vue normale
- Les joies du code
- Top 10 des phrases les plus redoutées par les développeurs aux repas de fin d'année
Construction ultime de Dynamo de l’impasse: Meilleurs articles et capacités
Dynamo est l’un des principaux initiateurs de Deadlock. Que ce soit pour déclencher des combats ou changer le cours des objectifs, il est toujours le héros idéal à avoir dans une équipe. Bien qu’il soit doué pour contrôler les foules, il peut se sentir moins efficace pour le reste de la partie. Dans ce guide […]
Le post Construction ultime de Dynamo de l’impasse: Meilleurs articles et capacités est apparu en premier sur Moyens I/O.
- Actualités des internautes libres
- Test complet du logiciel de transfert de données iPhone/iPad FoneTrans
Test complet du logiciel de transfert de données iPhone/iPad FoneTrans
L'assistant GitHub Copilot débarque en version gratuite dans Visual Studio Code
- Les joies du code
- Découvrez mon interview et mes anecdotes sur Les Joies du Code dans le podcast Tronche de Tech !
Découvrez mon interview et mes anecdotes sur Les Joies du Code dans le podcast Tronche de Tech !
Regarder une vidéo Youtube dans son terminal sans pub
Un petit article sur comment regarder une vidéo Youtube sans pub dans son terminal avec YT-X.
Sur le blog, un autre lecteur permettant de lire YouTube depuis le terminal a déjà été présenté : https://memo-linux.com/mps-youtube-regarder-youtube-dans-le-terminal/
Description de YT-X
Caractéristiques principales
- Téléchargement polyvalent :
- Téléchargez des vidéos individuelles ou des playlists entières.
- Prend en charge plusieurs formats (audio et vidéo) comme MP4, MKV, MP3, etc.
- Sélectionnez des qualités spécifiques, allant de 360p à 4K, selon vos besoins.
- Extraction audio :
- Extrayez directement l’audio en formats populaires tels que MP3, AAC ou OPUS.
- Gestion des métadonnées
- Ajoutez automatiquement des métadonnées comme le titre, l’artiste ou l’album.
- Idéal pour organiser des bibliothèques multimédia.
- Personnalisation :
- Configurez le chemin de téléchargement, la qualité par défaut, et plus encore via un fichier config.json.
- Support pour l’utilisation de proxies pour contourner des restrictions géographiques.
- Intégration de yt-dlp :
- Bénéficie de la puissance de yt-dlp, un outil performant pour le téléchargement de vidéos.
- Compatible avec une grande variété de plateformes en plus de YouTube.
- Optimisation pour les utilisateurs avancés :
- Options pour le téléchargement en masse via des fichiers d’URL.
- Contrôle total sur les paramètres vidéo et audio grâce aux options de la ligne de commande.
Avantages de YT-X
- Simplicité d’utilisation : une interface en ligne de commande claire et intuitive.
- Flexibilité : prend en charge divers cas d’utilisation, du téléchargement rapide à la gestion avancée.
- Open Source : entièrement gratuit et modifiable pour répondre à vos besoins spécifiques.
Cas d’utilisation courants
- Créer une collection de vidéos ou musiques à regarder/habituer hors ligne.
- Organiser les fichiers téléchargés avec des noms et des métadonnées propres.
- Extraire des bandes sonores pour des projets créatifs ou pour une utilisation personnelle.
- Télécharger du contenu géo-bloqué grâce au support de proxies.
Pré-requis avant installation de YT-X
- Installer les dépendances :
- Sous Ubuntu :
sudo apt install yt-dlp fzf jq curl yt-dlp fzf mpv ffmpeg -y
- Sous Archlinux :
sudo pacman -S yt-dlp fzf jq curl yt-dlp fzf mpv ffmpeg
Installation de YT-X
- Exécuter la commande suivante :
curl -sL "https://raw.githubusercontent.com/Benexl/yt-x/refs/tags/0.3.0/yt-x" -o ~/.local/bin/yt-x && chmod +x ~/.local/bin/yt-x
Utilisation de YT-X
Pour l’exemple, je vais utiliser la chaine Youtube d’Adrian Linuxtricks.
- Lancer yt-x :
yt-x
Ressource
Sécuriser SSH avec pam_faillock
Un mémo sur la mise en place du module de sécurité pam_faillock sur Debian 12. Ce module permet de verrouiller temporairement un compte utilisateur connu du système après plusieurs tentatives de connexion infructueuses via ssh.
Prérequis
- Une machine tournant sous Debian 12 (Bookworm).
- Un accès root ou des privilèges sudo.
- Une compréhension de base des fichiers PAM (Pluggable Authentication Modules).
Étape 1 : Installer les paquets nécessaires
pam_faillock est inclus dans le paquet libpam-modules, qui est installé par défaut sur Debian 12.
Étape 2 : Configurer pam_faillock
- Modifier le fichier PAM de gestion des connexions locales :
Éditer le fichier /etc/pam.d/common-account
:
account required pam_faillock.so
/etc/security/faillock.conf
:
- deny = 3
- unlock_time = 900
- audit
- ignore_users = root
- silent
Étape 3 : Tester la configuration
- Vérifier les logs :
- Les échecs de connexion sont enregistrés dans les journaux système :
sudo journalctl -xe | grep pam_faillock
- Simuler des échecs de connexion :
- Tester plusieurs fois des connexions avec un mauvais mot de passe :
- Vérifier les comptes verrouillés :
- Utilisez la commande suivante pour lister les utilisateurs verrouillés :
sudo faillock
- Pour réinitialiser les tentatives d’échec d’un utilisateur spécifique :
sudo faillock --reset --user utilisateur
- Vérifier les comptes verrouillés :
- Tester plusieurs fois des connexions avec un mauvais mot de passe :
trippy : outil de diagnostique réseaux
Trippy est un outil de diadnostique réseaux sous licence Apache 2 combinant les fonctionnalités de traceroute et de ping dans une interface en mode texte (TUI) afin d’aider les administrateurs systèmes et réseaux.
- Trippy propose plusieurs options personnalisables pour l’analyse réseau :
- Mode interactif avec une carte et des graphiques :
- Trippy affiche un aperçu visuel dans le terminal. Cela inclut les sauts réseau et leurs temps de réponse.
- Personnalisation des paramètres de traçage :
- Définir le nombre de paquets envoyés.
- Ajuster l’intervalle entre les requêtes.
- Statistiques de confidentialité des sauts : il est possible d’anonymiser certaines informations des sauts pour protéger la confidentialité des adresses IP.
- Génération de rapports : Trippy peut exporter des résultats pour analyse ultérieure.
- Mode interactif avec une carte et des graphiques :
Installation de Trippy
- Exemple d’installation de Trippy :
- Ubuntu :
sudo add-apt-repository ppa:fujiapple/trippy sudo apt update && sudo apt install trippy
- ArchLinux :
sudo pacman -S trippy
docker run -it fujiapple/trippy
Utilisation de Trippy
- Commande de base :
- Par exemple, pour tracer la route jusqu’à google.com :
trip google.com
- Changer le protocole utilisé pour le traçage :
Par défaut, Trippy utilise ICMP. Il est possible de lui spécifier d’autres protocoles comme UDP ou TCP :- UDP :
trip --protocol udp google.com
- TCP :
trippy --protocol tcp google.com
- Pour définir le nombre maximal de sauts que Trippy explorera, utiliser –max-flows :
trip --max-flows 15 example.com
trip --protocol tcp --target-port 80 example.com
Documentation complère de trippy
- Pour plus d’informations sur l’outil trippy : https://github.com/fujiapple852/trippy?tab=readme-ov-file#features
Guide de construction de Deadlock Yamato : Top Articles et compétences pour le succès.
Si vous avez suivi ne serait-ce qu’un petit peu Deadlock, vous devez savoir que Yamato est une force meurtrière. Que vous jouiez seul ou en équipe, si vous disposez des bons objets et combos, vous pouvez déchiqueter les ennemis en viande hachée. Dans ce guide de construction Deadlock Yamato, nous expliquons les meilleurs objets et […]
Le post Guide de construction de Deadlock Yamato : Top Articles et compétences pour le succès. est apparu en premier sur Moyens I/O.
proxmox-offline-mirror : créer un miroir local pour Debian et Ubuntu
Un mémo sur comment utiliser la commande proxmox-offline-mirror pour créer un miroir local pour les distributions Debian et Ubuntu.
Pour la création d’un miroir local Pour Proxmox, voir cet article : https://memo-linux.com/proxmox-offline-mirror-creer-un-miroir-local-pour-proxmox/
Créer un miroir local Debian
Pour la création d’un miroir local pour la distribution Debian, rien de compliqué car c’est intégré à la commande proxmox-offline-mirror :
proxmox-offline-mirror setup
- Select Action: dd new mirror entry
- Guided Setup ([yes]): yes
- Select distro to mirror : 4
- Select release : 0 (pour Bookworm)
- Select repository variant :
- 0) Main repository
- 1) Security
- 2) Updates
- 3) Backports
- 4) Debug Information
Dans mon cas, j’ai éxécuté la commande
proxmox-offline-mirror setup
3 fois pour avoir les 3 miroirs : Main repository, Security et Updates. - Enter repository components : main contrib (les dépots non-free c’est à vous de choisir)
- Configure filters for Debian mirror bookworm / main : – (pas de filtres dans mon cas)
- Enter mirror ID :
- debian_bookworm_main
- debian_bookworm_security
- debian_bookworm_updates
- Enter (absolute) base path where mirrored repositories will be stored : /srv/mirrors/debian/ (à adapter)
- Should already mirrored files be re-verified when updating the mirror? : yes
- Should newly written files be written using FSYNC to ensure crash-consistency? : yes
- Pour finir, Select Action : Quit
- Pour automatiser la création et la mise à jour du miroir Debian, voici le script :
nano /usr/local/bin/sync-debian.sh
#!/bin/bash export ALL_PROXY="http://proxyx.local:PORT" mirror_dir="/srv/mirrors/debian" symlink_dir="/srv/mirrors/debian/latest" proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_main' proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_updates' proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_security' if [ $? -eq 0 ]; then for dir in "${mirror_dir}"/*; do if [ -d "$dir" ]; then dir_name=$(basename "$dir") if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then latest_subdir=$(ls -td "$dir"/*/ | head -n 1) if [ -n "$latest_subdir" ]; then latest_subdir_name=$(basename "$latest_subdir") if [ -e "${symlink_dir}/${dir_name}" ]; then rm -f "${symlink_dir}/${dir_name}" fi ln -s "$latest_subdir" "${symlink_dir}/${dir_name}" fi fi fi done echo "Done on ${symlink_dir}." else echo "Error." fi
chmod +x /usr/local/bin/sync-debian.sh
sync-debian.sh
crontab -e
0 2 * * * /usr/local/bin/sync-debian.sh
Créer un miroir local Ubuntu
A la date de publication de l’article, la commande proxmox-offline-mirror setup
n’est pas opérationnelle pour créer un miroir local pour la distribution Ubuntu.
Ici, je choisis la distribution Ubuntu 24.04 LTS Noble.
- Préparation du miroir Ubuntu Noble :
- Création des répertoires pour le miroir :
mkdir -p /srv/mirrors/ubuntu/noble/{ubuntu_noble_main,ubuntu_noble_updates,ubuntu_noble_security,latest}
mkdir -p /srv/mirrors/ubuntu/noble/.pool
- Téléchargement de la clé ubuntu :
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys F6ECB3762474EDA9D21B7022871920D1991BC93C
gpg --export F6ECB3762474EDA9D21B7022871920D1991BC93C | tee /usr/share/keyrings/ubuntu-archive-keyring.gpg > /dev/null
/etc/proxmox-offline-mirror.cfg
à la suite des autres miroirs :nano /etc/proxmox-offline-mirror.cfg
mirror: ubuntu_noble_main architectures amd64 architectures all base-dir /srv/mirrors/ubuntu/noble ignore-errors false key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg repository deb https://fr.archive.ubuntu.com/ubuntu noble main restricted universe multiverse sync true verify true mirror: ubuntu_noble_updates architectures amd64 architectures all base-dir /srv/mirrors/ubuntu/noble ignore-errors false key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg repository deb https://fr.archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse sync true verify true mirror: ubuntu_noble_security architectures amd64 architectures all base-dir /srv/mirrors/ubuntu/noble ignore-errors false key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg repository deb https://fr.archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse sync true verify true
nano /usr/local/bin/sync-ubuntu.sh
#!/bin/bash export ALL_PROXY="http://proxy.local:PORT" mirror_dir="/srv/mirrors/ubuntu/noble" symlink_dir="/srv/mirrors/ubuntu/noble/latest" proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_main' proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_updates' proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_security' if [ $? -eq 0 ]; then for dir in "${mirror_dir}"/*; do if [ -d "$dir" ]; then dir_name=$(basename "$dir") if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then latest_subdir=$(ls -td "$dir"/*/ | head -n 1) if [ -n "$latest_subdir" ]; then latest_subdir_name=$(basename "$latest_subdir") if [ -e "${symlink_dir}/${dir_name}" ]; then rm -f "${symlink_dir}/${dir_name}" fi ln -s "$latest_subdir" "${symlink_dir}/${dir_name}" fi fi fi done echo "Done on ${symlink_dir}." else echo "Error." fi
chmod +x /usr/local/bin/sync-ubuntu.sh
sync-ubuntu.sh
Pour information, sous Ubuntu server 24.04 LTS les dépôts ne se renseignent plus dans le fichier :
/etc/apt/sources.list
.
cat /etc/apt/sources.list
# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources
- Modifier les URLs des dépôts :(dans mon cas le nom de domaine de mon serveur web est mirrors.local) :
nano /etc/apt/sources.list.d/ubuntu.sources
Types: deb URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_main Suites: noble Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_security Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_updates Suites: noble-updates Components: main universe restricted multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
apt update
Hit:1 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_main noble InRelease Hit:2 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_security noble-security InRelease Hit:3 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_updates noble-updates InRelease Reading package lists... Done Building dependency tree... Done Reading state information... Done 89 packages can be upgraded. Run 'apt list --upgradable' to see them
crontab -e
0 3 * * * /usr/local/bin/sync-ubuntu.sh
Idée cadeau développeur : offrez le cadeau de Noël idéal à un programmeur
Insolite : vous aimez le Power Metal et Java ? Vous allez adorer cette chanson !
JetBrains déploie sa dernière release majeure de l’année pour ses IDE
proxmox-offline-mirror : créer un miroir local pour Proxmox
Un mémo sur comment créer un serveur miroir local pour Proxmox avec proxmox-offline-mirror sous Debian.
Cet article fait suite à https://memo-linux.com/creer-un-serveur-miroir-local-sous-debian.
Installer proxmox-offline-mirror sur Debian via apt
- Ajouter le dépôt suivant :
echo "deb http://download.proxmox.com/debian/pbs-client bookworm main" > /etc/apt/sources.list.d/pbs-client.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update
apt install proxmox-offline-mirror
Configurer proxmox-offline-mirror pour le dépôt Proxmox
- Exécuter la commande :
proxmox-offline-mirror setup
- Pour ajouter un nouveau miroir, choisir 0 :
- Pour être guidé, répondre « yes » :
- Choisir le dépôt Proxmox ve :
- Choisir la version Bookworm :
- Choisir la variante « No-Subscription repository » :
- Pour la question suivante « Should missing Debian mirrors for the selected product be auto-added » ayant déjà mon propre miroir local Debian, je répond non :
- Pour l’ID laisser pve_bookworm_no_subscription :
- Entrer le chemin complet du répertoire pour le dépôt, dans mon cas /srv/mirrors/proxmox/ :
- Revérifier ou pas les dépôts une fois mis à jour, dans mon cas je répond : yes
- En cas de plantage, utiliser ou pas FSYNC, je répond : yes
- Retour au menu, choisir 3 pour quitter :
- Une fois que la configuration est terminée, éxécuter la commande :
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'pve_bookworm_no_subscription'
- Si l’accès au dépôt se fait via un proxy, exporter la variable d’environnement PROXY_ALL avant l’éxécution de la synchro:
export PROXY_ALL="http://proxy.domaine.tld:PORT/"
Ajouter un nouveau dépôt
Ici le dépôt ajouté sera celui de Ceph.
- Exécuter la commande :
proxmox-offline-mirror setup
Une fois le dépôt ajouté, créer le snapshot du miroir :
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ceph_reef_bookworm'
Configurer le serveur web
Pour rappel, dans mon cas le serveur web est déjà installé. J’ajoute simplement une directive location dans mon fichiers de conf.
Ce qui donne :
nano /etc/nginx/sites-available/mirrors
server { listen 80; server_name mirrors.local; root /srv/mirrors; index index.html; location /debian/ { alias /srv/mirrors/debian/; autoindex on; } location /ubuntu/ { alias /srv/mirrors/ubuntu/; autoindex on; } location /proxmox/ { alias /srv/mirrors/proxmox/; autoindex on; } }
systemctl reload nginx
Créer un chemin statique pour les dépôts Proxmox et Ceph
De base, la commande proxmox-offline-mirror créé pour chaque dépôt un snapshot daté du jour.
Un problèmes majeur :
- Sur chaque noeud Proxmox faudra changer le dépôt comme suit :
deb http://mirrors.local/proxmox/pve_bookworm_no_subscription/2024-12-10T10:20:21Z bookworm pve-no-subscription
Pour obtenir qu’un seul référentiel pour le dépôt :
- Créer le dossier :
mkdir -p /srv/mirrors/proxmox/latest
nano /usr/local/bin/sync-proxmox.sh
#!/bin/bash export ALL_PROXY="http://proxy.local:PORT" mirror_dir="/srv/mirrors/proxmox" symlink_dir="/srv/mirrors/proxmox/latest" proxmox-offline-mirror mirror snapshot create-all if [ $? -eq 0 ]; then for dir in "${mirror_dir}"/*; do if [ -d "$dir" ]; then dir_name=$(basename "$dir") if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then latest_subdir=$(ls -td "$dir"/*/ | head -n 1) if [ -n "$latest_subdir" ]; then latest_subdir_name=$(basename "$latest_subdir") if [ -e "${symlink_dir}/${dir_name}" ]; then rm -f "${symlink_dir}/${dir_name}" fi ln -s "$latest_subdir" "${symlink_dir}/${dir_name}" fi fi fi done echo "Done on ${symlink_dir}." else echo "Error." fi
Créer une tache cron pour synchroniser le miroir de Proxmox
- Créer une tache cron :
crontab -e
0 4 * * * /usr/local/bin/sync-proxmox.sh
Changer les dépôts sur les noeuds Proxmox
- Editer vos fichiers sources.list et changer les url par celle de votre miroir local :
deb http://mirrors.local/debian bookworm main contrib deb http://mirrors.local/debian bookworm-updates main contrib deb http://mirrors.local/debian bookworm-security main contrib deb http://mirrors.local/proxmox/latest/pve_bookworm_no_subscription bookworm pve-no-subscription deb http://mirrors.local/proxmox/latest/ceph_reef_bookworm no-subscription
apt update
Nettoyage des snapshots Proxmox et Ceph
- Créer le script :
nano /url/local/bin/clean_proxmox_snapshots.sh
#!/bin/bash # Variables MIRRORS=( "/srv/mirrors/proxmox/pve_bookworm_no_subscription" "/srv/mirrors/proxmox/ceph_reef_bookworm" ) MAX_AGE=7 # Durée limite (en jours) # Nettoyage pour chaque miroir for MIRROR_PATH in "${MIRRORS[@]}"; do echo "Traitement du miroir : $MIRROR_PATH" # Nettoyage des snapshots anciens SNAPSHOTS=$(proxmox-offline-mirror mirror snapshot list --mirror "$MIRROR_PATH" --format json | \ jq -r ".[] | select(.age > $MAX_AGE) | .name") if [[ -z "$SNAPSHOTS" ]]; then echo "Aucun snapshot à supprimer pour le miroir : $MIRROR_PATH" else echo "Suppression des snapshots suivants pour $MIRROR_PATH :" echo "$SNAPSHOTS" for SNAPSHOT in $SNAPSHOTS; do proxmox-offline-mirror mirror snapshot remove --mirror "$MIRROR_PATH" --snapshot "$SNAPSHOT" echo "Snapshot supprimé : $SNAPSHOT" done # Garbage collection echo "Exécution de garbage collection (GC) pour le miroir : $MIRROR_PATH" proxmox-offline-mirror mirror gc --mirror "$MIRROR_PATH" echo "Garbage collection terminée pour $MIRROR_PATH." fi echo "-------------------------------------------" done echo "Nettoyage terminé pour tous les miroirs."
chmod +x /url/local/bin/clean_proxmox_snapshots.sh
crontabe -e
0 0 * * * /usr/local/bin/clean_proxmox_snapshots.sh
Ressources
Belle remise pour ce disque dur monstrueux de 8 To pour le Black Friday
- Les joies du code
- Black Friday de la boutique Les Joies du Code : -30% sur le 2ème t-shirt, et de nouveaux designs !
Black Friday de la boutique Les Joies du Code : -30% sur le 2ème t-shirt, et de nouveaux designs !
Black Friday 2024 : 60% de réduction sur les cours de la plateforme Vue School
Black Friday 2024 : le casque audio Sennheiser HD 599 au prix le plus bas !
Créer un serveur miroir local sous Debian
Un mémo sur comment créer un serveur miroir local sous Debian.
Pour ce tuto, je ne vais pas utiliser apt-mirroir ni debmirror mais simplement la commande lftp et comme serveur web Nginx.
De plus, mon miroir local sera dédié pour les distributions et en versions stables de Debian, Ubuntu.
Alors pourquoi lftp et non rsync ? car tout simplemement le proxy local n’accepte que les ports 80, 443 et 21 en sortie.
Préparer l’environnement
- Mettre à jour le système :
apt update && apt full-upgrade -y
apt install lftp nginx -y
mkdir -p /srv/mirrors/{debian,ubuntu}
chown -R www-data:www-data /srv/mirrors chmod -R 755 /srv/mirrors
Synchroniser les miroirs Debian et Ubuntu
- Miroir Debian :
- Créer le script suivant pour synchroniser Debian :
nano /usr/local/bin/sync-debian.sh
- Le contenu du script :
#!/bin/bash # Variables BASE_URL_DEBIAN="http://deb.debian.org/debian" BASE_URL_SECURITY="https://security.debian.org/debian-security" LOCAL_DIR="/srv/mirrors/debian" SECTIONS=("bookworm" "bookworm-updates" "bookworm-security") # Proxy configuration export http_proxy="http://monproxy.local:8080" export https_proxy="http://monproxy.local:8080:" # Options pour lftp LFTP_OPTS="mirror --parallel=4 --verbose=2 --delete" # Boucle sur les sections principales (bookworm, bookworm-updates) for SECTION in "${SECTIONS[@]}"; do if [ "$SECTION" == "bookworm-security" ]; then # Pour le dépôt de sécurité, utiliser une URL différente echo "Synchronisation de $SECTION..." lftp -c "$LFTP_OPTS $BASE_URL_SECURITY/dists/bookworm-security $LOCAL_DIR/dists/bookworm-security" else # Pour les autres sections, utiliser l'URL Debian principale echo "Synchronisation de $SECTION..." lftp -c "$LFTP_OPTS $BASE_URL_DEBIAN/dists/$SECTION $LOCAL_DIR/dists/$SECTION" fi done echo "Synchronisation terminée."
chmod +x /usr/local/bin/sync-debian.sh
- Créer le script suivant pour synchroniser Ubuntu :
nano /usr/local/bin/sync-ubuntu.sh
#!/bin/bash # Variables BASE_URL_UBUNTU="http://archive.ubuntu.com/ubuntu" BASE_URL_UBUNTU_SECURITY="http://security.ubuntu.com/ubuntu" LOCAL_DIR="/srv/mirrors/ubuntu" SECTIONS=("noble" "noble-updates" "noble-security") # Proxy configuration export http_proxy="http://monproxy.local:8080" export https_proxy="http://monproxy.local:8080" # Options pour lftp LFTP_OPTS="mirror --parallel=4 --verbose=2 --delete" # Boucle sur les sections principales (noble, noble-updates) for SECTION in "${SECTIONS[@]}"; do if [ "$SECTION" == "noble-security" ]; then # Pour le dépôt de sécurité, utiliser une URL différente echo "Synchronisation de $SECTION..." lftp -c "$LFTP_OPTS $BASE_URL_UBUNTU_SECURITY/dists/noble-security $LOCAL_DIR/dists/noble-security" else # Pour les autres sections, utiliser l'URL Ubuntu principale echo "Synchronisation de $SECTION..." lftp -c "$LFTP_OPTS $BASE_URL_UBUNTU/dists/$SECTION $LOCAL_DIR/dists/$SECTION" fi done echo "Synchronisation terminée."
chmod +x /usr/local/bin/sync-ubuntu.sh
Planifier la synchronisation automatique
crontab -e
0 2 * * * /usr/local/bin/sync-debian.sh 0 3 * * * /usr/local/bin/sync-ubuntu.sh
Configurer le serveur web
nano /etc/nginx/sites-available/mirrors
server { listen 80; server_name mirrors.local; root /srv/mirrors; index index.html; location /debian/ { alias /srv/mirrors/debian/; autoindex on; } location /ubuntu/ { alias /srv/mirrors/ubuntu/; autoindex on; } }
ln -s /etc/nginx/sites-available/mirrors /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Modification des fichiers sources.list des clients
Il ne reste que la modification des fichiers sources.list
sur l’ensemble des serveurs.
Pour ce faire, modifier l’url par l’IP du serveur miroir local pour tous les dépôts.
Afin de déployer les modifcations de chaque serveur, je vous propose d’utiliser Ansible :
ansible-playbook -i inventory.yml update_sources_grouped.yml
Les playbooks Ansible sont disponible ici -> https://github.com/freddL/playbook_add_mirror_local/
- Les joies du code
- Black Friday : la plateforme Codecademy propose ses abonnements annuels à moitié prix