Post

PC1 - EndeavourOS chiffré + KDE Plasma

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

B-Mode graphique

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.

  • ~/.bashrc Fichier 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_login et ~/.profile sont cochés dans cet ordre. Le fichier squelette /etc/skel/.bash_profile et aussi ~/.bashrc
  • ~/.bash_logout Par-utilisateur, après la sortie d’un shell de connexion.
  • /etc/profile Sources paramètres d’application dans /etc/profile.d/*.sh et /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=n Le nombre de minutes que la commande mount ré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 commande mount sort 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

Intégration navigateur

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)

Archlinux Flameshot

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 colour0

Synchro 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 0

Activer 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: "&#8617;&#xfe0e;"
  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:
  - jemoji

Le 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 --incremental ne regénère pas la rubrique Récemment mis à jour
Pour une mise à jour systématique il faut supprimer l’option --incremental avec 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 0

Lancer 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.

  1. Dans Dolphin, naviguez jusqu’au fichier dont vous souhaitez modifier les paramètres par défaut.
  2. Faites un clic droit sur le fichier, puis cliquez sur « Propriétés ».
  3. Dans la fenêtre Propriétés, cliquez sur le bouton « Options de type de fichier ».
  4. Utilisez cette fenêtre pour modifier l’application par défaut associée au type de fichier sélectionné dans KDE Plasma
  5. 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

Configurer 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é

  1. Créer utilisateur borg
  2. Clés ssh borg
  3. Ajout clé publique borg à la boîte de stockage

NetworkManager

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 NetworkManager de /etc/resolv.conf pour é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           --                  
  1. enp2s0 liaison ethernet 2.5Ghz vers routeur relié à la box par une liaison ethernet 2.5Ghz
  2. 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

Paramètres

Interface utilisateur

Paramètres VPN

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

  1. Virt-Manager Complete Edition - Installation simplifiée
  2. Accés aux machines virtuelles KVM distantes via virt-manager
  3. Pont réseau virtuel “host-bridge”
  4. Gestionnaire de machine virtuelles, activer “xml editing”
  5. 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 virsh ou virt-manager sans 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 IDETé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

MariaDB archlinux

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)

Dbeaver accès refusé

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">&uarr;</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.md

Cré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/*
Cet article est sous licence CC BY 4.0 par l'auteur.