PC1 - EndeavourOS chiffré + KDE Plasma
EndeavourOS est une distribution GNU/Linux basée sur Arch Linux. LVM sur LUKS permet une flexibilité de partitionnement en utilisant LVM à l’intérieur d’une partition chiffrée LUKS.
PC1
Description matériel mini tour PC1
EndeavourOS USB Live
Création d’une clé USB EndeavourOS bootable
Dans un terminal linux
Télécharger le dernier fichier iSO : https://endeavouros.com/latest-release/
EndeavourOS_Mercury-Neo-2025.03.19.iso
Vérifier checksum
1
sha512sum -c EndeavourOS_Mercury-Neo-2025.03.19.iso.sha512sum
Résultat de la commande ci dessus après quelques minutes
EndeavourOS_Mercury-Neo-2025.03.19.iso: Réussi
Créer la clé bootable
Pour savoir sur quel périphérique, connecter la clé sur un port USB d’un ordinateur et lancer la commande sudo dmesg ou lsblk
Dans le cas présent , le périphérique USV est /dev/sdc
1
sudo dd if=EndeavourOS_Mercury-Neo-2025.03.19.iso of=/dev/sdc bs=4M
Brancher le réseau filaire sur le DELL
Démarrage avec la clé USB insérée dans le Mini tour PC1 et appui sur F8 pour un accès au menu
Choisir UEFI specific storage
Vous arrivez sur la page de sélection

Valider le choix par défaut
Changer le language: Frenchh fr-FR
Ouvrir “system settings” , “Keyboard”
- Layouts -> Enable, +Add
- French French OK
- Remove English (us)
- Apply
- Ouvrir un terminal dans le live endeavour
Pour un accès sur la machine via SSH depuis un poste distant
Lancer le service :sudo systemctl start sshd
Créer un mot de passe à liveuser :sudo passwd liveuser
Relever l’adresse ip de la machine :ip a
Arrêter le parefeu:sudo systemctl stop firewalld
Partionner un disque
en mode su
1
sudo -s
Le disque : lsblk
1
nvme0n1 259:0 0 931,5G 0 disk
On partitionne un disque en 2 avec gdisk
- Partition 1 : 512M EFI (code ef00) système de fichier FAT32
- Partition 2 : 600G LVM (code 8e00) système de fichier EXT4
- Partition restante non définie
Zapper le disque,
(Attention Ceci effacera de manière irréversible toutes les données de votre disque, veuillez sauvegarder toutes les données importantes) :
1
sgdisk --zap-all /dev/nvme0n1
Partitionnement du disque NVME 1To GPT + LVM
1
sgdisk --clear --new=1:0:+512MiB --typecode=1:ef00 --new=2:0:+600G --typecode=2:8300 /dev/nvme0n1
Format la partition EFI
1
2
3
4
5
mkfs.fat -F32 /dev/nvme0n1p1
# installer efi
mkdir /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
bootctl --path=/mnt/efi install
Redémarrer l’ordinateur sur le bios F2
Ordre de démarrage “UEFI OS (FIKWOT FN501 Pro 2TB)” en premier
Valider et redémarrer sur la clé Eos Live
Installer EndeavourOS
Démarrer installateur
Installation “en ligne”
Choix Plasma KDE
Pas de firewall
Printing support
systemd-boot
Chiffrer le disque
Utilisateur yann
Ordi pc1
Mot passe utilisateur identique admin
A la fin de l’installation
Valider “Redémarrer maintenant” et “Terminé”
EndeavourOS
Premier démarrage
Au message “Please enter passphrase for disk endeavouros…”, saisir la phrase mot de passe pour déchiffrer le disque
Sur la page de connexion utilisateur yann, saisir le mot de passe
Mise à jour Système
Au choix
A-Ligne de commande dans un terminal
1
yay -Syu
Etablir une liaison temporaire SSH
Pour un accès sur la machine via SSH depuis un poste distant
Lancer et activer le service : sudo systemctl enable sshd --now
Relever l’adresse ip de la machine : ip a 192.168.0.20 dans notre cas
Se connecter depuis un poste distant ssh yann@192.168.0.20
Utilisateur droits sudo
Modifier sudoers pour accès sudo sans mot de passe à l’utilisateur yann
1
2
su # mot de passe root identique utilisateur
echo "yann ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-yann
Bluetooth
Activer Bluetooth
Bluetooth n’est pas actif par défaut, en raison de plusieurs risques de sécurité et pour éviter une consommation d’énergie inutile.
Les packages nécessaires sont installés, mais ils sont désactivés.
Pour pouvoir utiliser Bluetooth, vous devez démarrer le service ou l’activer si vous avez besoin que Bluetooth soit exécuté à chaque démarrage :
1
sudo systemctl enable bluetooth.service --now # à activer par défaut, s'exécutera après chaque démarrage.
Souris Bluetooth Pebble Mouse 2 M350s
Basculez entre 3 de vos dispositifs d’une simple pression sur le bouton Easy-Switch.
Position 1 pour le portable DELL latitude e6230

Pour effacer une configuration existante de la souris bluetooth , garder enfoncer le bouton Easy-Switch jusqu’au clignotement rapide de la led
Pour ajouter la souris bluetooth au portable DELL, clic droit sur l’icône bluetooth de la barre des tâches, Périphériques puis Rechercher et lorsque l’appareil est détecté , il faut l’appairer

Ecouteurs bluetooth

Soundcore Liberty Air 2
Utiliser le gestionnaire bluetooth et la recherche

Lorsque le périphérique est détecté, il faut l’appairer, clic-droit –> Appairer
Après appairage

Pour que le périphèrique fonctionne correctement, il est IMPERATIF de redémarrer la machine
Après redémarrage, il faut séléctionner le profil audio

Clé matérielle FIDO2
Le déverrouillage se fait par saisie d’une phrase mot de passe, on peut ajouter des clés FIDO2 pour un déchiffrement sans mot de passe (Using FIDO2 keys to unlock LUKS on EndeavourOS)
Installer librairie libfido2 pour la prise en charge des clés Yubico et SoloKeys
1
sudo pacman -S libfido2
Enroler clé USB FIDO2 YubiKey 5 NFC

Vérifier que la YubiKey est insérée dans un port USB
Lister et enroler la yubikey
1
sudo systemd-cryptenroll --fido2-device=list
1
2
PATH MANUFACTURER PRODUCT
/dev/hidraw4 Yubico YubiKey OTP+FIDO+CCID
Vérifier que le disque chiffré est /dev/nvme0n1p2 : lsblk
1
2
3
4
5
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 1,9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /efi
└─nvme0n1p2 259:2 0 800G 0 part
└─luks-3b7c9f34-3d34-481e-9cb8-424164d1a125
Vérifier que le chiffrement est luks2 : sudo cryptsetup luksDump /dev/nvme0n1p2
1
2
3
LUKS header information
Version: 2
[...]
Enroler la clé pour le déverrouillage du disque chiffré /dev/sda2
1
sudo systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2
1
2
3
4
5
6
7
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: •••••••••••••••••••••
Requested to lock with PIN, but FIDO2 device /dev/hidraw6 does not support it, disabling.
Initializing FIDO2 credential on security token.
👆 (Hint: This might require confirmation of user presence on security token.)
Generating secret key on FIDO2 security token.
👆 In order to allow secret key generation, please confirm presence on security token.
New FIDO2 token enrolled as key slot 1.
Le Y de la clé se met à clignoter , il suffit de poser son doigt sur l’emplacement du Y pour le déverrouillage
Si vous avez plusieurs clés répéter l’opération Enroler la clé pour le déverrouillage du disque chiffré /dev/nvme0n1p22
Prise en charge FIDO2 (crypttab)
Le fichier /etc/crypttab contient la liste des périphériques à déverrouiller automatiquement.
Chaque ligne du fichier crypttab est de la forme :
<target name> <source device> <key file> <options>
<target name>: Nom à donner au mappage (/dev/mapper/name), dans le cas présent “secret”<source device>: l’identifiant du container luks, sous la forme UUID=<key file>: chemin absolu vers le ficher de phrase de passe. Si le déverrouillage doit s’effectuer par saisie d’un mot de passe, indiquer “none”<options>: liste d’options séparées par des virgules, par exemple luks, discard pour un chiffrage luks et autoriser l’utilisation de la commane fstrim ou discard au niveau du container. L’option keyscript= donne la possibilité d’exécuter un script ou une commande avec le chemin vers le fichier de passe de phrase (paramètre password précédent) fourni comme argument.
/etc/crypttab avant modification
1
2
# <name> <device> <password> <options>
luks-08d4dd05-387f-43e1-9f1f-5d33ea1e5b3b UUID=08d4dd05-387f-43e1-9f1f-5d33ea1e5b3b none luks
Configurer /etc/crypttab pour la prise en charge FIDO2
1
sudo nano /etc/crypttab
Modifiez votre /etc/crypttab pour ajouter fido2-device=auto à chaque appareil crypté que vous avez enrôlé.
La quatrième colonne luks est remplacée par luks,fido2-device=auto
1
2
# <name> <device> <password> <options>
luks-08d4dd05-387f-43e1-9f1f-5d33ea1e5b3b UUID=08d4dd05-387f-43e1-9f1f-5d33ea1e5b3b none luks,fido2-device=auto
Sauvegarder et quitter.
Réinitialiser le noyau
1
sudo reinstall-kernels
Passphrase de recouvrement (OPTION)
Les jetons et puces de sécurité FIDO2, PKCS#11 et TPM2 s’associent bien avec les clés de recouvrement : puisque vous n’avez plus besoin de taper votre mot de passe tous les jours, il est logique de vous en débarrasser et d’enregistrer à la place une clé de recouvrement à forte entropie que vous imprimez ou scannez hors écran et conservez dans un endroit physique sûr.
Voici comment procéder :
1
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p2
1
2
3
4
5
6
7
8
9
10
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: ***********
A secret recovery key has been generated for this volume:
🔐 gvbtrbbe-evkfdjrk-rkegejif-ldiuhgkh-nerngeti-hvhndvte-hhbvbibf-ccnfvifi-rugeregh
Please save this secret recovery key at a secure location. It may be used to
regain access to the volume if the other configured access credentials have
been lost or forgotten. The recovery key may be entered in place of a password
whenever authentication is requested.
New recovery key enrolled as key slot 3.
Cette opération génère une clé, l’enregistre dans le volume LUKS2, l’affiche à l’écran et génère un code QR que vous pouvez scanner en dehors de l’écran si vous le souhaitez.
La clé possède la plus grande entropie et peut être saisie partout où vous pouvez saisir une phrase d’authentification.
C’est pourquoi il n’est pas nécessaire de modifier le fichier /etc/crypttab pour que la clé de récupération fonctionne.
Outil systemd-cryptenroll
systemd-cryptenroll
systemd-cryptenroll est un outil permettant d’enregistrer des jetons de sécurité matériels et des périphériques dans un volume crypté LUKS2, qui peuvent ensuite être utilisés pour déverrouiller le volume pendant le démarrage.
systemd-cryptenroll permet d’enregistrer des cartes à puce, des jetons FIDO2 et des puces de sécurité Trusted Platform Module dans des périphériques LUKS, ainsi que des phrases de passe ordinaires. Ces périphériques sont ensuite déverrouillés par systemd-cryptsetup@.service à l’aide des jetons enregistrés.
systemd-cryptenroll peut lister les keyslots d’un périphérique LUKS, de manière similaire à cryptsetup luksDump, mais dans un format plus convivial.
1
sudo systemd-cryptenroll /dev/nvme0n1p2
Résultat pour disque déchiffrable avec une phrase et 3 clés FIDO2
1
2
3
4
5
6
SLOT TYPE
0 password
1 fido2
2 fido2
3 fido2
4 recovery
Bash - Historique ligne de commande
Ajoutez la recherche d’historique de la ligne de commande au terminal
Vous trouverez ici quelques paramètres de base et des conseils sur la personnalisation de votre invite bash et le comportement du shell.
~/.bashrcFichier de configuration par utilisateur, appliqué après/etc/bash.bashrc~/.bash_profile- Par utilisateur, après
/etc/profile - Si ce fichier n’existe pas,
~/.bash_loginet~/.profilesont cochés dans cet ordre. Le fichier squelette/etc/skel/.bash_profileet aussi~/.bashrc
- Par utilisateur, après
~/.bash_logoutPar-utilisateur, après la sortie d’un shell de connexion./etc/profileSources paramètres d’application dans/etc/profile.d/*.shet/etc/bash.bashrc
La plus demandée est la fonction de recherche d’historique ajoutée en haut des touches haut/bas:
1
sudo nano /etc/bash.bashrc
1
2
bind '"\e[A":history-search-backward' # history with arrow up key
bind '"\e[B":history-search-forward' # history with arrow down key
Prise encompte immédiate
1
source /etc/bash.bashrc
Créer les dossiers et liens
1
2
3
4
5
6
7
8
9
sudo mkdir -p /srv/media
ln -s /srv/media $HOME/media
sudo chown $USER:$USER -R /srv/media
mkdir -p $HOME/{.ssh,.keepassx,Private}
mkdir -p /srv/media/Documents/Dossiers-Locaux-Thunderbird
mkdir -p /srv/media/Notes
mkdir -p $HOME/Private/.borg
sudo mkdir -p /mnt/ssd
sudo chown $USER:$USER -R /mnt/ssd
Disques UUID
lsblk
1
2
3
4
5
6
7
8
9
10
11
12
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 447,1G 0 disk
└─sda1 8:1 0 447,1G 0 part
sdb 8:16 0 476,9G 0 disk
└─sdb1 8:17 0 476,9G 0 part
└─ssd--512-virtuel 253:0 0 476,9G 0 lvm
sdc 8:32 0 1,8T 0 disk
└─sdc1 8:33 0 1,8T 0 part
nvme0n1 259:0 0 1,9T 0 disk
├─nvme0n1p1 259:1 0 2G 0 part /efi
└─nvme0n1p2 259:2 0 1,9T 0 part
└─luks-096f48ba-e1d3-44fd-8983-87f15e83a545 253:1 0 1,9T 0 crypt /
Les UUID
1
2
3
4
5
6
7
/dev/mapper/luks-096f48ba-e1d3-44fd-8983-87f15e83a545: LABEL="endeavouros" UUID="4e782e2e-72ac-48f6-abe1-5ad6582ba939" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme0n1p2: UUID="096f48ba-e1d3-44fd-8983-87f15e83a545" TYPE="crypto_LUKS" PARTLABEL="endeavouros" PARTUUID="494dbe31-6f79-473f-bd18-43998bc94970"
/dev/nvme0n1p1: UUID="6C0B-746B" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="8c206046-395c-46cf-b80b-61c457d65391"
/dev/sdb1: UUID="AYko64-7Ysg-IK1P-2hCq-9MUo-VjQl-4NOuWY" TYPE="LVM2_member" PARTUUID="19dd6163-01"
/dev/mapper/ssd--512-virtuel: UUID="84bc1aa9-23ac-4530-b861-bc33171b7b42" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sdc1: UUID="a72df15f-b40a-4694-b544-859f656fed6c" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="11e35f6b-8255-482c-ae2c-84c2e04ef595"
/dev/sda1: UUID="e33c1e26-5c19-4647-980b-98db4d92591b" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="c153121f-615f-4fd5-aad7-e83501798e1f"
Virtuel
Créer le dossier
1
2
3
4
5
# virtuel
sudo mkdir /srv/virtuel
sudo chown $USER:$USER -R /srv/virtuel
sudo ln -s /srv/virtuel /virtuel
sudo ln -s /srv/virtuel $HOME/virtuel
Modifier /etc/fstab
1
2
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /srv/virtuel ext4 defaults 0 2
Recharger et monter
1
2
sudo systemctl daemon-reload
sudo mount -a
NFS sharenfs
nfs-utils installé par défaut
1
2
3
4
5
sudo mkdir -p /mnt/sharenfs
sudo chown $USER:$USER -R /mnt/sharenfs
ln -s /mnt/sharenfs $HOME/sharenfs
ln -s /mnt/sharenfs/scripts $HOME/scripts
ln -s /mnt/sharenfs $HOME/sharenfs
Ajout au fichier /etc/fstab
1
2
# Serveur debian 12 cwwk 192.168.0.205
192.168.0.205:/sharenfs /mnt/sharenfs nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192,retry=0 0 0
retry=nLe nombre de minutes que la commandemountréessaye une opération de montage NFS dans l’avant-plan sol ou fond avant d’abandonner. Si cette option n’est pas spécifiée, la valeur par défaut pour Les montages de premier plan sont de 2 minutes, et la valeur par défaut pour les supports d’arrière-plan est de 10000 minutes. Si une valeur de zéro est spécifiée, la commandemountsort immédiatement après le premier échec.
Recharger et monter
1
2
sudo systemctl daemon-reload
sudo mount -a
Partage disque freebox
Partage disque externe USB sur Freebox
FreeBox
HDD Mobile 2To connecté en USB sur la freebox
Nom de partage : FreeUSB2To + EXT4 + vérification après formatage
Partage windows activé : yannfreebox + mot de passe
PC1
Partage linux samba : sudo pacman -S cifs-utils Installé par défaut
Point de montage : sudo mkdir -p /mnt/FreeUSB2To
Lien : sudo ln -s /mnt/FreeUSB2To $HOME/FreeUSB2To
Credential : /root/.smbcredentials avec 2 lignes
username=XXXXXX
password=XXXXXX
Droits
1
2
sudo chown -R root:root /root/.smbcredentials
sudo chmod -R 600 /root/.smbcredentials
Les fichiers systèmes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# /etc/systemd/system/mnt-FreeUSB2To.mount
[Unit]
Description=cifs mount script
Requires=network-online.target
After=network-online.service
[Mount]
What=//192.168.0.254/FreeUSB2To
Where=/mnt/FreeUSB2To
Options=credentials=/root/.smbcredentials,rw,uid=1000,gid=1000,vers=3.0
Type=cifs
[Install]
WantedBy=multi-user.target
# /etc/systemd/system/mnt-FreeUSB2To.automount
[Unit]
Description=cifs mount script
Requires=network-online.target
After=network-online.service
[Automount]
Where=/mnt/FreeUSB2To
TimeoutIdleSec=10
[Install]
WantedBy=multi-user.target
Activation
1
2
sudo systemctl daemon-reload
sudo systemctl enable mnt-FreeUSB2To.automount --now
/etc/fstab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=6C0B-746B /efi vfat fmask=0137,dmask=0027 0 2
/dev/mapper/luks-096f48ba-e1d3-44fd-8983-87f15e83a545 / ext4 noatime 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /srv/virtuel ext4 defaults 0 2
# Serveur debian 12 cwwk 192.168.0.205
192.168.0.205:/sharenfs /mnt/sharenfs nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192,retry=0 0 0
# /dev/sda1
UUID=e33c1e26-5c19-4647-980b-98db4d92591b /mnt/ssd auto defaults,nofail,x-systemd.automount 0 2
Plymouth
Plymouth - Processus de démarrage graphique
Installation
1
yay -S plymouth plymouth-theme-endeavouros
Modifier image du thème endeavouros
sudo cp sharenfs/e6230/Fonds/wallpaper.png /usr/share/plymouth/themes/endeavouros/
Ajout splash au fichier /etc/kernel/cmdline
nvme_load=YES nowatchdog splash rw rd.luks.uuid=c3f9cc28-3bb6...
Prise en compte
1
sudo reinstall-kernels
Vérifier les liens
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[yann@pc ~]$ ls -l /home/yann/ |grep ^l
lrwxrwxrwx 1 yann yann 15 22 oct. 21:00 FreeUSB2To -> /mnt/FreeUSB2To
lrwxrwxrwx 1 yann yann 10 22 oct. 23:46 media -> /srv/media
lrwxrwxrwx 1 yann yann 21 22 oct. 21:03 scripts -> /mnt/sharenfs/scripts
lrwxrwxrwx 1 yann yann 13 22 oct. 17:58 sharenfs -> /mnt/sharenfs
lrwxrwxrwx 1 yann yann 12 23 oct. 07:56 virtuel -> /srv/virtuel
[yann@pc ~]$ ls -l / |grep ^l
lrwxrwxrwx 1 root root 7 12 oct. 18:21 bin -> usr/bin
lrwxrwxrwx 1 root root 25 23 oct. 00:23 files -> /srv/media/statique/files
lrwxrwxrwx 1 root root 26 22 oct. 17:37 images -> /srv/media/statique/images
lrwxrwxrwx 1 root root 7 12 oct. 18:21 lib -> usr/lib
lrwxrwxrwx 1 root root 7 12 oct. 18:21 lib64 -> usr/lib
lrwxrwxrwx 1 root root 7 12 oct. 18:21 sbin -> usr/bin
lrwxrwxrwx 1 root root 12 22 oct. 17:55 virtuel -> /srv/virtuel
Redémarrer la machine
Applications
Client Nextcloud
Installation client nextcloud
1
yay -S nextcloud-client
Démarrer le client nextcloud , après avoir renseigné l’url https://cloud.rnmkcy.eu ,login et mot de passe pour la connexion
Trousseau de clé avec mot de passe idem connexion utilisateur

Paramétrage
- Menu → Lancer Client de synchronisation nextcloud
- Adresse du serveur : https://cloud.xoyaz.xyz
Se connecter avec un mot de passe application nextcloud “Synchro DELL e6230” - Nom d’utilisateur : yann
- Mot de passe : xxxxx

Puis saisir l’adresse : https://cloud.rnmkcy.eu
Le nagigateur s’ouvre sur l’adresse saisie



- Sauter les dossiers à synchroniser, Ignorer la configuration des dossiers

- Paramètres nextcloud

- Saisir les différents dossiers à synhroniser

Keepassxc (Mot de passe)
On utilise une clé matérielle pour déverrouiller la base de mot de passe
La clé matériel utilisée pour la connexion doit être insérée
Installer le gestionnaire de mot de passe keepassxc
1
yay -S keepassxc
Ajouter aux favoris “KeepassXC” et lancer l’application → Ouvrir une base de données existante
Base de données –> Ouvrir une base de données (afficher les fichiers cachés) : ~/.keepassx/yannick_xc.kdbx –> Ouvrir

Minicom
Installation
1
yay -S minicom
Paramétrage de l’application terminale minicom
1
sudo minicom -s
Seul les paramètres à modifier sont cités
Configuration du port série

A - Port série : /dev/ttyUSB0
F - Contrôle de flux matériel : Non

Echap
Enregistrer config. sous dfl

Sortir de Minicom
Flameshot (copie écran)
Installation
1
yay -S flameshot
Fichier exporté de configuration
1
2
3
4
5
6
7
8
9
[General]
contrastOpacity=188
historyConfirmationToDelete=false
savePath=/home/yann/media/statique/images
showDesktopNotification=false
showHelp=false
showSidePanelButton=false
showStartupLaunchMessage=false
startupLaunch=true
Configuration du lanceur d’application pour wayland double écran

Problème: Impossible de saisir du texte en annotation
Solution: faire les annotations texte en utilisant gnview
Lancer l’application Flameshot et l’icône est visible dans la barre des tâches

Paramétrage de flameshot, clic droit sur icône , Configuration

Paramétrage de flameshot

Le chemin: /home/yann/media/statique/images
scrpy émulation android
Utilise adb et le port USB
1
yay -S scrcpy
Les icônes pour lancer l’application sont générés à l’installation
Retext
Installation
1
yay -S retext
Clic-droit sur la barre de titre Retext , Actions supplémentaires –> Configurer les paramètres spéciaux des applications
Pour ouvrir l’application sur l’écran de gauche (1) avec une position et taille définies

Retext pour les fichiers markdown
Fichier desktop: me.mitya57.ReText.desktop
Dans la rubrique [Added Associations] du fichier ~/.config/mimeapps.list
Ajouter la ligne suivante
1
text/markdown=me.mitya57.ReText.desktop;
Pas de fonction recherche par “CTRL + F”
Utilisation du “filtre” avec “CTRL + i”

Paquets supplémentaires
Lancer la commande
1
2
# qrencode zbar android-tools , installés par défaut
yay -S gedit jq gimp libreoffice-fresh-fr figlet tmux calibre bluefish terminator filezilla borg yt-dlp xclip nmap tigervnc xournalpp tree openbsd-netcat
Spécifique
1
2
3
4
5
6
7
8
9
10
11
12
13
# Outils réseau
yay -S net-tools
# Wake-on-LAN (WoL) est un standard des réseaux Ethernet
# qui permet à un ordinateur éteint d'être démarré à distance.
yay -S wakeonlan
# imagemagick installé par défaut
yay -S freetube-bin
# Signal
yay -S signal-desktop
# Multimédia audio
yay -S strawberry
# Navigation privée
yay -S tor-browser-bin
Navigateur Librewolf
Si sauvegarde
1
yay -S librewolf-bin
Autoriser l’accès dans l’application keepassxc
Thunderbird
Lancer thunderbird à l’ouverture de session xfce
Paramètres → Session et démarrage → Démarrage automatique d’application

Installer
1
yay -S thunderbird-i18n-fr
Ajouter thunderbird aux favoris et lancer
bashrc alias
Ajouter les alias au fichier $HOME/.bash_aliases
Etendre Réduire
alias aide='xdg-open https://static.rnmkcy.eu/aide-jekyll-text-theme.html#autres-styles'
alias androidauto='sh $HOME/scripts/androidauto.sh'
alias audio='yt-dlp --extract-audio --audio-format m4a --audio-quality 0 --output "~/Musique/%(title)s.%(ext)s"'
alias audiomp3='yt-dlp --extract-audio --audio-format mp3 --audio-quality 0 --output "~/Musique/%(title)s.%(ext)s"'
alias borglist='$HOME/scripts/borglist.sh'
alias calibreraz='adb -s CNBT80D20191101145 shell -x rm /sdcard/Document/metadata.calibre'
alias certok='$HOME/scripts/ssl-cert-check'
alias chirpy='$HOME/scripts/chirpy.sh'
alias cockpit='sh $HOME/scripts/cockpit.sh'
alias compress='$HOME/scripts/compress'
alias dnsleak='$HOME/scripts/dnsleaktest.py'
alias etat='$HOME/scripts/etat_des_lieux_PC1.sh > /mnt/sharenfs/rnmkcy/site/etat_pc1.txt'
alias findh='cat $HOME/scripts/findhelp.txt'
alias homer="ssh -o ProxyCommand='ssh -W %h:%p -p 55205 -i $HOME/.ssh/yick-ed25519 yick@192.168.0.205' userone@192.168.100.40 -p 22 -i $HOME/.ssh/vm-debian01 '\''/home/userone/homer/remoh.py'"
alias iceyanwg="sh /mnt/sharenfs/pc1/scripts/wgiceyan.sh"
alias ipleak='curl https://ipv4.ipleak.net/json/'
alias l='ls -lav --ignore=.?*'
alias ll='ls -lav --ignore=..'
alias ls='ls --color=auto'
alias mediasync='$HOME/scripts/sav-yann-media.sh'
alias mediajour='/usr/bin/journalctl --no-pager -t sauvegardes --since today'
alias nmapl='echo "sudo nmap -T4 -sP 192.168.0.0/24" && sudo nmap -T4 -sP 192.168.0.0/24'
alias nmap10='echo "sudo nmap -T4 -sP 192.168.10.0/24" && sudo nmap -T4 -sP 192.168.10.0/24'
alias odt2html='$HOME/scripts/_odt2html.sh'
#alias odtprivate='$HOME/scripts/_odt2html+index_private'
alias orphelin='sudo pacman -Rsn $(pacman -Qdtq)'
alias otp='$HOME/scripts/generer-code-2fa-vers-presse-papier-toutes-les-30s.sh'
alias ovh='$HOME/scripts/ovh_api/ApiOvh/bin/python $HOME/scripts/ovh_api/domain.py xoyize.xyz cinay.eu xoyaz.xyz ouestline.xyz rnmkcy.eu yanfi.net icevps.xyz xoyize.net iceyan.xyz'
alias png2lqip='$HOME/scripts/png2lqip.sh'
alias rename='$HOME/scripts/remplacer-les-espaces-accents-dans-une-expression.sh'
alias service='systemctl list-units --type=service --state=running'
alias sshm='$HOME/scripts/ssh-manager.sh'
alias ssl='$HOME/scripts/ssl-cert-check -f $HOME/scripts/ssldomains'
alias status='$HOME/scripts/status.sh'
alias storage='echo -e "df -h" |sftp -P 23 -i ~/.ssh/bx11-yann-ed25519 u326239@u326239.your-storagebox.de'
alias synchro='journalctl --user -u media_yannstatic_site.service --no-pager --since today'
alias toc='$HOME/scripts/toc/toc.sh'
alias tocplus='$HOME/scripts/toc/tocplus.sh'
alias tracesgpx="/srv/media/osm-new/osm_python/OsmScripts/bin/python /srv/media/osm-new/osm_python/OsmScripts/tracesgpxnew.py /srv/media/osm-new/file /run/media/yann/GARMIN/Garmin/GPX; sh /srv/media/osm-new/osm-new-synchro.sh"
alias traduc='/usr/local/bin/trans'
alias ttrss="bash $HOME/scripts/articles_remarquables_ttrss"
alias vimaide="firefox --new-window $HOME/sharenfs/rnmkcy/racine/memo-vim.html </dev/null &>/dev/null &"
alias vncasus='sh $HOME/scripts/vncasus.sh'
alias vncdell='sh $HOME/scripts/vncdell.sh'
alias vncmarina='sh $HOME/scripts/vncmarina.sh'
alias wgiceyan='sh $HOME/scripts/wgiceyan.sh'
alias x96='adb connect 192.168.0.22:5555'
#alias youtube='yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --output "~/Vidéos/%(title)s.%(ext)s" --ignore-errors'
alias youtube='yt-dlp -f bv*+ba --output "~/Vidéos/%(title)s.%(ext)s"'Recharger le fichier pour appliquer les modifications
1
source ~/.bash_aliases
Pour afficher les alias dans un terminal
1
alias
ReText configuration
Restauration cp /mnt/usb/yann/.config/ReText project/ReText.conf ~/.config/ReText project/ReText.conf
Fichier de configuration ~/.config/ReText project/ReText.conf
1
2
3
4
5
6
7
[General]
appStyleSheet=/home/yann/.config/ReText project/retext.qss
defaultPreviewState=normal-preview
recentFileList=
styleSheet=/home/yann/.config/ReText project/retext.css
useWebEngine=true
useWebKit=true
Les fichiers retext.css et retext.qss
Etendre Réduire retext.css
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 15px;
line-height: 1.3;
color: #f6e6cc;
width: 700px;
margin: auto;
/*background: #27221a;*/
background: #121212;
position: relative;
padding: 0 30px;
}
body>:first-child
{
margin-top:0!important;
}
img {
max-width: 100%;
}
table {
width: 100%;
border-collapse: collapse;
}
th {
background-color: rgba(0, 0, 0, 0.3);
}
table, th, td {
padding: 5px;
border: 1px solid rgba(0, 0, 0, 0.3);
border-radius: 0.4em;
-moz-border-radius: 0.4em;
-webkit-border-radius: 0.4em;
}
tr:nth-child(even) {
background-color: rgba(0, 0, 0, 0.3);
}
p, ul, ol, dl, table, pre {
margin-bottom: 1em;
}
ul {
margin-left: 20px;
}
a {
text-decoration: none;
cursor: pointer;
color: #ba832c;
font-weight: bold;
}
a:focus {
outline: 1px dotted;
}
a:visited {}
a:hover, a:focus {
color: #d3a459;
text-decoration: none;
}
a *, button * {
cursor: pointer;
}
hr {
display: none;
}
small {
font-size: 90%;
}
input, select, button, textarea, option {
font-family: Arial, "Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, sans-serif;
font-size: 100%;
}
button, label, select, option, input[type=submit] {
cursor: pointer;
}
sup {
font-size: 80%;
line-height: 1;
vertical-align: super;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1.1;
font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", serif;
}
h1 {
font-size: 24pt;
margin: 1em 0 0.1em;
}
h2 {
font-size: 22pt;
}
h3 {
font-size: 20pt;
}
h4 {
font-size: 18pt;
}
h5 {
font-size: 16pt;
}
h6 {
font-size: 14pt;
}
h1 a, h1 a:hover {
color: #d7af72;
font-weight: normal;
text-decoration: none;
}
::selection {
background: #745626;
}
::-moz-selection {
background: #745626;
}
pre {
background: #1B1812;
color: #fff;
padding: 8px 10px;
overflow-x: hidden;
}
pre code {
font-size: 10pt;
}Fichier retext.qss
1
2
3
4
QTextEdit {
color: black;
background-color: white;
}
Tmux configuration
Fichier de configuration tmux
Etendre Réduire fichier de configuration "~/.tmux.conf"
#Configuration de tmux
#Origine : http://denisrosenkranz.com
#Yannick juin 2017
# Copier/Coller par la souris se fait avec la touche "Shift" appuyée
##################################
#Changements des raccourcis claviers
##################################
#On change Control +b par Control +x
#set -g prefix C-x
#unbind C-b
#bind C-x send-prefix
#On utilise control + flèches pour naviguer entre les terminaux
bind-key -n C-right next
bind-key -n C-left prev
#on utilise alt + flèches our naviguer entre les panels
bind-key -n M-left select-pane -L
bind-key -n M-right select-pane -R
bind-key -n M-up select-pane -U
bind-key -n M-down select-pane -D
#On change les raccourcis pour faire du split vertical et horizontal
#On utilise la touche "|" (pipe) pour faire un split vertical
bind | split-window -h
#Et la touche "-" pour faire un split horizontal
bind - split-window -v
##################################
#Changements pratiques
##################################
#On permet l'utilisation de la souris pour changer de terminal et de panel
set -g mouse on
# Sélection zone par clic gauche souris (texte sélectionné sur fond jaune)
# Après relachement du clic , le texte sélectionné est copié dans le presse-papier
# Le fond jaune disparaît
set-option -s set-clipboard off
# For emacs copy mode bindings
# Il faut installer l'utilitaire 'xclip' (sudo pacman -S xclip)
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
#Les fenêtres commencent par 1 et non par 0
set -g base-index 1
##################################
#Changements visuels
##################################
#On met les panneaux non actif en gris
#set -g pane-border-fg colour244
#set -g pane-border-bg default
#On met le panneau actif en rouge
#set -g pane-active-border-fg colour124
#set -g pane-active-border-bg default
#On met la barre de status en gris
set -g status-fg colour235
set -g status-bg colour250
#set -g status-attr dim
# On surligne les fenêtres actives dans la barre de status en gris foncés
#set-window-option -g window-status-current-fg colour15
#set-window-option -g window-status-current-bg colour0Synchro serveur calibre
Dossier “BiblioCalibre”
Le but est de synchroniser le dossier /srv/media/BiblioCalibre avec le(s) serveur(s) web distant(s)
Avec les unités de chemin, vous pouvez surveiller les fichiers et les répertoires pour certains événements. Si un événement spécifique se produit, une unité de service est exécutée, et elle porte généralement le même nom que l’unité de chemin
Nous allons surveiller dans le dossier /srv/media/BiblioCalibre/ toute modification du fichier metadata.db qui entrainera l’exécution d’un script
Dans le répertoire systemd utilisateur nous créons une unité de cheminement media_BiblioCalibre_site.path
1
nano ~/.config/systemd/user/media_BiblioCalibre_site.path
1
2
3
4
5
6
7
8
9
[Unit]
Description=Surveiller metadata.db pour les changements
[Path]
PathChanged=/srv/media/BiblioCalibre/metadata.db
Unit=media_BiblioCalibre_site.service
[Install]
WantedBy=default.target
Dans la section [Path], PathChanged= indique le chemin absolu du fichier à surveiller, tandis que Unit= indique l’unité de service à exécuter si le fichier change. Cette unité (media_BiblioCalibre_site.path) doit être lancée lorsque le système est en mode multi-utilisateur.
Ensuite, nous créons l’unité de service correspondante, media_BiblioCalibre_site.service, dans le répertoire ~/.config/systemd/user/
Si le fichier metadata.db change (c’est-à-dire qu’il est à la fois écrit et fermé), l’unité de service suivante sera appelée pour exécuter le script spécifié :
1
nano ~/.config/systemd/user/media_BiblioCalibre_site.service
1
2
3
4
5
6
7
8
[Unit]
Description="Exécute le script si metadata.db a été modifié."
[Service]
ExecStart=/mnt/sharenfs/scripts/media_BiblioCalibre_site.sh
[Install]
WantedBy=default.target
Le script media_BiblioCalibre_site.sh lance une synchronisation locale distante via rsync ssh
Etendre Réduire media_BiblioCalibre_site.sh
#!/bin/bash
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Modification mode rsync suivant serveur distant
#
# Chaque modification du fichier metadata.db dans le dossier local /srv/media/BiblioCalibre
# déclenche une synchronisation du dossier local avec le dossier distant '/sharenfs/multimedia/eBook/BiblioCalibre'
# des serveurs VPS Yunohost
# le dossier local est également sauvegardé dans le dossier 'backup/datayan/static' de la boîte de stockage
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Fonction pour tester si le serveur est présent
# Host=$1 et Port=$2
# Réponse $?=0 -> OK $?=1 -> NOK
host_ok () {
nc -4 -d -z -w 1 $1 $2 &> /dev/null
}
synchro () {
# Synchronisation locale distante du dossier _site
host_ok $SERVER $PORT
if [[ $? == 0 ]]
then
echo 'rsync -avz --progress --stats --human-readable --delete -e "ssh -p '$PORT' -i '$PRIVKEY'" '$REPLOC' '$USERDIS':'$REPDIS'/eBook/'
rsync -avz --progress --stats --human-readable --delete --rsync-path="$RSYNCMOD" -e "ssh -p $PORT -i $PRIVKEY" $REPLOC $USERDIS:$REPDIS/eBook/ > /dev/null
# Analyse résultat de la commande rsync
if [ ! $? -eq 0 ]; then
#echo "Synchro $REPLOC avec $SERVER -> OK" | systemd-cat -t BiblioCalibre -p info
#echo "Synchro $REPLOC avec $SERVER -> OK"
#else
echo "Synchro $REPLOC avec $SERVER -> ERREUR" | systemd-cat -t BiblioCalibre -p emerg
#echo "Synchro $REPLOC avec $SERVER -> ERREUR"
fi
else
echo "Site $SERVER port $PORT Inaccessible !" | systemd-cat -t BiblioCalibre -p emerg
#echo "Site $SERVER port $PORT Inaccessible !"
fi
}
#*******************************************************************
#
# DEPART SCRIPT
#
#*******************************************************************
# Tester la présence du fichier des serveurs distants
if [ ! -f /home/yann/scripts/serveurs.csv ]; then
echo "Fichier serveurs.csv inexistant!" | systemd-cat -t BiblioCalibre -p emerg
exit 1
fi
# Mesure temps exécution
begin=$(date +"%s")
echo "***DEPART*** Exécution script $0"
echo "***DEPART*** Exécution script $0" | systemd-cat -t BiblioCalibre -p info
#echo "Exécution script $0"
# Dossier local
REPLOC="/srv/media/BiblioCalibre"
# Synchro serveurs
while IFS="," read -r SERVER REPDIS USERDIS PORT PRIVKEY RSYNCMOD LOCAL
do
#echo " $SERVER $REPDIS $USERDIS $PORT $PRIVKEY $RSYNCMOD $LOCAL"
if [[ "$SERVER" = "rnmkcy.eu" ]]; then
synchro
echo "ssh $USERDIS -p $PORT -i $PRIVKEY 'sudo systemctl restart calibreweb'"
ssh $USERDIS -p $PORT -i $PRIVKEY 'sudo systemctl restart calibreweb'
fi
done < <(tail -n +2 /home/yann/scripts/serveurs.csv)
# Calcul et affichage temps exécution
termin=$(date +"%s")
difftimelps=$(($termin-$begin))
echo "***FIN*** $0 exécuté en $(($difftimelps / 60)) mn $(($difftimelps % 60)) s" | systemd-cat -t BiblioCalibre -p info
echo "***FIN*** $0 exécuté en $(($difftimelps / 60)) mn $(($difftimelps % 60)) s"
exit 0Activer et lancer
1
systemctl --user enable media_BiblioCalibre_site.path --now
Voir le fichier journal
1
journalctl --user -f -u media_BiblioCalibre_site.service
1
2
3
4
5
6
7
8
9
juin 06 09:39:32 yann-pc1 systemd[1537]: Started "Exécute le script si metadata.db a été modifié.".
juin 06 09:39:32 yann-pc1 media_BiblioCalibre_site.sh[11100]: ***DEPART*** Exécution script /home/yann/scripts/media_BiblioCalibre_site.sh
juin 06 09:39:32 yann-pc1 media_BiblioCalibre_site.sh[11100]: rsync -avz --progress --stats --human-readable --delete -e "ssh -p 55215 -i /home/yann/.ssh/lenovo-ed25519" /srv/media/BiblioCalibre leno@192.168.0.215:/sharenfs/multimedia/Divers/
juin 06 09:39:33 yann-pc1 media_BiblioCalibre_site.sh[11100]: ***FIN*** /home/yann/scripts/media_BiblioCalibre_site.sh exécuté en 0 mn 1 s
juin 06 09:44:40 yann-pc1 systemd[1537]: Started "Exécute le script si metadata.db a été modifié.".
juin 06 09:44:40 yann-pc1 media_BiblioCalibre_site.sh[11278]: ***DEPART*** Exécution script /home/yann/scripts/media_BiblioCalibre_site.sh
juin 06 09:44:40 yann-pc1 media_BiblioCalibre_site.sh[11278]: rsync -avz --progress --stats --human-readable --delete -e "ssh -p 55215 -i /home/yann/.ssh/lenovo-ed25519" /srv/media/BiblioCalibre leno@192.168.0.215:/sharenfs/multimedia/Divers/
juin 06 09:44:41 yann-pc1 media_BiblioCalibre_site.sh[11278]: ssh leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519 'sudo systemctl restart calibreweb'
juin 06 09:44:42 yann-pc1 media_BiblioCalibre_site.sh[11278]: ***FIN*** /home/yann/scripts/media_BiblioCalibre_site.sh exécuté en 0 mn 2 s
Générateur site statique chirpy
Ensemble d’applications basé sur ruby et jekyll qui permet la génération de site statique à partir de fichiers markdown
Ruby jekyll
Ruby jekyll yannstatic - générateur site statique
1
yay -S ruby ruby-erb
Évitez d’installer les paquets RubyGems (appelés gemmes) en tant qu’utilisateur root. Au Lieu De Cela, Configurez un répertoire d’installation de gemme pour votre compte utilisateur. Les éléments suivants Les commandes ajouteront des variables d’environnement à votre ~/.bashrc Fichier à configurer le chemin d’installation gemme:
1
2
3
4
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Installez Jekyll et Bundler:
1
gem install jekyll bundler
C’est ça ! Vous êtes prêt à commencer à utiliser Jekyll.
Les versions installées
1
2
3
4
5
$ ruby -v && gem -v && bundle -v && jekyll -v
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
3.7.2
Bundler version 2.7.2
jekyll 4.4.1
Chirpy
Ajouter un path pour bundle et jekyll
1
2
echo 'export PATH="$HOME/.local/share/gem/ruby/3.4.0/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Se positionner dans le dossier
1
cd ~/media/chirpy
Le fichier _config.yml
(Afficher/Cacher) _config.yml
# The Site Configuration
# Import the theme
theme: jekyll-theme-chirpy
# The language of the webpage › http://www.lingoes.net/en/translator/langcode.htm
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
# otherwise, the layout language will use the default value of 'en'.
lang: fr-FR
# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker
timezone: Europe/Paris
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
# ↓ --------------------------
title: Yann # the main title
tagline: Un thème Jekyll axé sur le texte # it will display as the subtitle
description: >- # used by seo meta and the atom feed
Un thème Jekyll minimal, réactif et riche en fonctionnalités pour la rédaction technique.
# Fill in the protocol & hostname for your site.
# E.g. 'https://username.github.io', note that it does not end with a '/'.
url: "https://chirpy.rnmkcy.eu"
github:
username: github_username # change to your GitHub username
twitter:
username: twitter_username # change to your Twitter username
social:
# Change to your full name.
# It will be displayed as the default author of the posts and the copyright owner in the Footer
name: Yann
email: static@rnmkcy.eu # change to your email address
links:
# The first element serves as the copyright owner's link
# - https://twitter.com/username # change to your Twitter homepage
# - https://github.com/username # change to your GitHub homepage
# Uncomment below to add more social links
# - https://www.facebook.com/username
# - https://www.linkedin.com/in/username
# Site Verification Settings
webmaster_verifications:
google: # fill in your Google verification code
bing: # fill in your Bing verification code
alexa: # fill in your Alexa verification code
yandex: # fill in your Yandex verification code
baidu: # fill in your Baidu verification code
facebook: # fill in your Facebook verification code
# ↑ --------------------------
# The end of `jekyll-seo-tag` settings
# Web Analytics Settings
analytics:
google:
id: # fill in your Google Analytics ID
goatcounter:
id: # fill in your GoatCounter ID
umami:
id: # fill in your Umami ID
domain: # fill in your Umami domain
matomo:
id: # fill in your Matomo ID
domain: # fill in your Matomo domain
cloudflare:
id: # fill in your Cloudflare Web Analytics token
fathom:
id: # fill in your Fathom Site ID
# Page views settings
pageviews:
provider: # now only supports 'goatcounter'
# Prefer color scheme setting.
#
# Note: Keep empty will follow the system prefer color by default,
# and there will be a toggle to switch the theme between dark and light
# on the bottom left of the sidebar.
#
# Available options:
#
# light — Use the light color scheme
# dark — Use the dark color scheme
#
theme_mode: dark # [light | dark]
# The CDN endpoint for media resources.
# Notice that once it is assigned, the CDN url
# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/'
#
# e.g. 'https://cdn.com'
cdn:
# the avatar on sidebar, support local or CORS resources
avatar: /assets/img/favicons/favicon-96x96.png
# The URL of the site-wide social preview image used in SEO `og:image` meta tag.
# It can be overridden by a customized `page.image` in front matter.
social_preview_image: # string, local or CORS resources
# boolean type, the global switch for TOC in posts.
toc: true
comments:
# Global switch for the post-comment system. Keeping it empty means disabled.
provider: # [disqus | utterances | giscus]
# The provider options are as follows:
disqus:
shortname: # fill with the Disqus shortname. › https://help.disqus.com/en/articles/1717111-what-s-a-shortname
# utterances settings › https://utteranc.es/
utterances:
repo: # <gh-username>/<repo>
issue_term: # < url | pathname | title | ...>
# Giscus options › https://giscus.app
giscus:
repo: # <gh-username>/<repo>
repo_id:
category:
category_id:
mapping: # optional, default to 'pathname'
strict: # optional, default to '0'
input_position: # optional, default to 'bottom'
lang: # optional, default to the value of `site.lang`
reactions_enabled: # optional, default to the value of `1`
# Self-hosted static assets, optional › https://github.com/cotes2020/chirpy-static-assets
assets:
self_host:
enabled: # boolean, keep empty means false
# specify the Jekyll environment, empty means both
# only works if `assets.self_host.enabled` is 'true'
env: # [development | production]
pwa:
enabled: true # The option for PWA feature (installable)
cache:
enabled: true # The option for PWA offline cache
# Paths defined here will be excluded from the PWA cache.
# Usually its value is the `baseurl` of another website that
# shares the same domain name as the current website.
deny_paths:
# - "/example" # URLs match `<SITE_URL>/example/*` will not be cached by the PWA
paginate: 10
# The base URL of your site
baseurl: ""
# ------------ The following options are not recommended to be modified ------------------
kramdown:
footnote_backlink: "↩︎"
syntax_highlighter: rouge
syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options
css_class: highlight
# default_lang: console
span:
line_numbers: false
block:
line_numbers: true
start_line: 1
collections:
tabs:
output: true
sort_by: order
defaults:
- scope:
path: "" # An empty string here means all files in the project
type: posts
values:
layout: post
comments: true # Enable comments in posts.
toc: true # Display TOC column in posts.
# DO NOT modify the following parameter unless you are confident enough
# to update the code of all other post links in this project.
permalink: /posts/:title/
- scope:
path: _drafts
values:
comments: false
- scope:
path: ""
type: tabs # see `site.collections`
values:
layout: page
#permalink: /:title/
permalink: /:title/
sass:
style: compressed
compress_html:
clippings: all
comments: all
endings: all
profile: false
blanklines: false
ignore:
envs: [development]
exclude:
- "*.gem"
- "*.gemspec"
- docs
- tools
- README.md
- Chirpy_theme_fr.md
- LICENSE
- purgecss.js
- rollup.config.js
- "package*.json"
# enabled: [categories, tags]
jekyll-archives:
enabled: [categories, tags]
layouts:
category: category
tag: tag
permalinks:
tag: /tags/:name/
category: /categories/:name/
plugins:
- jemojiLe fichier Gemfile $HOME/media/chirpy/Gemfile
1
2
3
4
5
6
7
8
9
10
11
12
13
# frozen_string_literal: true
source "https://rubygems.org"
gemspec
gem "html-proofer", "~> 5.0.10", group: :test
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
gem "wdm", "~> 0.2.0"
gem 'jemoji'
Supprimer , si existant, le fichier Gemfile.lock
Bundle lit le fichier Gemfile
1
bundle # Patientez ...
1
2
Bundle complete! 5 Gemfile dependencies, 64 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Info sur jekyll et créer un lien
1
bundle info jekyll
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
* jekyll (4.4.1)
Summary: A simple, blog aware, static site generator.
Homepage: https://jekyllrb.com
Source Code: https://github.com/jekyll/jekyll
Changelog: https://github.com/jekyll/jekyll/releases
Bug Tracker: https://github.com/jekyll/jekyll/issues
Path: /home/yann/.local/share/gem/ruby/3.4.0/gems/jekyll-4.4.1
Reverse Dependencies:
jekyll-archives (2.3.0) depends on jekyll (>= 3.6, < 5.0)
jekyll-include-cache (0.2.1) depends on jekyll (>= 3.7, < 5.0)
jekyll-redirect-from (0.16.0) depends on jekyll (>= 3.3, < 5.0)
jekyll-seo-tag (2.8.0) depends on jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0) depends on jekyll (>= 3.7, < 5.0)
jekyll-theme-chirpy (7.2.4) depends on jekyll (~> 4.3)
jemoji (0.13.0) depends on jekyll (>= 3.0, < 5.0)
Création des liens avec les dossiers files, images et _posts pour le générateur de site
1
2
3
ln -s /srv/media/statique/images /srv/media/chirpy/images
ln -s /srv/media/statique/files /srv/media/chirpy/files
ln -s /srv/media/statique/_posts /srv/media/chirpy/_posts
Création des liens pour la rédaction des documents markdown avec “ReText”
1
2
sudo ln -s /srv/media/statique/images /images
sudo ln -s /srv/media/statique/files /files
Génération dossier “chirpy”
Par défaut jekyll build génère le dossier _site
Destination: /home/yann/sharenfs/rnmkcy/chirpy
1
2
cd ~/media/chirpy
bundle exec jekyll build --destination /home/yann/sharenfs/rnmkcy/chirpy
1
2
3
4
5
6
7
8
Configuration file: /srv/media/chirpy/_config.yml
Theme Config file: /srv/media/chirpy/_config.yml
Source: /srv/media/chirpy
Destination: /home/yann/sharenfs/rnmkcy/chirpy
Incremental build: disabled. Enable with --incremental
Generating...
done in 129.034 seconds.
Auto-regeneration: disabled. Use --watch to enable.
Service chirpy
On veut générer un dossier nommé '_site'
PATH Jekyll : which bundle → /home/yann/.local/share/gem/ruby/3.3.0/bin/bundle
Pour lancer le serveur chirpy au démarrage, utilisation d’un service systemd utilisateur
Les variables environnement, générer le fichier
1
env > /srv/media/chirpy/.env_file
Création d’un service utilisateur “chirpy” sous systemd
1
2
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/chirpy.service
Contenu du fichier chirpy.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=service chirpy
[Service]
EnvironmentFile=/srv/media/chirpy/.env_file
WorkingDirectory=/srv/media/chirpy
ExecStart=/home/yann/.local/share/gem/ruby/3.4.0/bin/bundle exec jekyll build --incremental --watch --destination /home/yann/sharenfs/rnmkcy/chirpy
[Install]
WantedBy=default.target
Lancer le service chirpy :
1
2
3
systemctl --user daemon-reload
# lancement et activation
systemctl --user enable chirpy --now
Vérifier
1
systemctl --user status chirpy
dire à systemd que l’instance d’un utilisateur soit tout le temps présente, du boot au shutdown, ce qui permet d’avoir des processus (services) utilisateurs qui tournent sans avoir de session ouverte.
1
sudo loginctl enable-linger $USER
Pour observer le fonctionnement du service chirpy depuis la machine virtuelle debian
1
journalctl -f --user-unit chirpy.service
ATTENTION: Option
--incrementalne regénère pas la rubrique Récemment mis à jour
Pour une mise à jour systématique il faut supprimer l’option--incrementalavec une incidence non négligeable sur le temps de construction (x10) du dossier_site
Surveillance dossier “chirpy”
Le but est de synchroniser le dossier ~/sharenfs/rnmkcy/chirpy avec le(s) serveur(s) web distant(s)
A chaque création, modification ou suppression d’un POST mardown le sous-dossier _site/ est reconstruit (jekyll build)
Avec les unités de chemin, vous pouvez surveiller les fichiers et les répertoires pour certains événements. Si un événement spécifique se produit, une unité de service est exécutée, et elle porte généralement le même nom que l’unité de chemin
Nous allons surveiller dans le dossier /home/yann/sharenfs/rnmkcy/chirpy/ toute modification du fichier sitemap.xml qui entrainera l’exécution d’un script
Dans le répertoire systemd utilisateur nous créons une unité de cheminement media_chirpy_site.path
1
nano ~/.config/systemd/user/media_chirpy_site.path
1
2
3
4
5
6
7
8
9
[Unit]
Description=Surveiller sitemap.xml pour les changements
[Path]
PathChanged=/home/yann/sharenfs/rnmkcy/chirpy/sitemap.xml
Unit=media_chirpy_site.service
[Install]
WantedBy=default.target
Dans la section [Path], PathChanged= indique le chemin absolu du fichier à surveiller, tandis que Unit= indique l’unité de service à exécuter si le fichier change. Cette unité (media_chirpy_site.path) doit être lancée lorsque le système est en mode multi-utilisateur.
Ensuite, nous créons l’unité de service correspondante, media_chirpy_site.service, dans le répertoire ~/.config/systemd/user/
Si le fichier sitemap.xml change (c’est-à-dire qu’il est à la fois écrit et fermé), l’unité de service suivante sera appelée pour exécuter le script spécifié :
1
nano ~/.config/systemd/user/media_chirpy_site.service
1
2
3
4
5
[Unit]
Description="Exécute le script si site.xml a été modifié."
[Service]
ExecStart=/home/yann/scripts/media_chirpy_site.sh
Le script /home/yann/scripts/media_chirpy_site.sh lance une synchronisation locale distante via rsync ssh
Etendre Réduire media_chirpy_site.sh
#!/bin/bash
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Chaque modification du fichier site.xml dans le dossier local /home/yann/sharenfs/rnmkcy/chirpy/
# déclenche une synchronisation du dossier local avec le dossier distant '/home/yunohost.multimedia/share/Divers/_site'
# des serveurs VPS Yunohost
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Fonction pour tester si le serveur est présent
# Host=$1 et Port=$2
# Réponse $?=0 -> OK $?=1 -> NOK
host_ok () {
nc -4 -d -z -w 1 $1 $2 &> /dev/null
}
synchro () {
# Synchronisation locale distante du dossier _site
host_ok $SERVER $PORT
if [[ $? == 0 ]]
then
echo 'rsync -avz --progress --stats --human-readable --delete -e "ssh -p '$PORT' -i '$PRIVKEY'" '$REPLOC' '$USERDIS':'$REPDIS'/Divers/'
rsync -avz --progress --stats --human-readable --delete --rsync-path="$RSYNCMOD" -e "ssh -p $PORT -i $PRIVKEY" $REPLOC $USERDIS:$REPDIS/Divers/ > /dev/null
# Analyse résultat de la commande rsync
if [ ! $? -eq 0 ]; then
#echo "Synchro $REPLOC avec $SERVER -> OK" | systemd-cat -t chirpy -p info
#echo "Synchro $REPLOC avec $SERVER -> OK"
#else
echo "Synchro $REPLOC avec $SERVER -> ERREUR" | systemd-cat -t chirpy -p emerg
#echo "Synchro $REPLOC avec $SERVER -> ERREUR"
fi
else
echo "Site $SERVER port $PORT Inaccessible !" | systemd-cat -t chirpy -p emerg
#echo "Site $SERVER port $PORT Inaccessible !"
fi
}
#*******************************************************************
#
# DEPART SCRIPT
#
#*******************************************************************
# Tester la présence du fichier
if [ ! -f /home/yann/scripts/media_chirpy_site.csv ]; then
echo "Fichier media_chirpy_site.csv inexistant!" | systemd-cat -t chirpy -p emerg
exit 1
fi
# Mesure temps exécution
begin=$(date +"%s")
echo "***DEPART*** Exécution script $0"
echo "***DEPART*** Exécution script $0" | systemd-cat -t chirpy -p info
#echo "Exécution script $0"
# Dossier local
REPLOC="/home/yann/sharenfs/rnmkcy/chirpy"
# Synchro serveurs
while IFS="," read -r SERVER REPDIS USERDIS PORT PRIVKEY RSYNCMOD LOCAL
do
#echo " $SERVER $REPDIS $USERDIS $PORT $PRIVKEY $RSYNCMOD $LOCAL"
if [[ "$LOCAL" != "oui" ]]; then
# non --> Opération sur des sites distants
synchro
fi
done < <(tail -n +2 /home/yann/scripts/media_chirpy_site.csv)
# Calcul et affichage temps exécution
termin=$(date +"%s")
difftimelps=$(($termin-$begin))
echo "***FIN*** $0 exécuté en $(($difftimelps / 60)) mn $(($difftimelps % 60)) s" | systemd-cat -t chirpy -p info
echo "***FIN*** $0 exécuté en $(($difftimelps / 60)) mn $(($difftimelps % 60)) s"
notify-send "Synchronisation chirpy" "Terminée..."
exit 0Lancer et activer la surveillance path
1
systemctl --user enable media_chirpy_site.path --now
Regénération complète
Le service chirpy vaec l’option --incremental ne suffit pas en cas d’ajout de nouveau post ou de modifications des titres; Utliser l’alias static pour regénérer avec une durée de 3 minutes et plus…
Ajouter un alias pour lancer la construction complète
1
2
echo "alias static='cd $HOME/media/chirpy && $HOME/.local/share/gem/ruby/3.4.0/bin/bundle exec $HOME/.local/share/gem/ruby/3.4.0/bin/jekyll build --destination /home/yann/sharenfs/rnmkcy/chirpy && systemctl --user restart chirpy.service && cd $HOME'" >> $HOME/.bash_aliases
source $HOME/.bash_aliases
KDE Plasma 6
- Emplacement des écrans
- Système de gestion de l’énergie - Verrouillage de l’écran
KDE avec 2 écrans
Comment lancer une application sur l’un ou l’autre des 2 écrans ?
1
kscreen-doctor -o
1
2
Output: 1 HDMI-A-2 bf9a44dc-e00a-4534-b189-8eb42df0b5c2
Output: 2 DP-1 7bf17086-bad9-455f-a540-503801f311de
Modifier l’application thunderbird pour qu’elle s’ouvre sur l’écran 0 HDMI
clic droit sur la barre de menu ou titre –> Actions supplémentaires –> Configurer les paramètres spécifiques de fenêtres…
Ajouter une propriété –> Ecran
Forcer écran 0 (écran droit HDMI) ou 1 (écran gauche LCD)

Modifier l’application KeepassXC pour qu’elle s’ouvre sur l’écran 0 HDMI
clic droit sur la barre de menu ou titre –> Actions supplémentaires –> Configurer les paramètres spécifiques de fenêtres…
Ajouter une propriété –> Ecran
Forcer écran 1 (écran gauche LCD)

Login SDDM sur un seul écran
https://wiki.archlinux.org/title/SDDM
Les modifications apportées à votre configuration d’affichage dans une session Plasma Wayland (par exemple, mise en page du moniteur, résolution, etc.) ne persisteront pas vers SDDM. Pour les faire persister, ouvrez les paramètres du système de Plasma et accédez à Couleurs et thèmes > Écran de connexion (SDDM) et cliquez sur “Appliquer les paramètres de plasma…”. Vous devrez avoir la permission d’effectuer cette action.
Il peut en être de même manuellement avec les éléments suivants:
Pour activer la gestion correcte de l’affichage et du moniteur dans SDDM (mise à l’échelle, résolution du moniteur, hz,…), vous pouvez copier ou modifier le fichier de configuration approprié de votre répertoire personnel à celui de SDDM:
1
2
sudo cp ~/.config/kwinoutputconfig.json /var/lib/sddm/.config/
sudo chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json
Vous remarquerez que ce fichier a une structure similaire à votre configuration d’affichage locale configurée dans ~/.config/kwinoutputconfig.json. La raison pour laquelle c’est important, c’est que vous pouvez utiliser ce fichier pour vous aider à déterminer quel moniteur désactiver. La connexion SDDM utilise une configuration d’écran complètement séparée.
Essentiellement, j’ai changé le champ “enabled” en false et le champ “priority” en -1 du moniteur que je voulais désactiver pour l’écran de connexion SDDM.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"data": [
{
"lidClosed": false,
"outputs": [
{
"enabled": false,
"outputIndex": 0,
"position": {
"x": 1920,
"y": 0
},
"priority": -1,
"replicationSource": ""
},
{
"enabled": true,
"outputIndex": 1,
"position": {
"x": 0,
"y": 0
},
"priority": 0,
"replicationSource": ""
}
]
}
],
"name": "setups"
}
Pour activer également la gestion correcte des entrées dans SDDM (tap-to-click, mappage d’écran tactile,…), vous pouvez copier le fichier de configuration approprié de votre répertoire d’accueil à celui de SDDM:
1
2
sudo cp ~/.config/kcminputrc /var/lib/sddm/.config/
sudo chown sddm:sddm /var/lib/sddm/.config/kcminputrc
Affichage & Ecran
Accéder aux réglages des applications par défaut
Comme souvent avec KDE, l’espace dédié à la configuration des applications par défaut se trouve au sein des paramètres système. Pour y accéder, il faudra donc ouvrir l’application Paramètres système de KDE.
Pour cela, dirigez-vous vers le panneau Plasma et cliquez sur le lanceur de menu. Vous pourrez alors saisir « Paramètres système » et lancer l’application portant cette étiquette.
Dans l’application Paramètres système, repérez la barre latérale gauche et faites défiler jusqu’à la section intitulée « Personnalisation ».
Au sein de cette section, repérez l’icône « Applications » et cliquez dessus pour atteindre la zone de configuration des applications par défaut.
Remarque : Si vous ne voyez pas « Applications » dans les Paramètres système, une autre méthode pour accéder à ces réglages consiste à taper « Applications par défaut » dans le menu de l’application. Cliquez alors sur l’application intitulée « Applications par défaut » pour accéder directement aux paramètres.
Ajouter un panneau sur lӎcran de gauche
Sur l’écran gauche, clic-droit et sélectionner Entrer en mode “édition”
Démarrage application à l’ouverture session
Configuration du système –> Démarrage automatique

Définir les applications par défaut pour les fichiers
Pour personnaliser les applications par défaut associées à des types de fichiers particuliers dans KDE, vous devrez ouvrir le gestionnaire de fichiers Dolphin. Une fois ouvert, suivez les étapes décrites ci-dessous pour définir les associations de fichiers.
- Dans Dolphin, naviguez jusqu’au fichier dont vous souhaitez modifier les paramètres par défaut.
- Faites un clic droit sur le fichier, puis cliquez sur « Propriétés ».
- Dans la fenêtre Propriétés, cliquez sur le bouton « Options de type de fichier ».
- Utilisez cette fenêtre pour modifier l’application par défaut associée au type de fichier sélectionné dans KDE Plasma
- Répétez l’opération pour chaque type de fichier dont vous souhaitez modifier les associations.
Modifier les applications par défaut via le terminal
Vous souhaitez ajuster les applications par défaut de KDE Plasma 5 en passant par le terminal ? Si tel est le cas, vous devrez modifier le fichier mimeapps.list. Pour cela, ouvrez une fenêtre de terminal et saisissez la commande suivante pour ouvrir le fichier avec l’éditeur Nano :
1
nano -w ~/.config/mimeapps.list
Une fois le fichier mimeapps.list ouvert dans Nano, vous pourrez voir la liste des associations d’applications par défaut de votre système.
Parcourez la liste avec les flèches directionnelles et repérez les sections que vous souhaitez modifier, puis adaptez le code à vos besoins. Par exemple, si vous souhaitez changer le gestionnaire de fichiers par défaut de Dolphin à Thunar, vous devrez saisir :
1
inode/directory=Thunar-folder-handler.desktop;
Vous ne savez pas quoi saisir pour votre application préférée ? Voici la méthode à suivre. D’abord, utilisez la commande cd /usr/share/applications/ :
1
cd /usr/share/applications/
Puis, exécutez la commande ls pour afficher la liste des applications disponibles :
1
ls
Repérez le fichier « .desktop » de l’application désirée, et saisissez-le dans le fichier mimeapps.list.
Une fois les modifications effectuées dans Nano, enregistrez-les en appuyant sur Ctrl + O, puis quittez l’éditeur avec Ctrl + X.
KDE Plasma devrait immédiatement prendre en compte vos nouvelles associations d’applications par défaut.
Dolphin
Effacer configuration Dolphin
rm -rf .config/dolphinrc .config/session/dolphin_dolphin_dolphin .local/state/dolphinstaterc .local/share/kxmlgui5/dolphin .cache/dolphin
1
2
3
4
5
~/.config/dolphinrc
~/.config/session/dolphin_dolphin_dolphin
~/.local/state/dolphinstaterc
~/.local/share/kxmlgui5/dolphin/
~/.cache/dolphin/
Comptes en ligne
Comptes en ligne est un endroit central pour ajouter, supprimer et configurer des comptes pour divers services en ligne tels que Nextcloud, Google et autres. L’ajout d’un nouveau compte en ligne permet à n’importe quelle application KDE d’interagir avec le service - par exemple, l’ajout d’un nouveau compte Google vous permet d’accéder automatiquement aux fichiers Google Drive de Dolphin.
Ajouter des fournisseurs
1
yay -S kaccounts-providers
Ouvrir le panneau de configuration système
Krusader
Krusader est un gestionnaire de fichiers à double panneau avancé (style commandant) pour KDE Plasma et d’autres bureaux dans le monde *nix, similaire à Midnight ou Total Commander. Il fournit toutes les fonctionnalités de gestion de fichiers que vous pourriez éventuellement vouloir. Plus:
- Gestion étendue des archives
- Prise en charge du système de fichiers monté
- Transferts de fichiers avec (S)FTP
- Module de recherche avancée
- Copier/déplacer les files d’attente
- Un spectateur interne et un éditeur
- Synchronisation du répertoire
- Comparaisons de contenu de fichier
- Renommage puissant par lots
Installation: yay -S krusader
Sauvegardes
Sauvegardes locales
Sauvegardes locales avec systemd utilisateur service et timer
Pour le fichier service ~/.config/systemd/user/savyann.service
1
2
3
4
5
6
7
8
[Unit]
Description=Sauvegarde jour
[Service]
Type=simple
ExecStart=/bin/bash /home/yann/scripts/sav-yann-media.sh
StandardError=journal
Type=oneshot
Le fichier “timer” ~/.config/systemd/user/savyann.timer
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Sauvegarde jour
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Unit=savyann.service
[Install]
WantedBy=timers.target
Activation et lancement
1
systemctl --user enable savyann.timer --now
La sauvegarde démarre 15 minutes après la mise sous tension de PC1
Les logs : journalctl --user -u savyann.service
Liste des timers : systemctl --user list-timers --all
BorgBackup
BorgBackup est installé et fonctionnel en local
Fichiers contenant les paramètres pour une exécution de borg
Dépôt distant : ~/sharenfs/pc1/.borg/pc1.repository
Passphrase: ~/sharenfs/pc1/.borg/pc1.passphrase
Exclusions: ~/sharenfs/pc1/.borg/pc1.exclusions
Pour une utilisation avec un stockage distant , il faut créer un jeu de clé
NetworkManager
- Réseau NetworkManager - nmcli
- Carte réseau pcie 2 ports ethernet 1Ghz
- Carte réseau tp-link pcie 2.5Ghz TX201*

Le périphérique réseau interne à la carte mère est désactivé dans le bios
Pour voir quels services réseau sont actifs sur le système
1
2
3
4
5
6
7
8
9
if systemctl is-active --quiet NetworkManager; then
echo "NetworkManager gère le réseau"
elif systemctl is-active --quiet systemd-networkd; then
echo "systemd-networkd gère le réseau"
elif [ -d /etc/netplan ]; then
echo "Netplan est probablement utilisé comme frontend"
else
echo "Aucun gestionnaire de réseau connu n'est actif"
fi
Sortie : NetworkManager gère le réseau
Configuration DNS /etc/resolv.conf
Par défaut, NetworkManager met à jour dynamiquement le /etc/resolv.conf avec les paramètres DNS à partir de profils de connexion NetworkManager actifs. Cependant, vous pouvez désactiver ce comportement et configurer manuellement les paramètres DNS dans /etc/resolv.conf.
Désactiver le traitement DNS dans la configuration NetworkManager
Par défaut, NetworkManager gère les paramètres DNS dans le fichier /etc/resolv.conf, et vous pouvez configurer l’ordre des serveurs DNS.
Alternativement, vous pouvez désactiver le traitement DNS dans NetworkManager si vous préférez configurer manuellement les paramètres DNS dans /etc/resolv.conf.
En tant qu’utilisateur root
Créez le /etc/NetworkManager/conf.d/90-dns-none.conf avec le contenu suivant en utilisant un éditeur de texte:
1
2
[main]
dns=none
Recharger le service NetworkManager:
1
systemctl reload NetworkManager
Après avoir rechargé le service, NetworkManager ne met plus à jour le /etc/resolv.conf. Cependant, le dernier contenu du fichier est conservé.
Optionnel: Supprimer le Commentaire
Generated by NetworkManagerde/etc/resolv.confpour éviter la confusion.
Vérification
Modifier manuellement la configuration le /etc/resolv.conf
1
2
3
nameserver 192.168.0.205
nameserver 1.1.1.1
nameserver fd0f:ee:b0::1
Recharger le NetworkManagerservice:
1
systemctl reload NetworkManager
Afficher le /etc/resolv.conf:
1
cat /etc/resolv.conf
Si vous avez réussi à désactiver le traitement DNS, NetworkManager n’a pas remplacé les paramètres configurés manuellement.
Dépannage
Afficher la configuration NetworkManager pour s’assurer qu’aucun autre fichier de configuration avec une priorité plus élevée n’a effacé le paramètre:
1
NetworkManager --print-config
1
2
3
[...]
dns=none
[...]
Vérifier si le dns Unbound (192.168..205) est utilisé: dig google.com |grep 'SERVER'
1
;; SERVER: 192.168.0.205#53(192.168.0.205) (UDP)
Domaine local home.arpa
NetworkManager utilise le DNS Unbound 192.168.0.205 qui gère le domaine local home.arpa
Il faut ajouter au système le certificat de l’autorité de certification homearpaCA.crt
1
2
# en mode su
trust anchor --store homearpaCA.crt
Pont réseau via nmcli
Le statut avant modification : nmcli device status
1
2
3
4
5
DEVICE TYPE STATE CONNECTION
enp3s0f0 ethernet connecté Connexion filaire 2
enp2s0 ethernet connecté Connexion filaire 1
lo loopback connecté (en externe) lo
enp3s0f1 ethernet indisponible --
- enp2s0 liaison ethernet 2.5Ghz vers routeur relié à la box par une liaison ethernet 2.5Ghz
- enp3s0f0 liaison ethernet 1Ghz vers routeur wifi Tenda
Passer en mode su
1-Créer une interface de pont
1
nmcli connection add type bridge con-name bridge0 ifname bridge0
Cette commande crée un pont nommé bridge0
Connexion « bridge0 » (36139d7a-89de-47b0-88c6-22abeb316b5b) ajoutée avec succès.
2-Affichez les interfaces réseau et notez les noms des interfaces que vous souhaitez ajouter au pont
1
nmcli device status
1
2
3
4
5
6
DEVICE TYPE STATE CONNECTION
enp3s0f0 ethernet connecté Connexion filaire 2
enp2s0 ethernet connecté Connexion filaire 1
bridge0 bridge connexion (obtention de la configuration IP) bridge0
lo loopback connecté (en externe) lo
enp3s0f1 ethernet indisponible --
Dans notre cas :
- enp3s0f1 n’est pas configuré. Pour utiliser ces dispositifs comme ports, ajoutez des profils de connexion à l’étape suivante.(enp3s0f1 NE SERA PAS UTILISE)
- enp2s0 et enp3s0f0 ont des profils de connexion existants. Pour utiliser ces dispositifs comme ports, modifiez leurs profils à l’étape suivante.
Seul le profil enp3s0f0 sera modifié, allez au & 3.2
3-Attribuer les interfaces au pont.
3.1-Si l’interface que vous souhaitez affecter au pont n’est pas configuré, créez un nouveau profil de connexion pour elle
1
2
3
nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp3s0f0 master bridge0
# si autre interface on renouvelle la commande
#nmcli connection add type ethernet slave-type bridge con-name bridge0-port2 ifname enp3s0f2 master bridge0
Cette commande crée un profil pour enp3s0f0 et l’ajoute à la connexion bridge0
Résultat commande :
Connexion « bridge0-port1 » (435b879b-0337-4402-bc8b-32322400345d) ajoutée avec succès.
3.2-Si vous souhaitez affecter un profil de connexion existant à la passerelle
Réglez le paramètre master de ces connexions sur bridge0:
1
2
# enp3s0f0
nmcli connection modify 'Connexion filaire 2' master bridge0
Ces commandes affectent les profils de connexion existants nommés enp3s0f0 et enp2s0 à la connexion bridge0.
Réactiver la connexion:
1
2
# enp3s0f1
nmcli connection up 'Connexion filaire 2'
4-Configurez les paramètres
Pour utiliser le DHCP, aucune action n’est nécessaire
5-Activer la connexion
1
nmcli connection up bridge0
6-Vérifications
Utilisez l’utilitaire ip pour afficher l’état des liens des périphériques Ethernet qui sont des ports d’un pont spécifique
1
ip link show master bridge0
1
2
3
3: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master bridge0 state UP mode DEFAULT group default qlen 1000
link/ether 6c:b3:11:32:04:c8 brd ff:ff:ff:ff:ff:ff
altname enx6cb3113204c8
Utilisez l’utilitaire bridge pour afficher l’état des périphériques Ethernet qui sont des ports de n’importe quel périphérique de pont
1
bridge link show
1
3: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100
VPN
Choix entre Mullvad et NordVPN
Mullvad
Installation
1
yay -S mullvad-vpn-gui
Au premier lancement, saisir le N° de compte , sélectionner le pays de connexion France
Pour la gestion du domaine local home.arpa

NordVPN (NON INSTALLE)
Installation Droits
1
2
3
4
5
6
7
yay -S nordvpn-bin
#sudo groupadd nordvpn
sudo usermod -aG nordvpn $USER
sudo systemctl enable --now nordvpnd
# Nouveau terminal
nordvpn connect
# ouvrir le lien, sec onnecter au compte nordvpn
Vérifier: id yann
1
uid=1000(yann) gid=1000(yann) groupes=1000(yann),3(sys),998(wheel),981(rfkill),960(nordvpn)
Redémarrer
Ouvrir terminal
1
nordvpn connect
Le nordvpn gui
1
yay -S nordvpn-gui
Désactiver NordVPN
1
2
sudo systemctl stop nordvpnd.service
sudo systemctl disable nordvpnd.service
Décocher nordvpntray (NordVPN Graphique) dans Paramètres -> Session et démarrage Démarrage automatique de session
Outils développement
Go
Archlinux Go
1
2
yay -S go
go version
go version go1.23.3 linux/amd64
NodeJS et nvm
Archlinux Node.js npm
1
2
yay -S nodejs npm
node --version && npm --version
v23.1.0
10.9.0
OPTION
NVM, également appelé « Node Version Manager », est un outil utilisé pour installer et gérer plusieurs versions de Node.js sur le système.
Installer la dernière version de NVM à l’aide de la commande suivante
1
2
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
source ~/.bashrc
Vérifier
1
nvm --version
0.39.2
Installer Node.js avec NVM
Pour lister toutes les versions disponibles Node.js
1
nvm list-remote
Vous obtiendrez une liste de toutes les versions
1
2
3
4
5
6
7
v22.9.0
v22.10.0
v22.11.0 (Latest LTS: Jod)
v23.0.0
v23.1.0
v23.2.0
v23.3.0
Pour installer la dernière version de Node.js
nvm install node
Pour installer la dernière version stable de Node.js
nvm install --lts
Pour installer une version spécifique de Node.js
nvm install 23.2.0
Pour lister toutes les versions installées de Node.js
nvm ls
Pour modifier la version Node.js par défaut à 19.0.0
nvm utilisation 23.2.0
Virtuel Virt-Manager
- Virt-Manager Complete Edition - Installation simplifiée
- Accés aux machines virtuelles KVM distantes via virt-manager
- Pont réseau virtuel “host-bridge”

- Gestionnaire de machine virtuelles, activer “xml editing”

- Restaurer les configurations de VM
sudo cp ~/virtuel/etc-libvirt-qemu/*.xml /etc/libvirt/qemu/
Script pour une installation complète
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Créez des groupes kvm et libvirt
sudo groupadd -f kvm
sudo groupadd -f libvirt
# Ajouter l'utilisateur actuel
sudo usermod -a -G libvirt $USER
newgrp libvirt
sudo usermod -aG kvm $USER
# Installation complète Virt-Manager
sudo pacman -Syu --needed virt-manager qemu-desktop libvirt edk2-ovmf dnsmasq vde2 bridge-utils iptables-nft dmidecode swtpm libguestfs guestfs-tools
# activer le service libvirtd
sudo systemctl enable --now libvirtd.service
# Modifier le fichier /etc/libvirt/libvirtd.conf
sudo sed -i -e 's/#unix_sock_group = "libvirt"/unix_sock_group = "libvirt"/g' /etc/libvirt/libvirtd.conf
sudo sed -i -e 's/#unix_sock_rw_perms = "0777"/unix_sock_rw_perms = "0770"/g' /etc/libvirt/libvirtd.conf
#sudo sed -i -e 's/#unix_sock_ro_perms = "0777"/unix_sock_ro_perms = "0777"/g' /etc/libvirt/libvirtd.conf
sudo systemctl restart libvirtd.service
C’est la façon de permettre aux utilisateurs non root de gérer les machines virtuelles sur KVM en utilisant
virshouvirt-managersans autorisations sudo.
swtpm et qemu
1
2
3
4
5
6
7
8
9
10
11
# Créer utilisateur système swtpm
sudo useradd -r swtpm
sudo mkdir -p /var/lib/swtpm-localca
sudo chown swtpm:swtpm /var/lib/swtpm-localca
# Ajout lignes suivantes au fichier /etc/libvirt/qemu.conf
sudo sed -i -e 's/#swtpm_user = "tss"/swtpm_user = "swtpm"/g' /etc/libvirt/qemu.conf
sudo sed -i -e 's/#swtpm_group = "tss"/swtpm_group = "swtpm"/g' /etc/libvirt/qemu.conf
# Utilisateur ID (1000)
sudo sed -i -e 's/#user = "libvirt-qemu"/user = "1000"/g' /etc/libvirt/qemu.conf
sudo sed -i -e 's/#group = "libvirt-qemu"/group = "1000"/g' /etc/libvirt/qemu.conf
Déclarer le pont (bridge) à KVM
Créer un fichier de définition de réseau au format XML : nano router-tenda.xml
1
2
3
4
5
<network>
<name>router-tenda</name>
<forward mode="bridge"/>
<bridge name="bridge0" />
</network>
Appliquer la configuration :
1
2
3
virsh net-define router-tenda.xml # -> Réseau host-tenda défini depuis router-tenda.xml
virsh net-start router-tenda # -> Réseau router-tenda démarré
virsh net-autostart router-tenda # -> Réseau router-tenda marqué en démarrage automatique
Vérification
1
sudo virsh net-list --all
1
2
3
4
Nom État Démarrage automatique Persistant
--------------------------------------------------------------
default inactif non oui
router-tenda actif oui oui
La structure libvirt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Les configurations xml
[root@pc1 yann]# tree -L 3 /etc/libvirt/qemu
/etc/libvirt/qemu
/etc/libvirt/qemu
├── autostart
├── networks
│ ├── autostart
│ │ └── router-tenda.xml -> /etc/libvirt/qemu/networks/router-tenda.xml
│ ├── default.xml
│ └── router-tenda.xml
├── vm-arch-clone.xml
├── vm-arch.xml
└── win11.xml
# les images sous KVM
[yann@pc1 ~]$ tree -L 2 /virtuel/
/virtuel/
├── eos
│ └── eos-chiffre_luks_backup.bin
├── KVM
│ ├── eos-lvm-luks-1.qcow2
│ ├── vm-arch-clone.qcow2
│ ├── vm-arch.qcow2
│ ├── Whonix-Gateway.qcow2
│ ├── Whonix-Workstation.qcow2
│ └── wineleven.qcow2
├── KVM_SAV
│ ├── etc-libvirt-qemu
│ └── images_qcow2
└── nspawn
├── alpine
├── alpine-container.sh
├── bookworm
├── nspbullseye
└── spawnalpine.sh
Paramétrage Edition –> Préférences –> Général
“Activer l’édition XML”
Pour activer la gestion des machines virtuelles distantes
KVM: virt-manager to connect to a remote console using qemu+ssh
Saisir la commande suivante en mode utilisateur
1
virt-manager -c 'qemu+ssh://yick@192.168.0.205:55205/system?keyfile=/home/yann/.ssh/yick-ed25519'
Ensuite ouvrir le “Gestionnaire de machines virtuelles”


Wing personal python IDE
Wing personal python IDE → Téléchargement
1
2
3
4
5
6
7
# Décompression de la version téléchargée
tar xjvf wing-personal-11.0.6.0-linux-x64.tar.bz2
# Passage en root
sudo -s
# Lancement procédure installation
cd wing-personal-11.0.6.0-linux-x64
./wing-install.py
Déroulement de la commande
1
2
3
4
5
6
7
8
9
10
11
12
Where do you want to install the support files for Wing Personal (default
= /usr/local/lib/wing-personal11)?
/usr/local/lib/wing-personal11 does not exist, create it (y/N)? y
Where do you want to install links to the Wing Personal startup scripts
(default = /usr/local/bin)?
[...]
Creating symbolic link /usr/local/bin/wing-personal11 (->
../lib/wing-personal11/wing-personal)
Writing file-list.txt
Icon/menu install returned err=0
Done installing. Make sure that /usr/local/bin is in your path and type
"wing-personal11" to start Wing Personal.
Effacer les fichiers
1
2
3
4
5
# Suppression dossier et fichier
cd ..
rm -rf wing-personal*
# sortie root
exit
Etat des lieux
Ajouter un alias dans le fichier ~/.bash_aliases
1
alias etat='$HOME/scripts/etat_des_lieux.sh'
Recharger et exécuter
1
2
source ~/.bash_aliases
etat
Annexe
Python
Installer python pip pipx
1
yay -S python-pip python-pipx
Dbeaver
DBeaver est basé sur le framework Eclipse, il est open source et il supporte plusieurs types de serveurs de bases de données comme : MySQL, SQLite, DB2, PostgreSQL, Oracle…
Version java installée : java --version
1
2
3
openjdk 23 2024-09-17
OpenJDK Runtime Environment (build 23)
OpenJDK 64-Bit Server VM (build 23, mixed mode, sharing)
Installation
1
yay -S dbeaver
1
2
3
4
5
6
7
Sync Explicit (1): dbeaver-24.2.1-1
résolution des dépendances…
:: Il y a 6 fournisseurs disponibles pour java-runtime>=17 :
:: Dépôt extra
1) jdk-openjdk 2) jdk17-openjdk 3) jdk21-openjdk 4) jre-openjdk 5) jre17-openjdk 6) jre21-openjdk
Entrer un nombre (par défaut, 1 est sélectionné): 1
MariaDB
Résumé des commandes en mode su
1
2
3
4
pacman -S mariadb
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl enable mariadb --now
systemctl status --no-pager --full mariadb
Sécuriser
1
sudo mysql_secure_installation
Valider tous les choix par défaut SAUF le changement de mot de passe (n)
Correction en mode su
Ouvrir MariaDB
1
2
sudo -s
mysql -u root
Exécuter le sql : SELECT host, user, password FROM mysql.user;

Si le mot de passe de votre compte root est invalide (ou autre chose que la cellule vide)
Définir le mot de passe : ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mot_passe_root_MariaDB';
Vérifier : SELECT host, user, password FROM mysql.user;

Sortie : exit;
Parefeu ufw
Installation et activation
1
2
yay -S ufw
sudo ufw enable
Outil cockpit (OPTIONNEL)
Administrer sa machine avec Cockpit (Fedora, Red Hat et dérivées)
Installation
1
yay -S cockpit cockpit-storaged cockpit-machines
Gestion par interface web https://cockpit.rnmkcy.eu

Liaison SSH avec clés entre le interface web cockpit et la machine PC1
Démarrer Eteindre une machine sur le réseau
Démarrer ou éteindre une machine distante sur le réseau via ssh et “wake on lan”
Copier la clé SSH d’accès à la machine Lenovo Proxmox vers /usr/local/bin et se connecter pour valider la clé
1
2
3
sudo -s
cp .ssh/lenovo-ed25519 /usr/local/bin/
/usr/bin/ssh root@192.168.0.215 -p 55215 -i /usr/local/bin/lenovo-ed25519
Les fichiers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# /etc/systemd/system/stop_prox.service
[Unit]
Description=Exécuter commande seulement si arrêt
DefaultDependencies=no
Conflicts=reboot.target
Before=poweroff.target halt.target shutdown.target
Requires=poweroff.target
[Service]
Type=oneshot
ExecStart=/usr/bin/ssh root@192.168.0.215 -p 55215 -i /usr/local/bin/lenovo-ed25519 'systemctl poweroff'
RemainAfterExit=yes
[Install]
WantedBy=shutdown.target
# /etc/systemd/system/run-script-with-delay.timer
[Unit]
Description=Exécuter script 2 min après démarrage (timer)
[Timer]
OnBootSec=2min
[Install]
WantedBy=default.target
# /etc/systemd/system/run-script-with-delay.service
[Unit]
Description=Exécuter script 2 min après démarrage
[Service]
Type=oneshot
ExecStart=/usr/bin/wakeonlan -i 192.168.0.255 00:23:24:c9:06:86
TimeoutStartSec=0
Disque Interne SSD 480Go
Ajout disque SSD sata 480Go
Identifer le disque: lsblk
1
2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 447,1G 0 disk
Effacement et formatage disque
1
2
3
4
5
6
# Ceci effacera de manière irréversible toutes les données disque
sgdisk --zap-all /dev/sda
# Partition entière Linux (code 8300) système de fichier EXT4
sgdisk --clear --new=1:0:0 --typecode=1:8300 /dev/sda
# Système de fichier EXT4
mkfs.ext4 /dev/sda1
Créer un point de montage
1
sudo mkdir -p /mnt/ssd
| UUID: sudo blkid | grep ‘/dev/sda1’ |
1
/dev/sda1: UUID="e33c1e26-5c19-4647-980b-98db4d92591b" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="c153121f-615f-4fd5-aad7-e83501798e1f"
Ajouter au fichier /etc/fstab
1
2
# /dev/sda1
UUID=e33c1e26-5c19-4647-980b-98db4d92591b /mnt/ssd auto defaults,nofail,x-systemd.automount 0 2
Recharger la configuration et le montage
1
2
sudo systemctl daemon-reload
sudo mount -a
Liens issus de la VM ttrss
Dans la machine virtuelle ttrss, création d’un fichier markdown de liens remarquables (Liens - ttrss.md)
Importation du fichier ttrss.md dans le générateur statique
Script $HOME/scripts/articles_remarquables_ttrss
Etendre Réduire
#!/bin/bash
set -euo pipefail
trap 'echo "Une erreur est survenue."; exit 1' ERR
echo "Connexion SSH VM Alpine ttrss"
echo "Importation fichier ttrss.md dans /tmp/"
scp -o ProxyCommand="ssh -W %h:%p -p 55205 -i /home/yann/.ssh/yick-ed25519 yick@192.168.0.205" -i /home/yann/.ssh/ttrss_alpine-vm -P 55217 aluser@192.168.100.60:/home/aluser/ttrss.md /tmp/
LIENS_TTRSS="/tmp/liens_ttrss.md"
echo "Création fichier $LIENS_TTRSS"
cat << EOF > $LIENS_TTRSS
---
layout: article
titles: Liens ttrss au format HTML
---
/ lang="fr">
<body>
<head>
<meta charset="utf-8">
<title>Doc Html</title>
</head>
<div class="search-bar">
<div class="search-box js-search-box">
<input type="text" id="saisie-recherche" onkeyup="rechercheFonction()" placeholder="Rechercher..." title="Saisir" autofocus>
</div>
</div>
<ul id="articlesTTRSS">
EOF
echo "Ajout des liens /tmp/ttrss.md"
cat /tmp/ttrss.md >> $LIENS_TTRSS
echo "Ajout Javascript"
cat << EOF >> $LIENS_TTRSS
</ul>
<button onclick="topFunction()" id="myBtn" title="Haut de page">↑</button>
<script>
//Get the button
var mybutton = document.getElementById("myBtn");
// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
mybutton.style.display = "none";
}
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
function rechercheFonction() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("saisie-recherche");
filter = input.value.toUpperCase();
ul = document.getElementById("articlesTTRSS");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
// Cacher le champ de recherche
var mysearchbox = document.getElementById("searchbox");
mysearchbox.style.visibility = "hidden";
</script>
</body>
</>
EOF
echo "Copier le fichier liens_ttrss.md dans le dossier yannstatic"
echo "cp $LIENS_TTRSS /srv/media/yannstatic/liens_ttrss.md"
cp $LIENS_TTRSS /srv/media/yannstatic/liens_ttrss.mdCréer un alias ttrss dans le fichier $HOME/.bash_aliases
1
alias ttrss='bash /home/yann/scripts/articles_remarquables_ttrss'
Activer
1
source $HOME/.bash_aliases
Maintenance
Hetzner Box liaison SSH
https://www.openssh.com/pq.html
Affichage de messages d’alerte sur les connexions ssh à la box hetzner
u326239.your-storagebox.de
1
2
3
Remote: ** WARNING: connection is not using a post-quantum key exchange algorithm.
Remote: ** This session may be vulnerable to "store now, decrypt later" attacks.
Remote: ** The server may need to be upgraded. See https://openssh.com/pq.html
Il faut créer un fichier SSH client hetzner-box.conf pour désactiver les messages
/etc/ssh/ssh_config.d/hetzner-box.conf
1
2
Match host u326239.your-storagebox.de
WarnWeakCrypto no
Redémarrer le service SSH
1
sudo systemctl restart sshd
Erreur de paquet ou signature PGP
En cas d’erreur de paquet ou signature PGP
1
sudo pacman -S endeavouros-keyring archlinux-keyring
Mise à jour impossible avec des erreurs de téléchargement
1
sudo rm -r /var/cache/pacman/pkg/*





















