Création machine virtuelle Alpine de type KVM avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur.
Les dernières images Alpine Linux
Création d’une image virtuelle alpine-searx sous le serveur Lenovo rnmkcy.eu
On se connecte sur le serveur Lenovo en SSH, puis on exécute la commande suivante pour créer une machine virtuelle Alpine avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur
sudo virt-install \
--osinfo alpinelinux3.17 \
--name alpine-searx \
--memory 2048 \
--vcpus 1 \
--cpu host \
--hvm \
--disk path=/srv/kvm/libvirt/images/alpine-searx.qcow2,format=qcow2,size=5 \
--cdrom /srv/kvm/libvirt/boot/alpine-standard-3.20.3-x86_64.iso \
--network bridge=br0 \
--graphics vnc
Note: La dernière version Alpine Linux est alpinelinux3.20 au 10/07/2024 mais KVM ne connait que alpinelinux3.17 (sudo virt-install --osinfo list |grep alpine
)
Après exécution dans un terminal de la commande ci dessus, on arrive sur l’écran suivant
Le serveur Lenovo n’a pas d’affichage, il faut créer un tunnel ssh depuis un poste client
ssh -L 5900:127.0.0.1:5900 leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519
Puis lancer de ce même poste un client VNC
la console s’affiche
Une fois l’image ISO lancée, on arrive à un invite de connexion.
Indiquez root
comme nom d’utilisateur, aucun mot de passe ne vous sera demandé à cette étape.
Le système est utilisable, mais on veut l’installer, ce qui passe par la commande suivante (clavier qwerty)
setup-alpine # saisir setup)qlpine
Une suite de questions :
mot de passe root (toorrtyuiop)
APK mirror (f) ,patienter …
user : alsearx
password: MoelleEndetteSingle
Relever l’adresse ip allouée : ip a
–> 192.168.0.31
Puis redémarrer : reboot
La fenêtre vnc se ferme
Normalement, vous n’avez rien à faire, les paramètres par défaut doivent convenir. Mais si vous le désirez, vous pouvez les modifier pour utiliser une interface particulière, une IP fixe, un serveur proxy, etc.
Une soixantaine de serveurs mirroir vous seront proposés pour télécharger les paquets. Choisissez un numéro dans la liste ou demandez au système de les tester et de sélectionner le plus rapide. Vous pouvez aussi modifier le fichier des sources. Il vous faudra ensuite choisir votre serveur SSH : OpenSSH, Dropbear ou aucun.
On termine par la méthode d’installation. Il en existe quatre :
Si vous stockez le système en mémoire, il faudra trouver un moyen de sauvegarder la configuration. Vous pourrez le faire uniquement depuis un lecteur de disquettes (!) ou une clé USB. Une fois le système installé, vous pourrez l’utiliser directement s’il est placé en mémoire ou redémarrer si vous avez opté pour un stockage classique.
Il n’est pas conseillé d’utiliser directement le compte root pour les actions du quotidien.
Si utilisateur non créé dans la procédure d’installation, le créer avec son propre espace dans /home/
adduser alsearx
Vous pouvez utiliser l’utilisateur pour vous connecter via SSH (impossible avec le compte root)
Sur un poste linux du réseau
ssh alsearx@192.168.0.31
Une fois connecté ,vous pouvez accéder au “root” de manière classique avec la commande :
su -
Mise à jour
apk update
apk upgrade
# Vous pouvez fusionner les deux lignes avec
apk -U upgrade
Editeur nano (Vous pouvez aussi opter pour vi qui est nativement présent sur le système)
apk add nano
How to configure static IP address on Alpine Linux
Le fichier de configuration /etc/network/interfaces
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.216/24
gateway 192.168.0.254
Fichier de résolution dns
/etc/resolv.conf
nameserver 1.1.1.1
nameserver 9.9.9.9
Les modifications apportées à /etc/network/interfaces peuvent être activées en exécutant
service networking restart
Connexion ssh sur un autre port avec un jeu de clés
Générer une paire de clé sur l’ordinateur de bureau PC1
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec le serveur.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-alpine-searx
Copier la clé publique cat ~/.ssh/vm-alpine-searx.pub
dans le presse-papier
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBQu0LRiDjPM7BJAfjECl22fnEchVuxnw38RV2IJs0+l yann@yann-pc1
On se connecte sur la machine virtuelle alpine linux “ttrss alpine-searx”
ssh alsearx@192.168.0.216
Créer le répertoire et ouvrir nouveau fichier
mkdir -p $HOME/.ssh/
nano $HOME/.ssh/authorized_keys
Coller le contenu du presse-papier , sauver le fichier et sortir
Modifier les droits
chmod 600 $HOME/.ssh/authorized_keys
Passer en mode su
su -
Modifier la configuration serveur SSH
nano /etc/ssh/sshd_config
Modifier
Port = 55216
PasswordAuthentication no
Relancer le serveur
service sshd restart
Test connexion
ssh -p 55216 -i ~/.ssh/vm-alpine-searx alsearx@192.168.0.216
Passer en root
su -
Editer la configuration des dépôts
nano /etc/apk/repositories
Trouvez maintenant la ligne qui se termine dans /community Ensuite, retirez le # au début de la ligne. Le fichier résultant devrait ressembler à ceci
#/media/cdrom/apks
http://alpinelinux.mirrors.ovh.net/v3.20/main
http://alpinelinux.mirrors.ovh.net/v3.20/community
Mise à jour des dépôts
apk update
Installer sudo
apk add sudo
Pas de mot de passe sudo pour l’utilisateur alouest
echo "alsearx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Install docker & docker-compose on Alpine Linux
Passer en root
su -
Editer la configuration des dépôts
nano /etc/apk/repositories
Trouvez maintenant la ligne qui se termine dans /community Ensuite, retirez le # au début de la ligne. Le fichier résultant devrait ressembler à ceci
#/media/cdrom/apks
http://alpinelinux.mirrors.ovh.net/v3.20/main
http://alpinelinux.mirrors.ovh.net/v3.20/community
Installer docker et docker-compose
apk update
apk add docker docker-compose
Activer autostart sur boot en utilisant
rc-update add docker default
puis vous pouvez lancer le service docker en utilisant la commande
/etc/init.d/docker start
# ou
service docker start
SearXNG est un métamoteur qui recherche ses informations à travers plusieurs moteurs de recherche généralistes
Si vous prévoyez de construire et de maintenir une image Docker par vous-même, assurez-vous que Docker est installé. Sous Linux, n’oubliez pas d’ajouter votre utilisateur au groupe Docker (déconnectez-vous et reconnectez-vous pour que votre appartenance au groupe soit réévaluée) :
sudo adduser $USER docker
L’image docker est basée sur git://Dockerfile et disponible sur searxng/searxng @dockerhub. L’utilisation de l’image docker est assez simple, par exemple vous pouvez extraire l’image searxng/searxng @dockerhub et déployer une instance locale en utilisant docker run:
mkdir YannSearXNG
cd YannSearXNG
export PORT=8080
docker pull searxng/searxng
Pour avoir un démarrage automatique au boot : --restart=always --name restart_always
cd ~/YannSearXNG
export PORT=8080
docker run -d -p ${PORT}:8080 \
--restart=always \
--name searxng \
-v "${PWD}/searxng:/etc/searxng" \
-e "BASE_URL=http://localhost:$PORT/" \
-e "INSTANCE_NAME=YannSearXNG" \
searxng/searxng
Sans démarrage auto…
cd ~/YannSearXNG
export PORT=8080
docker run --rm \
-d -p ${PORT}:8080 \
-v "${PWD}/searxng:/etc/searxng" \
-e "BASE_URL=http://localhost:$PORT/" \
-e "INSTANCE_NAME=YannSearXNG" \
searxng/searxng
Les variables d’environnement UWSGI_WORKERS
et UWSGI_THREADS
remplacent le nombre par défaut de processus UWSGI et de threads UWSGI spécifiés dans le fichier /etc/searxng/uwsgi.ini
.
Ouvrez votre navigateur WEB et visitez l’URL :
xdg-open http://192.168.0.216:8080
Dans ${PWD}/searxng, vous trouverez settings.yml
et uwsgi.ini
. Vous pouvez modifier ces fichiers selon vos besoins
# résultat sur un nouvel onglet
sudo sed -i -e "s/\# results_on_new_tab: false/results_on_new_tab\: true/g" $HOME/YannSearXNG/searxng/settings.yml
Identifier le container : docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97cf004cd5d0 searxng/searxng "/sbin/tini -- /usr/…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp searxng
et redémarrer l’image Docker.
docker container restart 97cf004cd5d0
Les stratégies pour automatiser le processus de mise à jour des conteneurs Docker lorsque leurs images de base sont mises à jour. Nous examinerons des scripts Bash personnalisés et des outils tiers tels que Watchtower, qui offrent un éventail de solutions(Auto-Update Docker Containers for Latest Base Images)
Watchtower est un outil open-source qui automatise le processus de mise à jour des conteneurs Docker. Il interroge le registre Docker pour vérifier les mises à jour des images à partir desquelles les conteneurs ont été initialement instanciés.
Supposons que Watchtower détecte qu’une image a été mise à jour. Dans ce cas, elle arrête le conteneur exécutant l’image périmée, extrait la nouvelle image du registre Docker et démarre un nouveau conteneur avec les mêmes configurations que le précédent. Cela garantit que nos conteneurs exécutent toujours la dernière version de l’image de base sans intervention manuelle.
Exécution du conteneur Watchtower
Paramètres
--schedule
prend comme valeur une expression crontab. Sinon, le paramètre --interval
peut-être utilisé pour définir le nombre de secondes entre chaque vérification.--schedule "0 0 4 * * *"
--interval 86400
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=your-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=target-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=your-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=your-email-password \
nous devons d’abord lancer le conteneur Watchtower lui-même en exécutant une commande Docker :
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WATCHTOWER_NOTIFICATIONS=email \
-e WATCHTOWER_NOTIFICATION_EMAIL_FROM=your-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_TO=target-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587 \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=your-email@example.com \
-e WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=your-email-password \
containrrr/watchtower \
--schedule "0 0 4 * * *"
Ainsi, nous exécutons Watchtower en mode détaché, ce qui lui donne accès au socket Docker, qui est nécessaire à Watchtower pour surveiller et mettre à jour les conteneurs.
Notre sortie montre l’identifiant unique du conteneur Watchtower qui s’exécute maintenant en arrière-plan.
694862e2a2a6fbf61da8e7336fca4b4bac5f45c459024d5338224007c8838c5c
Voir journal : docker logs watchtower
time="2024-10-22T13:19:49Z" level=info msg="Watchtower 1.7.1"
time="2024-10-22T13:19:49Z" level=info msg="Using notifications: smtp"
time="2024-10-22T13:19:49Z" level=info msg="Checking all containers (except explicitly disabled with label)"
time="2024-10-22T13:19:49Z" level=info msg="Scheduling first run: 2024-10-23 04:00:00 +0000 UTC"
time="2024-10-22T13:19:49Z" level=info msg="Note that the first check will be performed in 14 hours, 40 minutes, 10 seconds"
Utilisez la commande container ls
pour lister les conteneurs en cours d’exécution, ajoutez le drapeau -a
pour lister les conteneurs éteints également. La commande container stop
permet d’arrêter un conteneur en cours d’exécution. Pour se débarrasser d’un conteneur, utilisez la commande container rm
:
localhost:~/YannSearXNG$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8557899b8e9 searxng/searxng "/sbin/tini -- /usr/…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp nice_chaplygin
Si vous n’utilisez plus Docker et que vous souhaitez vous débarrasser de tous les conteneurs et images, utilisez la commande prune suivante :
docker stop $(docker ps -aq) # stop all containers
docker system prune # make some housekeeping
docker rmi -f $(docker images -q) # drop all images
Mise à jour automatique du container
Watchtower est un outil open-source permettant d’automatiser ces mises à jour. Il se présente sous la forme d’une image Docker à lancer très simplement
docker run \
--name watchtower \
--volume /var/run/docker.sock:/var/run/docker.sock \
--detach \
v2tec/watchtower \
--interval "30"
Le paramètre --volume
est obligatoire pour que Watchtower puisse communiquer avec le démon Docker sur le système hôte.
Sur le serveur Lenovo rnmkcy.eu, créer un proxy pour SearXNG /etc/nginx/conf.d/searx.rnmkcy.eu.conf
server {
listen 80;
listen [::]:80;
server_name searx.rnmkcy.eu;
# redirect all plain HTTP requests to HTTPS
return 301 https://searx.rnmkcy.eu$request_uri;
}
server {
# ipv4 listening port/protocol
listen 443 ssl http2;
# ipv6 listening port/protocol
listen [::]:443 ssl http2;
server_name searx.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
location / {
proxy_pass http://192.168.0.216:8080;
}
}
Recharger nginx
sudo systemctl reload nginx
Ouvrir le lien https://searx.rnmkcy.eu
]]>virtualenv est un outil utilisé pour créer un espace de travail isolé pour une application Python. Il présente divers avantages tels que la possibilité d’installer des modules localement, d’exporter un environnement de travail et d’exécuter un programme Python dans cet environnement
Python 3.3+ est livré avec un module appelé venv.
$HOME/media
identique /srv/media
Environnement python
Créer un dossier osm_python
mkdir $HOME/media/osm-new/osm_python
cd $HOME/media/osm-new/osm_python
Pour créer un environnement, utilisez la commande python -m venv <environment name>
Créer un environnement pour l’application
python3 -m venv OsmScripts
activer l’environnement virtuel
source OsmScripts/bin/activate
On arrive sur un prompt : (OsmScripts) [yann@pc1 osm_python]$
Mettre à jour pip dans l’environnement
python -m pip install --upgrade pip
Installer des paquets à l’aide de pip
Install packages in a virtual environment using pip and venv
Lorsque votre environnement virtuel est activé, vous pouvez installer des paquets. Utilisez la commande pip install pour installer des paquets.Par exemple, installons la bibliothèque Requests à partir de l’index des paquets Python (PyPI) : python3 -m pip install requests
Rechercher et installer les paquets gpxpy
et geopy
sur https://pypi.org/ qui sont utilisés dans le projet
pip install gpxpy
pip install geopy
Wing Personal projet OsmScripts
Dans le dossier $HOME/media/osm-new
Projet –> Nouveau projet
{width=”400”}
{width=”400”}
{width=”500”}
{width=”400”}
Projet : $HOME/media/osm-new/osm_python/OsmScripts.wpr
Structure
[yann@pc1 ~]$ tree -L 2 -d /srv/media/osm-new/
/srv/media/osm-new/
├── archives
├── css
│ └── images
├── file
│ ├── photos
│ └── tmp
├── fonts
├── images
├── js
└── osm_python
└── OsmScripts
Le script python
Le script python $HOME/media/osm-new/osm_python/OsmScripts/tracesgpxnew.py
Le lancement du script tient compte de l’environnement python, du chemin complet du script et du paramètre dossier qui contiendra le(s) fichiers gpx
/srv/media/osm-new/osm_python/OsmScripts/bin/python /srv/media/osm-new/osm_python/OsmScripts/tracesgpxnew.py /srv/media/osm-new/file
Après intégration des nouveaux fichiers gpx par le script python, faire une mise à jour des dossiers distants par rsync
#!/bin/bash
echo "-----------------------------------------------
Synchro osm-new avec xoyize.xyz"
rsync -avz --delete --exclude 'archives' --exclude 'osm_python' --rsync-path="sudo rsync" -e "ssh -p 55249 -i /home/yann/.ssh/xoyize-ed25519 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" /srv/media/osm-new yako@xoyize.xyz:/home/yunohost.multimedia/share/Divers/
echo "-----------------------------------------------
Synchro osm-new avec nfs sharenfs/multimedia/Divers/osm-new"
rsync -avz --delete --exclude 'archives' --exclude 'osm_python' /srv/media/osm-new /home/yann/sharenfs/multimedia/Divers/
exit
Exécuter sh /srv/media/osm-new/osm-new-synchro.sh
Alias ‘tracesgpx’ dans .bashrc
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"
Ajout synchronisation à l’alias ‘tracesgpx’ dans .bashrc
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; sh /srv/media/osm-new/osm-new-synchro.sh"
Installer une distribution EndeavourOS chiffrée sur une partition LVM est impossible avec l'outil "Calamarès"
Pour une installation EndavourOS LVM/LUKS, il faut passer par une installation temporaire
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_Endeavour_neo-2024.09.22.iso
Vérifier checksum
sha512sum -c EndeavourOS_Endeavour_neo-2024.09.22.iso.sha512sum
Résultat de la commande ci dessus après quelques minutes
EndeavourOS_Endeavour_neo-2024.09.22.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 USB est /dev/sdc
sudo dd if=EndeavourOS_Endeavour_neo-2024.09.22.iso of=/dev/sdc bs=4M --progress
Insérer la clé USB EndeavourOS, redémarrer la machine, sur Eos live
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: KingstonDataTraveler 2.0PMAP (3820MB)
Vous arrivez sur la page de sélection
Valider le choix par défaut
Clavier QWERTY!!!
1 –> System Settings –> Keyboard
Remove Us…
Apply
On va se connecter en SSH
ip a # relever adresse IP
sudo systemctl start sshd
passwd liveuser # changer le mot de passe liveuser --> rtyuiop
sudo firewall-cmd --zone=public --add-port=22/tcp
Se connecter depuis un poste sur le même réseau: ssh liveuser@adresse_IP
en mode su
sudo -s
Le disque : lsblk
nvme0n1 259:0 0 1,9T 0 disk
On partitionne un disque en 3 avec gdisk
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) :
sgdisk --zap-all /dev/nvme0n1
Partitionnement du disque NVME 2To GPT + LVM
Créer une table de partition GPT à l’aide de la commande sgdisk
:
sgdisk --clear --new=1:0:+512MiB --typecode=1:ef00 --new=2:0:+1885G --typecode=2:8e00 /dev/nvme0n1
Format la partition EFI
mkfs.fat -F32 /dev/nvme0n1p1
Utilisation de Calamarès, cliquer sur Démarrer l’installateur
Installation “en ligne”
Bureau: XFCE4
Paquets : Tout sauf LTS Kernel
Chargeur: systemd-boot
Partitions:
Utilisateur: yann
Ordi: PC1
mot passe utilisateur identique admin
Résumé:
Cliquer sur Installer
L’installation est terminée, cliquer “Redémarrer maintenant” et sur Terminé
Clé USB Eos Live insérée, redémarrer dans l'environnement Live-Cd
Clavier QWERTY!!!
Ouvrir un terminal
Créer un accès sur la machine via SSH depuis un poste distant
Lancer le service : sudo systemctl start sshd
Ouvrir le port 22 firewall: sudo firewall-cmd --zone=public --add-port=22/tcp
Créer un mot de passe à liveuser : passwd liveuser
–> rtyuiop
Relever l’adresse ip de la machine : ip a
Déchiffrer système temporaire
Le système temporaire chiffré /dev/nvme0n1p3
Dans l’environnement live-CD, ouvrez un Terminal ,basculez en mode su et tapez (ou marquez et copiez la ligne avec ctrl-c et collez dans le terminal avec shift-ctrl-v ) …
cryptsetup luksOpen /dev/nvme0n1p3 crypttemp # saisir la phrase mot de passe de l'installation
mkdir -p /media/crypttemp
mount /dev/mapper/crypttemp /media/crypttemp
Nos données d’installation temporaires sont désormais accessibles sous /media/crypttemp
bin boot dev efi etc home lib lib64 lost+found mnt opt proc root run sbin srv sys tmp usr var
Créer nouveau système
Chiffrer la partition /dev/nvme0n1p2,saisir la passphrase définitive
cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
Une demande de confirmation est exigée
WARNING!
========
This will overwrite data on /dev/nvme0n1p2 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/nvme0n1p2:
Verify passphrase:
Choisissez un mot de passe sécurisé ( https://xkcd.com/936/ )
Ouvrir le nouveau système chiffré
cryptsetup luksOpen /dev/nvme0n1p2 crypt
# Enter passphrase for /dev/nvme0n1p2:
pvcreate /dev/mapper/crypt
# Physical volume "/dev/mapper/crypt" successfully created.
vgcreate vg0 /dev/mapper/crypt
# Volume group "vg0" successfully created
Une bonne taille de départ pour le volume racine (lvroot) est d’environ 30 Go. Si vous envisagez d’utiliser ultérieurement un fichier d’échange résidant sur root, vous devez en tenir compte.
Le redimensionnement ultérieur des volumes est assez facile, alors n’y réfléchissez pas trop.
Vous pouvez attribuer tout l’espace libre restant au volume d’accueil,
lvcreate --extents 100%FREE vg0 -n lvhome
mais pour augmenter les volumes plus tard et pour les instantanés , il faut de l’espace vide à l’intérieur du groupe de volumes, donc je choisis généralement une taille pour lvhome qui laisse environ 30 Go d’espace inutilisé global dans le volume groupe (en supposant un lecteur de 500 Go, par exemple 500 – 0,512 – 40 – 430 = 29,488)
# 40G root dont 8 swapfile
lvcreate -L 40G vg0 -n lvroot # Logical volume "lvroot" created.
lvcreate -L 150G vg0 -n lvhome # Logical volume "lvhome" created.
lvcreate -L 300G vg0 -n lvmedia # Logical volume "lvmedia" created.
#lvcreate -l 100%FREE vg0 -n lvhome # Logical volume "lvhome" created.
Créez un système de fichiers ext4 sur les volumes logiques.
mkfs.ext4 -L root /dev/mapper/vg0-lvroot
mkfs.ext4 -L home /dev/mapper/vg0-lvhome
mkfs.ext4 -L home /dev/mapper/vg0-lvmedia
Monter le nouveau système sur /mnt
pour les systèmes UEFI
mount /dev/mapper/vg0-lvroot /mnt
mkdir -p /mnt/home
mount /dev/mapper/vg0-lvhome /mnt/home
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
lsblk
devrait maintenant fournir une sortie similaire à la suivante (ignorez les tailles, celles-ci proviennent d’une installation de test) …
pour les systèmes UEFI :
nvme0n1 259:0 0 1.9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /mnt/efi
├─nvme0n1p2 259:2 0 1.8T 0 part
│ └─crypt 254:3 0 1.8T 0 crypt
│ ├─vg0-lvroot 254:4 0 40G 0 lvm /mnt
│ ├─vg0-lvhome 254:5 0 150G 0 lvm /mnt/home
│ └─vg0-lvmedia 254:6 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22.2G 0 part
└─crypttemp 254:2 0 22.2G 0 crypt /media/crypttemp
pour remplir les nouveaux points de montage
rsync -avA /media/crypttemp/ /mnt
Veuillez patienter quelques minutes
umount /media/crypttemp
cryptsetup luksClose crypttemp
lsblk
nvme0n1 259:0 0 1.9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /mnt/efi
├─nvme0n1p2 259:2 0 1.8T 0 part
│ └─crypt 254:3 0 1.8T 0 crypt
│ ├─vg0-lvroot 254:4 0 40G 0 lvm /mnt
│ ├─vg0-lvhome 254:5 0 150G 0 lvm /mnt/home
│ └─vg0-lvmedia 254:6 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22.2G 0 part
Configuration /etc/crypttab
cryptsetup luksUUID /dev/nvme0n1p2
renvoie 5fa90f9d-ac40-4c70-8f58-730a423ce76b
Votre UUID sera différent, alors **assurez-vous d'utiliser votre UUID à l'étape suivante !**
nano /mnt/etc/crypttab
contient une ligne non commentée commençant par luks-
…
Remplacez cette ligne par la suivante ; **n'oubliez pas d' utiliser votre UUID**
cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b none luks
Sauvegarder et quitter.
Passer en chroot
arch-chroot /mnt
le prompt [root@EndeavourOS /]#
Configurer /etc/fstab
blkid -s UUID -o value /dev/mapper/vg0-lvroot
renvoie l’UUID du volume racine : 04b9e250-1fcd-485b-989f-e753c89bf60f.
blkid -s UUID -o value /dev/mapper/vg0-lvhome
renvoie l’UUID du volume d’accueil : c35a3f8b-583b-4952-9ceb-f9a19194fa6c.
nano /etc/fstab
contient une ligne commençant par /dev/mapper/luks-
…
Supprimez cette ligne et ajoutez ce qui suit (**n'oubliez pas d' utiliser vos UUID**)
UUID=04b9e250-1fcd-485b-989f-e753c89bf60f / ext4 noatime 0 0
UUID=c35a3f8b-583b-4952-9ceb-f9a19194fa6c /home ext4 noatime 0 0
Sauvegarder et quitter.
Dans systemd-boot, vous éditez le fichier d’entrée approprié qui se trouve sur votre partition EFI dans le répertoire loader/entries
Chaque entrée est une option de démarrage dans le menu et chacune a une ligne appelée options. Vous pouvez modifier ces entrées directement, mais ces changements peuvent être écrasés lors de l’installation ou de la mise à jour de paquets.
UUID de /dev/nvme0n1p2 : blkid -s UUID -o value /dev/nvme0n1p2
Pour effectuer les changements, au lieu de modifier les entrées, modifiez le fichier /etc/kernel/cmdline
qui est un fichier d’une ligne contenant une liste d’options du noyau.
nano /etc/kernel/cmdline
nvme_load=YES nowatchdog rw rd.luks.uuid=5fa90f9d-ac40-4c70-8f58-730a423ce76b root=/dev/mapper/vg0-lvroot
Exécutez ensuite sudo reinstall-kernels
qui remplira les entrées et régénérera les initrds.
reinstall-kernels
exit
umount -R /mnt
Oter la clé USB , redémarrer
reboot
FINI! Vous devriez maintenant avoir un système LVMonLUKS fonctionnel avec un volume logique séparé pour /home
La partition est chiffrée
Au message “Please enter passphrase for disk endeavouros…”, saisir la phrase mot de passe pour déchiffrer le disque
Activer et lancer le service
sudo systemctl enable sshd --now
Autoriser ssh
sudo firewall-cmd --zone=public --add-port=22/tcp
Relever adresse : ip a
–> 192.168.0.37
Se connecter depuis un poste sur le même réseau: ssh yann@192.168.0.37
Modifier sudoers pour accès sudo sans mot de passe à l’utilisateur yano
su # mot de passe root identique utilisateur
echo "yann ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-yann
exit # sortie su
Ajoutez la recherche d’historique de la ligne de commande au terminal
Se connecter en utilisateur
Tapez un début de commande précédent, puis utilisez shift + up (flèche haut) pour rechercher l’historique filtré avec le début de la commande.
# Global, tout utilisateur
echo '"\e[1;2A": history-search-backward' | sudo tee -a /etc/inputrc
echo '"\e[1;2B": history-search-forward' | sudo tee -a /etc/inputrc
Liste : lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
└─sda1 8:1 0 111,8G 0 part
└─ssd--120-lv120 254:1 0 111,8G 0 lvm
sdb 8:16 0 476,9G 0 disk
└─sdb1 8:17 0 476,9G 0 part
└─ssd--512-virtuel 254:0 0 476,9G 0 lvm
nvme0n1 259:0 0 1,9T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /efi
├─nvme0n1p2 259:2 0 1,8T 0 part
│ └─cryptlvm 254:2 0 1,8T 0 crypt
│ ├─vg0-lvroot 254:3 0 40G 0 lvm /
│ ├─vg0-lvhome 254:4 0 150G 0 lvm /home
│ └─vg0-lvmedia 254:5 0 300G 0 lvm
└─nvme0n1p3 259:3 0 22,2G 0 part
Créer les points de montage
sudo mkdir -p /srv/media
sudo chown $USER:$USER /srv/media
sudo mkdir -p /mnt/{ssd,sharenfs,FreeUSB2To}
sudo chown $USER:$USER /mnt/{ssd,sharenfs,FreeUSB2To}
sudo mkdir -p /virtuel
sudo chown $USER:$USER /virtuel
Relever les UUID des unités : sudo blkid
/dev/mapper/ssd--120-lv120: UUID="6b48e98c-9b85-461b-9371-040765aae682" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme0n1p3: UUID="1a64bf47-fa14-4c9f-b8c4-7c3484f60e94" TYPE="crypto_LUKS" PARTLABEL="endeavouros" PARTUUID="22e5c948-0f32-44d2-9040-cde9534e34e7"
/dev/nvme0n1p1: UUID="E522-8D8D" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="114324a5-4aa7-4ee5-a57e-8568ac5f2f74"
/dev/nvme0n1p2: UUID="5fa90f9d-ac40-4c70-8f58-730a423ce76b" TYPE="crypto_LUKS" PARTUUID="c9640813-16da-4fde-87f6-98a5620e7b72"
/dev/sdb1: UUID="AYko64-7Ysg-IK1P-2hCq-9MUo-VjQl-4NOuWY" TYPE="LVM2_member" PARTUUID="19dd6163-01"
/dev/mapper/vg0-lvhome: LABEL="home" UUID="c35a3f8b-583b-4952-9ceb-f9a19194fa6c" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/cryptlvm: UUID="LwRekN-16qI-L1Nf-WfEY-OLgo-rd3A-XTE3Fg" TYPE="LVM2_member"
/dev/mapper/ssd--512-virtuel: UUID="84bc1aa9-23ac-4530-b861-bc33171b7b42" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda1: UUID="o2NaLz-2Biv-Dx3C-LYJD-vuyp-1Ogl-Oa4Iu2" TYPE="LVM2_member" PARTLABEL="Linux LVM" PARTUUID="3eee16e4-fe68-42bf-861a-cd9e46d22805"
/dev/mapper/vg0-lvmedia: LABEL="home" UUID="0e48444f-104c-4ba0-8b55-5d38ea0583ee" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg0-lvroot: LABEL="root" UUID="04b9e250-1fcd-485b-989f-e753c89bf60f" BLOCK_SIZE="4096" TYPE="ext4"
Ajout au fichier /etc/fstab
# /dev/mapper/vg0-lvmedia
UUID=0e48444f-104c-4ba0-8b55-5d38ea0583ee /srv/media ext4 rw,relatime 0 2
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /virtuel ext4 defaults 0 2
# /dev/mapper/ssd--120-lv120
UUID=6b48e98c-9b85-461b-9371-040765aae682 /mnt/ssd ext4 defaults 0 2
Recharger et monter les unités
sudo systemctl daemon-reload
sudo mount -a
Restauration des données /srv/data
sudo -s
rsync -avA /mnt/ssd/lvmedia/ /srv/media
Les dossiers musicyan et dplus sont ailleurs
mkdir /srv/media/{musicyan,dplus}
sudo -s
rsync -avA /virtuel/musicyan/* /srv/media/musicyan/
rsync -avA /virtuel/dplus/* /srv/media/dplus/
Suppression des dossiers de sauvegardes
sudo rm -r /mnt/ssd/lvmedia
sudo rm -r /virtuel/{musicyan,dplus}
Mode terminal
yay -Syu
Mode graphique
Créer une interface de pont
nmcli connection add type bridge con-name bridge0 ifname bridge0
Connexion « bridge0 » (c692299c-5076-4b84-adfb-913e154ebf46) ajoutée avec succès.
Affichez les interfaces réseau et notez les noms des interfaces que vous souhaitez ajouter au pont
nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connexion (obtention de la configuration IP) bridge0
lo loopback connecté (en externe) lo
wg0-mullvad wireguard connecté (en externe) wg0-mullvad
enp3s0f0 ethernet déconnecté --
enp3s0f1 ethernet indisponible --
Attribuer les interfaces au pont.
Si les interfaces que vous souhaitez affecter au pont ne sont pas configurées, créez de nouveaux profils de connexion pour elles
nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp3s0f0 master bridge0
Connexion « bridge0-port1 » (34425bb4-3d61-4e6c-81c1-6f76ffe78539) ajoutée avec succès.
Paramétrage pont
nmcli connection modify bridge0 ipv4.addresses '192.168.10.2/24' ipv4.gateway '192.168.10.1' ipv4.method manual
nmcli connection modify bridge0 ipv6.method disabled
Activer la connexion pont
nmcli connection up bridge0
Connexion activée (controller waiting for ports) (Chemin D-Bus actif : /org/freedesktop/NetworkManager/ActiveConnection/6)
Vérifiez que les ports sont connectés et que la colonne CONNECTION affiche le nom de connexion du port
nmcli device
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connecté bridge0
enp3s0f0 ethernet connecté bridge0-port1
lo loopback connecté (en externe) lo
enp3s0f1 ethernet indisponible --
L’ordinateur de bureau PC1 a 3 cartes réseau
Souvent, les périphériques intégrés disposent de plusieurs interfaces réseau disponibles simultanément, comme les routeurs réseau dotés d’interfaces filaires et sans fil. Ces périphériques doivent pouvoir sélectionner automatiquement une interface réseau préférée. Pour y parvenir sur une machine Linux, chaque interface possède une valeur métrique qui indique le coût d’utilisation de l’interface. (Changing the Network Routing Metric Permanently)
La connexion au réseau 192.168.0.0/24 via NetworkManager ne se fait pas correctement car il peut se connecter au réseau 192.168.10.0/24
Il faut donner la priorité au réseau 192.168.0.0/24
Commande nmcli device
enp0s31f6 ethernet connecté eth_enp0s31f6
bridge0 bridge connecté bridge0
enp3s0f0 ethernet connecté bridge0-port1
...
Obtenir la valeur métrique
Obtenons la valeur métrique initiale de nos interfaces réseau.
Pour cela, nous utilisons la commande suivante
ip route
default via 192.168.0.254 dev enp0s31f6 proto static metric 100
default via 192.168.10.1 dev bridge0 proto static metric 425
...
Il s’agit de la table de routage pour les interfaces enp0s31f6 et bridge0
A la fin de chaque ligne, nous pouvons voir une valeur métrique
Modifier la valeur métrique
Commande nmcli pour modifier la valeur métrique de l’ interface
sudo nmcli connection modify 'eth_enp0s31f6' ipv4.route-metric 10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
La connexion avec une nouvelle valeur métrique est désormais active.
Si nous vérifions la table de routage, nous devrions pouvoir voir la nouvelle valeur métrique
ip route
default via 192.168.0.254 dev enp0s31f6 proto static metric 10
default via 192.168.10.1 dev bridge0 proto static metric 425
...
L’ interface enp0s31f6 a désormais une valeur métrique de 10
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
sudo chown -R root:root /root/.smbcredentials
sudo chmod -R 600 /root/.smbcredentials
Les fichiers systèmes
# /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
sudo systemctl enable mnt-FreeUSB2To.automount --now
PC1
Points de montage : sudo mkdir -p /mnt/sharenfs
Lien : sudo ln -s /mnt/sharenfs $HOME/sharenfs
Ajouter les points de montage du serveur nfs au fichier /etc/fstab
# Les montage NFS du serveur lenovo 192.168.0.215
192.168.0.215:/sharenfs /mnt/sharenfs nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192 0 0
Rechargement et montage
sudo systemctl daemon-reload && sudo mount -a
Points de montage : sudo mkdir -p /mnt/nfs-ssd
Lien : sudo ln -s /mnt/nfs-ssd $HOME/nfs-ssd
Ajouter les points de montage du serveur nfs au fichier /etc/fstab
192.168.0.215:/mnt/nfs-ssd /mnt/nfs-ssd nfs4 nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10s,rsize=8192,wsize=8192 0 0
Rechargement et montage
sudo systemctl daemon-reload && sudo mount -a
Les dossiers et Liens sur les autres unités et les dossiers .keepassx
, Notes
, scripts
statique/images
et statique/_posts
sudo mkdir -p /srv/media/{Notes,statique}
sudo mkdir -p /srv/media/statique/{images,_posts}
sudo ln -s /srv/media $HOME/media
sudo mkdir -p /virtuel
sudo ln -s /virtuel $HOME/virtuel
mkdir -p ~/{.ssh,.keepassx}
sudo mkdir -p /mnt/sharenfs/scripts
sudo chown $USER:$USER -R /mnt/sharenfs/scripts
Créer liens sharenfs
ln -s /mnt/sharenfs/pc1/.borg $HOME/Private/.borg
ln -s /mnt/sharenfs/scripts $HOME/scripts
Liens “statique” et “Notes”
les liens pour la rédaction des posts markdown et le dossier des fichiers
# Lien pour affichage des images avec éditeur Retext
sudo ln -s /srv/media/statique/images /images
# Lien pour les fichiers autres
sudo ln -s /srv/media/statique/files /files
Dossiers Documents et Musique
Supprimer les dossiers par défaut Documents et Musique et créer des liens
# suppression Documents et Musique
sudo rm -r $HOME/Documents
sudo rm -r $HOME/Musique
#Création des liens
sudo ln -s /srv/media/Documents $HOME/Documents
sudo ln -s /mnt/sharenfs/Musique $HOME/Musique
Mode graphique
Résumé
On déplace le tableau de bord du bas vers le haut de l’écran
Gestion des 2 écrans
Modification du tableau de bord , clic-droit → Tableau de bord → Préférences de tableau de bord → Eléments
Affichage date et heure
ou format personnalisé dans Horloge : %e %b %Y %R
Gestionnaire d’alimentation
Supprimer icône alimentation dans la barre des tâches
Apparence
Economiseur d’écran
Deux cartes réseau sont installés
Utilise lightdm-slick-greeter
Un greeter basé sur GTK plus axé sur l’apparence que lightdm-gtk-greeter
Les paramètres sont dans le fichier /etc/lightdm/slick-greeter.conf
[Greeter]
background=/srv/media/dplus/images/Fonds/wp2618258.jpg
draw-user-backgrounds=false
draw-grid=false
theme-name=Arc-Dark
icon-theme-name=Qogir
cursor-theme-name=Qogir
cursor-theme-size=16
show-a11y=false
show-power=false
background-color=#000000
Démarre auto ou pas de la session, modifier le fichier /etc/lightdm/lightdm.conf
‘, (début ligne sans ou avec commentaire #
)
sudo nano /etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=yann
Ecran principal pour la fenêtre de connexion : EndeavourOS XFCE - LightDM sur les systèmes multi-affichages
Si vous changez l’image de fond, il désactiver draw-grid
background=/usr/share/endeavouros/backgrounds/light_sky_stars_85555_1366x768_yano.jpg
draw-grid=false
Description
Au final nous aurons 4 “slot” utilisés
Installer librairie libfido2 pour la prise en charge des clés Yubico et SoloKeys
sudo pacman -S libfido2
Vérifier que la YubiKey est insérée dans un port USB
Lister et enroler la yubikey
sudo systemd-cryptenroll --fido2-device=list
PATH MANUFACTURER PRODUCT
/dev/hidraw5 Yubico YubiKey OTP+FIDO+CCID
Enroler la clé pour le déverrouillage du disque chiffré nvme0n1p2
sudo systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: *********************
Requested to lock with PIN, but FIDO2 device /dev/hidraw5 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
Retirer la première clé et répéter l’opération ci-dessus pour les autres clés
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 :
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: ***********
A secret recovery key has been generated for this volume:
🔐 vbcrnbjn-vkrkihte-rctbufne-nlihihjl-tegudteu-rkjthcgd-hvhuvgik-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.
Lister la clé
systemd-cryptenroll --fido2-device=list
PATH MANUFACTURER PRODUCT
/dev/hidraw4 SoloKeys Solo 4.1.5
Ajout de la solokeys
sudo systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2
🔐 Please enter current passphrase for disk /dev/nvme0n1p2: ***********
Requested to lock with PIN, but FIDO2 device /dev/hidraw1 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 3.
Lors du boot , le S de la SoloKeys passe au ROUGE et il suffit d’appuyer sur le voyant pour qu’il repasse au vert afin de lancer le processus de déchiffrement et finir le démarrage
Les options timeout de crypttab
timeout=
Spécifie le délai d'attente pour la demande d'un mot de passe. Si aucune unité
n'est spécifiée, l'unité utilisée est la seconde. Les unités prises en charge sont s, ms, us,
min, h, d. Un délai de 0 permet d'attendre indéfiniment (valeur par défaut).
token-timeout=
Spécifie le temps d'attente maximum pour que les dispositifs de sécurité configurés (c'est-à-dire FIDO2, PKCS#11, TPM2) apparaissent.
configurés (c'est-à-dire FIDO2, PKCS#11, TPM2). Prend une valeur
en secondes (mais d'autres unités de temps peuvent être spécifiées,
voir systemd.time(7) pour les formats supportés). La valeur par défaut est 30s.
Une fois le délai spécifié écoulé, l'authentification par
mot de passe est tentée. Notez que ce délai s'applique à
l'attente de l'apparition du dispositif de sécurité - il ne s'applique pas
ne s'applique pas à la demande de code PIN pour le dispositif (le cas échéant)
ou autre. Passez 0 pour désactiver le délai et attendre indéfiniment.
Configurer /etc/crypttab pour la prise en charge des clés
sudo nano /etc/crypttab
# <name> <device> <password> <options>
#cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b /crypto_keyfile.bin luks
cryptlvm UUID=5fa90f9d-ac40-4c70-8f58-730a423ce76b - fido2-device=auto,token-timeout=20s
token-timeout=20s
–> Si aucune clé n’est connectée , le mot de passe devra être saisi après 20 secondes de délai
Sauvegarder et quitter.
Réinitialiser
sudo reinstall-kernels
Redémarrer la machine
Plymouth - Processus de démarrage graphique
On commence par tout ce qui est graphique : gimp, cups (gestion de l’imprimante) et hplip (si vous avez une imprimante scanner Hewlett Packard). Le paquet python-pyqt5 est indispensable pour l’interface graphique de HPLIP+scan. Webkigtk2 étant indispensable pour la lecture de l’aide en ligne de Gimp. outil rsync, Retext éditeur markdown, firefox fr, thunderbird, libreoffice, gdisk, bluefish, Double Commander , Menulibre pour la gestion des menus , outils android clementine
yay -S cups system-config-printer gimp hplip libreoffice-fresh-fr thunderbird-i18n-fr jq figlet p7zip tmux calibre retext bluefish gedit doublecmd-gtk2 terminator filezilla minicom zenity android-tools yt-dlp qrencode zbar xclip nmap jre-openjdk-headless openbsd-netcat borg xterm gparted tigervnc xournalpp qbittorrent ldns strawberry
# Autres avec compilation
yay -S freetube-bin signal-desktop xsane
# Gestion des menus du bureau, construction du paquet avant installation
yay -S menulibre
Fichier de configuration ~/.config/ReText project/ReText.conf
[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
Fichier retext.qss
QTextEdit {
color: black;
background-color: white;
}
Paramétrage de l’application terminale minicom
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
Copie écran (flameshot)
Flameshot c’est un peu THE TOOL pour faire des captures d’écrans
yay -S flameshot
Lancer l’application XFCE 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
Utilise adb et le port USB
yay -S scrcpy
Installation client nextcloud
yay -S nextcloud-client libgnome-keyring gnome-keyring
Démarrer le client nextcloud , après avoir renseigné l’url ,login et mot de passe pour la connexion
Trousseau de clé avec mot de passe idem connexion utilisateur
Paramétrage
Saisir les différents dossiers à synhroniser
Au prochain redémarrage, il faudra confirmer le mot de passe du trousseau
Ajouter une synchronisation de dossier nextcloud : /home/yann/.keepassx (local) → Home/.keepasx (serveur)
Installer keepassxc
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
Affichage → Thème : Sombre
Affichage → Mode compact , un redémarrage de l’application est nécessaire
Déverrouillage avec clé matérielle
SSHFS sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion SSH, le tout avec des droits utilisateur.
Installer paquet SSHFS
sudo pacman -S sshfs
sshfs est installé par défaut sur la distribution EndeavourOS
Création des partages utilisés par sshfs (facultatif)
mkdir -p $HOME/vps/{borgbackup,lxc,vdb,xoyaz.xyz,xoyize.xyz}
Exemple de montage manuel
sshfs -oIdentityFile=<clé privée> utilisateur@domaine.tld:<dossier distant> <dossier local> -C -p <port si dfférent de 22>
Double Commander est un gestionnaire de fichiers open source multiplateforme avec deux panneaux côte à côte. Il s’inspire de Total Commander
Application GTK
yay -S doublecmd-gtk2
Les paramètres sont stockés dans le dossier ~/.config/doublecmd
Lancer thunderbird à l’ouverture de session xfce
Paramètres → Session et démarrage → Démarrage automatique d’application
Ajouter thunderbird aux favoris et lancer
Dans le fichier ~/.bashrc
alias
alias ls='ls --color=auto'
alias ll='ls -lav --ignore=..' # show long listing of all except ".."
alias l='ls -lav --ignore=.?*' # show long listing but no hidden dotfiles except "."
alias aide='xdg-open https://static.rnmkcy.eu/aide-jekyll-text-theme.html#autres-styles'
alias android='/home/yann/virtuel/KVM/bliss.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/yann/scripts/borglist.sh'
alias calibreraz='adb -s CNBT80D20191101145 shell -x rm /sdcard/Document/metadata.calibre'
alias certok='/home/yann/scripts/ssl-cert-check'
alias compress='/home/yann/scripts/compress'
alias dnsleak='/home/yann/scripts/dnsleaktest.py'
alias findh='cat /home/yann/scripts/findhelp.txt'
alias homer="ssh bookvm@192.168.0.225 -p 55215 -i /home/yann/.ssh/vm-debian12 '/home/bookvm/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/yann/scripts/sav-yann-media.sh'
alias mediajour='/usr/bin/journalctl --no-pager -t sauvegardes --since today'
alias nmapl='sudo nmap -T4 -sP 192.168.0.0/24'
alias odt2html='/home/yann/scripts/_odt2html+index'
alias odtprivate='/home/yann/scripts/_odt2html+index_private'
alias orphelin='sudo pacman -Rsn $(pacman -Qdtq)'
alias otp='/home/yann/scripts/generer-code-2fa-vers-presse-papier-toutes-les-30s.sh'
alias ovh="ssh leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519 'cd /home/leno/ovh_api/; /home/leno/ovh_api/ApiOvh/bin/python domain.py xoyize.xyz cinay.eu xoyaz.xyz ouestline.xyz rnmkcy.eu yanfi.net icevps.xyz xoyize.net iceyan.xyz; cd /home/leno'"
alias rename='/home/yann/scripts/remplacer-les-espaces-accents-dans-une-expression.sh'
alias service='systemctl --type=service'
alias sshm='/home/yann/scripts/ssh-manager.sh'
alias ssl='/home/yann/scripts/ssl-cert-check'
alias static='cd /home/yann/media/yannstatic; /home/yann/.rbenv/shims/bundle exec jekyll build -d /home/yann/media/yannstatic/static; cd ~'
alias status='/home/yann/scripts/status.sh'
alias synchro='journalctl --user -u media_yannstatic_site.service --no-pager --since today'
alias toc='/home/yann/scripts/toc/toc.sh'
alias tocplus='/home/yann/scripts/toc/tocplus.sh'
alias tracesgpx="ssh bookvm@192.168.0.225 -p 55215 -i /home/yann/.ssh/vm-debian12 'tracesgpxnew /home/bookvm/media/osm-new/file'"
alias traduc='/usr/local/bin/trans'
alias vncasus='sh /home/yann/scripts/vncasus.sh'
alias vncdell='sh /home/yann/scripts/vncdell.sh'
alias vncmarina='sh /home/yann/scripts/vncmarina.sh'
alias wgiceyan='sh /home/yann/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'
nous rechargeons le fichier pour appliquer les modifications
source ~/.bashrc
Prérequis , paquets cups cups-filters cups-pdf system-config-printer hplip installés (Pilotes HP pour DeskJet, OfficeJet, Photosmart, Business Inkjet et quelques modèles de LaserJet aussi bien qu’un certain nombre d’imprimantes Brother)…
Installer graphiquement l’imprimante
Pour contourner le problème , éditer le fichier /etc/nsswitch.conf
Ajouter mdns_minimal [NOTFOUND=return]
avant resolve
hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
Après correctif
Avec cups : http://localhost:631/
Installation du scanner
Coté logiciel il vous faudra sane et son interface graphique xsane, ainsi qu’éventuellement xsane-gimp le plugin pour gimp.
yay -S xsane xsane-gimp
Vérifier si le scaner est reconnu : sudo scanimage -L
device `escl:https://192.168.0.24:443' is a HP OfficeJet 7510 series [C22036] platen,adf scanner
device `hpaio:/net/officejet_7510_series?ip=192.168.0.24&queue=false' is a Hewlett-Packard officejet_7510_series all-in-one
Test scan, placer un original pour photocopie
scanimage --device hpaio:/net/officejet_7510_series?ip=192.168.0.24 --format=png > test.png
Floorp est un navigateur basé sur Firefox qui bloque les traceurs malveillants, offre une mise en page flexible et personnalisable, et ne collecte pas les données des utilisateurs. Découvrez ses fonctionnalités, ses thèmes, ses mises à jour et son code source ouvert.
yay -S floorp-bin
Ensemble d’applications basé sur ruby et jekyll qui permet la génération de site statique à partir de fichiers markdown
Installation sur archlinux
sudo pacman -S ruby ruby-erb base-devel
Pour ne pas installer les paquets RubyGems (appelés gems) en tant qu’utilisateur root. A la place, mettez en place un répertoire d’installation de gem pour votre compte utilisateur.
Les commandes suivantes ajoutent des variables d’environnement à votre fichier ~/.bashrc pour configurer le chemin d’installation des gems
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Puis, installer Jekyll et Bundler
gem install jekyll bundler
Les versions installées
Suite installation –> yannstatic - générateur site statique
Ntfy, qui se prononce “notify”, est un service de notification ultra léger, permettant d’envoyer des messages vers un smartphone ou un ordinateur via de simples scripts, sans besoin de compte et totalement gratuitement !
yay -S ntfy-bin
FreetuxTV est une application qui permet de regarder et enregistrer facilement les chaînes de télévision sous GNU/Linux et les chaînes de télévision de votre fournisseur d’accès internet.
En mode su
echo "192.168.0.254 mafreebox.freebox.fr" >> /etc/hosts
Installation
sudo pacman -S freetuxtv
Paramétrage du parefeu firewalld (Configuration de firewalld pour le multicast VLC freebox)
Créer les services /etc/firewalld/services//mafreebox.xml et /etc/firewalld/services//vlc.xml pour firewalld
mafreebox.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>mafreebox</short>
<description>Permission pour mafreebox et vlc</description>
<port protocol="udp" port=""/>
</service>
vlc.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>vlc2</short>
<description>Permission pour mafreebox et vlc</description>
<port protocol="udp" port="15947"/>
<destination ipv4="228.67.43.91"/>
</service>
Les ajouter à la zone public pour rendre ces règles permanentes
/etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="ipp-client"/>
<service name="mdns"/>
<service name="ipp"/>
<service name="mafreebox"/>
<service name="vlc"/>
<forward/>
</zone>
Recharger le parefeu
firewall-cmd --reload
sudo cp ~/virtuel/etc-libvirt-qemu/*.xml /etc/libvirt/qemu/
Déclarer le pont (bridge) à KVM
Créer un fichier de définition de réseau au format XML : nano router-tenda.xml
<network>
<name>router-tenda</name>
<forward mode="bridge"/>
<bridge name="bridge0" />
</network>
Appliquer la configuration :
sudo virsh net-define router-tenda.xml # -> Réseau host-tenda défini depuis router-tenda.xml
sudo virsh net-start router-tenda # -> Réseau router-tenda démarré
sudo virsh net-autostart router-tenda # -> Réseau router-tenda marqué en démarrage automatique
Vérification
sudo virsh net-list --all
Nom État Démarrage automatique Persistant
-------------------------------------------------------------
router-tenda actif oui oui
La structure libvirt
# Les configurations xml
[root@pc1 yann]# tree -L 2 /etc/libvirt/qemu
/etc/libvirt/qemu
├── autostart
│ └── vm-debian12.xml -> /etc/libvirt/qemu/vm-debian12.xml
├── EndeavourOS.xml
├── networks
│ ├── autostart
│ ├── default.xml
│ └── router-tenda.xml
└── win11.xml
# les images sous KVM
[yann@pc1 ~]$ tree -L 2 ~/virtuel/
/home/yann/virtuel/
├── eos
│ └── eos-chiffre_luks_backup.bin
├── KVM
│ ├── eos-lvm-luks-1.qcow2
│ └── wineleven.qcow2
├── KVM_SAV
│ ├── etc-libvirt-qemu
│ └── images_qcow2
└── nspawn
└── nspbullseye
Wing personal python IDE → Téléchargement
# Décompression de la version téléchargée
tar xjvf wing-personal-10.0.6.0-linux-x64.tar.bz2
# Passage en root
sudo -s
# Lancement procédure installation
cd wing-personal-10.0.6.0-linux-x64
./wing-install.py
Déroulement de la commande
Where do you want to install the support files for Wing Personal (default
= /usr/local/lib/wing-personal9)?
/usr/local/lib/wing-personal9 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)?
[...]
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-personal9" to start Wing Personal.
Effacer les fichiers
# Suppression dossier et fichier
cd ..
rm -rf wing-personal*
# sortie root
exit
Archlinux Go
yay -S go
go version
go version go1.23.2 linux/amd64
Archlinux Node.js npm
yay -S nodejs npm
node --version && npm --version
v22.9.0
10.8.3
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
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
source ~/.bashrc
Vérifier
nvm --version
0.39.2
Installer Node.js avec NVM
Pour lister toutes les versions disponibles Node.js
nvm list-remote
Vous obtiendrez une liste de toutes les versions
v20.17.0 (LTS: Iron)
v20.18.0 (Latest LTS: Iron)
v22.2.0
v22.3.0
v22.4.0
v22.4.1
v22.5.0
v22.5.1
v22.6.0
v22.7.0
v22.8.0
v22.9.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 18.10.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 19.0.0
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 si installé : java --version
openjdk 22.0.2 2024-07-16
OpenJDK Runtime Environment (build 22.0.2+9)
OpenJDK 64-Bit Server VM (build 22.0.2+9, mixed mode, sharing)
Installation
yay -S dbeaver
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é): 4
recherche des conflits entre paquets…
:: jre-openjdk - 22.0.2.u9-1 et jre-openjdk-headless - 22.0.2.u9-1 sont en conflit. Supprimer jre-openjdk-headless ? [o/N] o
Résumé des commandes en mode su
pacman -S mariadb
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl enable mariadb --now
systemctl status --no-pager --full mariadb --full
Sécuriser
sudo mysql_secure_installation
Installation sur archlinux yay -S postgresql
Relever version postgres --version
postgres (PostgreSQL) 16.3
Configurer le serveur PostgreSQL
Pour configurer le serveur PostgreSQL sur Arch Linux, vous devez installer le paquetage Postgresql. Ensuite, vous pouvez démarrer le service en initialisant le cluster de base de données. Vous pouvez définir un mot de passe pour le super-utilisateur et créer des bases de données et des tables.
Comme nous avons déjà installé PostgreSQL, nous devons maintenant le configurer. Pour cela, passez d’abord à l’utilisateur Postgres avec cette commande :
sudo -iu postgres
Prompt : [postgres@pc1 ~]$
initialiser le répertoire pour les données.
PostgreSQL stockera ses données dans ce répertoire. Vous pouvez utiliser l’emplacement par défaut /var/lib/postgres/data
ou en choisir un autre.
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/'
Démarrer et activer PostgreSQL
sudo systemctl enable postgresql --now
Vérifier : systemctl status postgresql
Pour accéder
psql -U postgres
Pour importer une base SQL
# Créer une base
psql -U postgres -c "CREATE DATABASE ttrss"
# Importer
psql -U postgres ttrss < nom_fichier.sql
OPTIONS
Vous pouvez également activer les sommes de contrôle des données pour renforcer l’intégrité des données en ajoutant l’argument --data-checksums
à la commande précédente. Pour savoir si les sommes de contrôle des données sont activées, exécutez la commande suivante :
sudo -iu postgres
psql --tuples-only -c "SHOW data_checksums"
Pour initialiser le répertoire de données avec les sommes de contrôle activées
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/' --data-checksums
Cela créera un nouveau répertoire de données dans /var/lib/postgres/data/
avec la locale et l’encodage spécifiés. De plus, il effectue une vérification de la somme de contrôle des données pour chaque page écrite sur le disque. Cela permet de détecter les corruptions de données causées par un matériel défectueux.
Vous pouvez également modifier les méthodes d’authentification pour les connexions locales et distantes en ajoutant l’argument ci-dessous à la commande précédente :
--auth-local=peer --auth-host=scram-sha-256
La méthode par défaut est la confiance, ce qui signifie que n’importe qui sur l’hôte peut se connecter en tant qu’utilisateur de la base de données. Cette méthode n’étant pas très sûre, vous pouvez en utiliser une autre.
Sauvegardes locales avec systemd utilisateur service et timer
La sauvegarde démarre 3 minutes après la mise sous tension de PC1
Les logs : journalctl --user -u savyann.service
Liste des timers : systemctl --user list-timers --all
Liste paquets installés
Ce hook sauvegardera une liste de vos paquets natifs et étrangers (AUR) installés. Cela garantit que vous aurez toujours une liste à jour de tous vos paquets que vous pourrez réinstaller.
Prérequis pour la création du hook et des scripts, créez des sous-répertoires
sudo mkdir -p /etc/pacman.d/{hooks,hooks.bin}
Créez le hook
sudo nano /etc/pacman.d/hooks/50-pacman-list.hook
#/etc/pacman.d/hooks/50-pacman-list.hook
[Trigger]
Type = Package
Operation = Install
Operation = Upgrade
Operation = Remove
Target = *
[Action]
Description = Création liste des paquets installés
When = PostTransaction
Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /mnt/sharenfs/pc1/PC1_eos_pkg_list.txt'
Pour installer des paquets depuis une sauvegarde antérieure de la liste des paquets, tout en ne réinstallant pas ceux qui sont déjà installés et à jour, lancer:
sudo pacman -S --needed - < PC1_eos_pkg_list.txt
sudo pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
Remplacer M.2 2280 NVMe 1To par une 2To
Boot sur usb live EndeavourOS
Passer en mode su
Les partitions du disque chiffré nvme0n1
nvme0n1 259:0 0 931.5G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part
├─nvme0n1p2 259:2 0 920G 0 part
│ └─crypttemp 254:3 0 920G 0 crypt
│ ├─vg0-lvroot 254:4 0 70G 0 lvm
│ ├─vg0-lvhome 254:5 0 120G 0 lvm
│ └─vg0-lvmedia 254:6 0 600G 0 lvm
└─nvme0n1p3 259:3 0 11G 0 part
Déchiffrer la partition nvme0n1p2
cryptsetup luksOpen /dev/nvme0n1p2 crypttemp
Créer et monter le système à sauvegarder sur /media
mkdir -p /media
mkdir -p /media/home
mkdir -p /media/efi
mount /dev/vg0/lvroot /media
mount /dev/vg0/lvhome /media/home
mount /dev/nvme0n1p1 /media/efi
Monter le système qui va recevoir la sauvegarde
mount /dev/vg-nas-one/sav /mnt
mkdir -p /mnt/pc1
mkdir -p /mnt/pc1/efi
mkdir -p /mnt/pc1/home
Sauvegarder le système actuel (racine,home et efi)
rsync -avA /media/ /mnt/pc1
Patienter plusieurs minutes, suivant la taille
Arrêter la machine PC1
Remplacer la carte SSD M2
Redémarrer la machine sur un USB Live EndeavourOS
Zapper le nouveau disque SSD M.2
sgdisk --zap-all /dev/nvme0n1
Partitionnement du disque NVME 2To GPT + LVM
gdisk /dev/nvme0n1
Créer 2 partitions
Partition 1 : 512M EFI (code ef00) système de fichier FAT32
Partition 2 : le reste LVM (code 8e00) système de fichier EXT4
Formater partition EFI
mkfs.fat -F32 /dev/nvme0n1p1
Chiffrer la partition /dev/nvme0n1p2
cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
Ouvrir la partition chiffrée
cryptsetup luksOpen /dev/nvme0n1p2 crypt
Créer LVM
pvcreate /dev/mapper/crypt
vgcreate vg0 /dev/mapper/crypt
Créer les volumes
lvcreate -L 60G vg0 -n lvroot # Logical volume "lvroot" created.
lvcreate -L 120G vg0 -n lvhome # Logical volume "lvhome" created.
Système de fichier
mkfs.ext4 -L root /dev/mapper/vg0-lvroot
mkfs.ext4 -L home /dev/mapper/vg0-lvhome
Monter le nouveau système sur /mnt
mount /dev/mapper/vg0-lvroot /mnt
mkdir -p /mnt/home
mount /dev/mapper/vg0-lvhome /mnt/home
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
Monter la sauvegarde sur media
mount /dev/vg-nas-one/sav /media
Restaurer le système
rsync -avA /media/pc1/ /mnt
Patienter plusieurs minutes, suivant la taille
Création volume logique LVM media et montage
lvcreate -L 800G vg0 -n lvmedia
mkfs.ext4 -L media /dev/mapper/vg0-lvmedia
mkdir -p /mnt/srv/media
mount /dev/vg0/lvmedia /mnt/srv/media
Restaurer la sauvegarde multimedia
rsync -avA /media/pc1_20240201/media/srv/media/ /mnt/srv/media
Démonter le système de sauvegarde
umount /media
Ajouter un fichier de clé existant LUKS
cryptsetup luksAddKey /dev/nvme0n1p2 /mnt/crypto_keyfile.bin
Il faut saisir le phrase mot de passe
Configuration /etc/crypttab
cryptsetup luksUUID /dev/nvme0n1p2
Renvoie UUID ae37e59d-35f7-4920-8428-be8be8d15243
Modifier /mnt/etc/crypttab
Contenu
# <name> <device> <password> <options>
cryptlvm UUID=ae37e59d-35f7-4920-8428-be8be8d15243 /crypto_keyfile.bin luks
Passer en chroot
arch-chroot /mnt
Relever les UUID
blkid -s UUID -o value /dev/mapper/vg0-lvroot
renvoie l’UUID du volume racine : 2a6cab35-6c52-4382-9aee-06a376a8acc0
blkid -s UUID -o value /dev/mapper/vg0-lvhome
renvoie l’UUID du volume d’accueil : b4e52069-a8c9-459e-b39f-6ac1b682b0d6
blkid -s UUID -o value /dev/mapper/vg0-lvmedia
renvoie l’UUID du volume media : 1ca4bfc7-3d31-4859-aeb3-656214fab490
blkid -s UUID -o value /dev/nvme0n1p1
renvoie l’UUID du volume media : E5E4-A4AE
Configurer /etc/fstab
nano /etc/fstab
UUID=E5E4-A4AE /efi vfat defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
UUID=2a6cab35-6c52-4382-9aee-06a376a8acc0 / ext4 defaults,acl,noatime,discard 0 0
UUID=b4e52069-a8c9-459e-b39f-6ac1b682b0d6 /home ext4 defaults,acl,noatime,discard 0 0
/swapfile none swap defaults,pri=-2 0 0
# /dev/mapper/vg0-lvmedia
UUID=86a7c58c-8f30-42e2-bd39-d1ae7464c837 /srv/media ext4 rw,relatime 0 2
# /dev/mapper/ssd--512-virtuel
UUID=84bc1aa9-23ac-4530-b861-bc33171b7b42 /virtuel ext4 defaults 0 2
# /dev/mapper/vg--nas--one-sav
UUID=c5b9eefc-1daa-4a0d-8a72-6169b3c8c91f /sauvegardes ext4 defaults 0 2
# /dev/vg-nas-one/iso - Volume logique 200G du disque 4To
UUID=58f4b6c7-3811-41d5-9964-f47ac32375f6 /iso ext4 defaults 0 2
options du noyau
blkid -s UUID -o value /dev/nvme0n1p2 # --> ae37e59d-35f7-4920-8428-be8be8d15243
Modifier /etc/kernel/cmdline
nano /etc/kernel/cmdline
nvme_load=YES nowatchdog rw rd.luks.uuid=ae37e59d-35f7-4920-8428-be8be8d15243 root=/dev/mapper/vg0-lvroot
Réinstaller noyau
reinstall-kernels
Sortie du chroot , retirer la clé USB Live et reboot de la machine
En cas d’erreur de paquet ou signature PGP
sudo pacman -S endeavouros-keyring archlinux-keyring
Redémarrer la machine
Ajouter un alias dans le fichier ~/.bashrc
alias etat='$HOME/scripts/etat_des_lieux.sh'
Recharger et exécuter
source ~/.bashrc
etat
Exemple disque SSD 120Go
Disque sda
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111,8G 0 disk
gdisk
sudo gdisk /dev/sda
o : nouvelle partion dos
n : nouvelle partition typt LVM 8e00
Format fichier ext4
sudo mkfs.ext4 /dev/sda1
LVM (Logical Volume Manager, ou gestionnaire de volumes logiques en français) permet la création et la gestion de volumes logiques sous Linux. L’utilisation de volumes logiques remplace en quelque sorte le partitionnement des disques.
Volume physique : sudo pvcreate /dev/sda1
GroupevVolumes : sudo vgcreate ssd-120 /dev/sda1
Volume logique : sudo lvcreate -n lv120 -l +100%FREE ssd-120
Fichier ext4 : sudo mkfs.ext4 /dev/ssd-120/lv120
Relever UUID sudo blkid |grep lv120
/dev/mapper/ssd--120-lv120: UUID="6b48e98c-9b85-461b-9371-040765aae682" BLOCK_SIZE="4096" TYPE="ext4"
Création point de montage
sudo mkdir -p /mnt/ssd
Ajouter les lignes suivantes au fichier /etc/fstab
# /dev/mapper/ssd--120-lv120
UUID=6b48e98c-9b85-461b-9371-040765aae682 /mnt/ssd ext4 defaults 0 2
Rechargement et montage
sudo systemctl daemon-reload
sudo mount -a
Vérification : df -h /mnt/ssd/
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/ssd--120-lv120 110G 2,1M 104G 1% /mnt/ssd
Droits en écriture à l’utilisateur
sudo chown $USER:$USER /mnt/ssd/
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
nano ~/.config/systemd/user/media_BiblioCalibre_site.path
[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é :
nano ~/.config/systemd/user/media_BiblioCalibre_site.service
[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
Activer et lancer
systemctl --user enable media_BiblioCalibre_site.path --now
Voir le fichier journal
journalctl --user -f -u media_BiblioCalibre_site.service
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
On peut créer un accès graphique sur le poste archlinux
~/.local/share/applications/suivi_BiblioCalibre_site.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=Synchro BiblioCalibre
Comment=synchro site rnmkcy.eu
Icon=xterm-color_48x48
Exec=xterm -rv -geometry 250x30+10+50 -T suivi_BiblioCalibre_site -e 'journalctl --user -u media_BiblioCalibre_site.service --no-pager; read -p "Touche Entrée pour sortir..."'
Actions=
Categories=Utility;
Path=
Terminal=false
StartupNotify=false
BRouter est un moteur de routage conçu pour calculer des itinéraires optimaux en utilisant OpenStreetMap et des données d’élévation.
Comme alternative à la version en ligne, le serveur autonome de BRouter peut également être exécuté localement (https://github.com/nrenner/brouter-web).
Installer java
sudo apt install default-jre
Version : java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Debian-2deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Debian-2deb12u1, mixed mode, sharing)
Télécharger et décompresser la dernière archive autonome (brouter-web-standalone.<version>.zip
) à partir de https://github.com/nrenner/brouter-web/releases, par exemple pour Linux (remplacez ~/opt/
par votre répertoire d’installation préféré et 0.11.0
par la dernière version) :
sudo mkdir -p /opt/brouter
sudo chown $USER:$USER /opt/brouter
cd /opt/brouter
wget https://github.com/nrenner/brouter-web/releases/download/0.18.1/brouter-web-standalone.0.18.1.zip
unzip brouter-web-standalone.0.18.1.zip
rm brouter-web-standalone.0.18.1.zip
Télécharger un ou plusieurs fichiers de données rd5 depuis le download directory ou le grid map dans le répertoire /opt/segments4
.
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/W5_N45.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/E0_N50.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/E0_N45.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/E5_N45.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/E5_N40.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/E0_N40.rd5
wget -P /opt/brouter/segments4 https://brouter.de/brouter/segments4/W5_N40.rd5
Veuillez patienter quelques minutes…
Création d’un script /opt/brouter/srv.sh
, Port d’écoute 11955
#!/bin/sh
BINDADDRESS="localhost"
# BRouter standalone server
# java -cp brouter.jar btools.brouter.RouteServer <segmentdir> <profile-map> <customprofiledir> <port> <maxthreads> [bindaddress]
# maxRunningTime is the request timeout in seconds, set to 0 to disable timeout
JAVA_OPTS="-Xmx128M -Xms128M -Xmn8M -DmaxRunningTime=300"
# If paths are unset, first search in locations matching the directory structure
# as found in the official BRouter zip archive
CLASSPATH=${CLASSPATH:-"/opt/brouter/brouter.jar"}
SEGMENTSPATH=${SEGMENTSPATH:-"/opt/brouter/segments4"}
PROFILESPATH=${PROFILESPATH:-"/opt/brouter/profiles2"}
CUSTOMPROFILESPATH=${CUSTOMPROFILESPATH:-"/opt/brouter/customprofiles"}
java $JAVA_OPTS -cp $CLASSPATH btools.server.RouteServer "$SEGMENTSPATH" "$PROFILESPATH" "$CUSTOMPROFILESPATH" 11955 1 $BINDADDRESS
Le rendre exécutable
chmod +x /opt/brouter/srv.sh
Créer un service brouter
sudo nano /etc/systemd/system/brouter.service
[Unit]
Description=brouter server
[Service]
Type=exec
User=leno
WorkingDirectory=/opt/brouter
ExecStart=sh /opt/brouter/srv.sh
[Install]
WantedBy=multi-user.target
Recharger , activer et lancer le service brouter
sudo systemctl daemon-reload
sudo systemctl enable brouter --now
Vérifier : systemctl status brouter
● brouter.service - brouter server
Loaded: loaded (/etc/systemd/system/brouter.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-10-02 13:40:18 CEST; 32s ago
Main PID: 283776 (sh)
Tasks: 20 (limit: 14161)
Memory: 28.5M
CPU: 247ms
CGroup: /system.slice/brouter.service
├─283776 sh /opt/brouter/srv.sh
└─283778 java -Xmx128M -Xms128M -Xmn8M -DmaxRunningTime=300 -cp /opt/brouter/brouter.jar btools.server.RouteServer /opt/brouter/segments4 /opt/brouter/profiles2 /opt/brouter/customprofiles 11955 1 localhost
oct. 02 13:40:18 rnmkcy.eu systemd[1]: Starting brouter.service - brouter server...
oct. 02 13:40:18 rnmkcy.eu systemd[1]: Started brouter.service - brouter server.
oct. 02 13:40:18 rnmkcy.eu sh[283778]: BRouter 1.6.3 / 21122021
Proxy nginx brouter /etc/nginx/conf.d/routeur.rnmkcy.eu.conf
server {
# ipv4 listening port/protocol
listen 443 ssl http2;
# ipv6 listening port/protocol
listen [::]:443 ssl http2;
server_name routeur.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
location / {
proxy_pass http://127.0.0.1:11955 ;
}
}
Vérification et rechargement nginx
sudo nginx -t
sudo systemctl reload nginx
Cloner dans /sharenfs/rnmkcy/
cd /sharenfs/rnmkcy/
git clone https://github.com/gpxstudio/gpx.studio.git
Le code est divisé en deux parties:
gpx
: une bibliothèque de typescript pour parser et manipuler des fichiers GPX,site web
: le site lui-même, qui est une application SvelteKit.Vous aurez besoin de Node.js pour construire et exécuter ces deux parties.
Construction bibliothèque gpx
cd gpx.studio/gpx
npm install
npm run build
Pour pouvoir charger la carte, vous devrez créer votre propre Mapbox access token et le stocker dans un fichier .env
dans le répertoire website
.
cd ../website
echo "PUBLIC_MAPBOX_TOKEN={YOUR_MAPBOX_TOKEN}" >> .env
npm install
Les modifications des sources “website” avant construction
Dossier /sharenfs/rnmkcy/gpx.studio/website/src
Avant toute modification de la zone “website/src”, effectuer une sauvegarde des sources
mkdir $HOME/FreeUSB2To/rnmkcy.eu/sauvegardes/gpx_website_src
rsync -av /sharenfs/rnmkcy/gpx.studio/website/src $HOME/FreeUSB2To/rnmkcy.eu/sauvegardes/gpx_website_src
Les pages par défaut en fr
find /sharenfs/rnmkcy/gpx.studio/website/src/ -name "*" -type f -exec sed -i "s#'en'#'fr'#g" {} \;
Remplacer gpx.studio par gpx.rnmkcy.eu
find /sharenfs/rnmkcy/gpx.studio/website/src/ -name "*" -type f -exec sed -i "s#gpx.studio#gpx.rnmkcy.eu#g" {} \;
Modifier Export.svelte
<div style="display: none"
class="w-full flex flex-row items-center justify-center gap-4 border rounded-md p-2 bg-secondary"
>
<span>⚠️</span>
<span class="max-w-[80%] text-sm">
{$_('menu.support_message')}
</span>
<Button class="bg-support grow" href="https://ko-fi.com/gpxstudio" target="_blank">
{$_('menu.support_button')}
<span class="ml-2">🙏</span>
</Button>
</div>
<div class="w-full flex flex-row flex-wrap gap-2">
<Button
variant="outline"
class="grow"
on:click={() => {
if ($exportState === ExportState.SELECTION) {
exportSelectedFiles(exclude);
} else if ($exportState === ExportState.ALL) {
exportAllFiles(exclude);
}
open = false;
$exportState = ExportState.NONE;
}}
>
<Download size="16" class="mr-1" />
{#if $fileObservers.size === 1 || ($exportState === ExportState.SELECTION && $selection.size === 1)}
{$_('menu.download_file')}
{:else}
{$_('menu.download_files')}
{/if}
</Button>
</div>
Menu.svelte , supprimer button
<Button
variant="ghost"
href="https://ko-fi.com/gpxstudio"
target="_blank"
class="cursor-default h-fit rounded-sm font-bold text-support hover:text-support px-3 py-0.5"
aria-label={$_('menu.donate')}
>
<HeartHandshake size="18" class="md:hidden" />
<span class="hidden md:flex flex-row items-center">
{$_('menu.donate')}
<Heart size="16" class="ml-1" fill="rgb(var(--support))" />
</span>
</Button>
Utilisation avec BRouter
Il faut modifier l’adresse de routing ligne 50 fichier Routing.ts
let url =
https://routing.gpx.studio?lonlats=$…….`
Remplacer “https://routing.gpx.studio” par “https://routeur.rnmkcy.eu”
Fichier: /sharenfs/rnmkcy/gpx.studio/website/src/lib/components/toolbar/tools/routing/Routing.ts
# fichier /sharenfs/rnmkcy/gpx.studio/website/src/lib/components/toolbar/tools/routing/Routing.ts
# ligne 11
export const brouterProfiles: { [key: string]: string } = {
bike: 'trekking',
racing_bike: 'fastbike',
foot: 'hiking-beta',
water: 'river',
railway: 'rail'
};
#ligne 47
let url = `https://routeur.rnmkcy.eu?lonlats=${points.map(point => `${point.lon.toFixed(8)},${point.lat.toFixed(8)}`).join('|')}&profile=${brouterProfile + (privateRoads ? '-private' : '')}&format=geojson&alternativeidx=0`;
# On supprime '-private'
let url = `https://routeur.rnmkcy.eu?lonlats=${points.map(point => `${point.lon.toFixed(8)},${point.lat.toFixed(8)}`).join('|')}&profile=${brouterProfile + (privateRoads ? '' : '')}&format=geojson&alternativeidx=0`;
Construire le site
cd /sharenfs/rnmkcy/gpx.studio/website
echo "PUBLIC_MAPBOX_TOKEN={YOUR_MAPBOX_TOKEN}" >> .env
npm install
export NODE_OPTIONS=--max-old-space-size=4096
npm run build
En cas d’erreur du type:
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Solution : export NODE_OPTIONS=--max-old-space-size=4096
Solved: How to Fix “JavaScript Heap Out of Memory Error”
Après la construction on copie le dossier build
sous /var/www/gpx
sudo cp -r /sharenfs/rnmkcy/gpx.studio/website/build /var/www/gpx.studio
# les droits
sudo chown www-data:www-data -R /var/www/gpx.studio
Le site est accessible dans le dossier /sharenfs/rnmkcy/gpx.studio/website/build/
Configuration nginx /etc/nginx/conf.d/gpx.rnmkcy.eu.conf
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gpx.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
root /var/www/gpx.studio/;
location / {
index index.html;
}
}
Vérifier et recharger nginx
sudo nginx -t
sudo systemctl reload nginx
Accès par le lien https://gpx.rnmkcy.eu
Après modification des sources, exécution du script rebuild
Création script /usr/local/bin/rebuild
sudo nano /usr/local/bin/rebuild
#!/bin/bash
echo "Départ exécution script"
# Construction
cd /sharenfs/rnmkcy/gpx.studio/website
rm -r build/ # si existant
export NODE_OPTIONS=--max-old-space-size=4096
npm run build
# Mise à jour site nginx
sudo rm -r /var/www/gpx.studio
sudo cp -r /sharenfs/rnmkcy/gpx.studio/website/build /var/www/gpx.studio
sudo chown www-data:www-data -R /var/www/gpx.studio
# Recharger nginx
sudo systemctl reload nginx
echo "Fin exécution script"
Droits en exécution
sudo chmod +x /usr/local/bin/rebuild
Ce projet utilise les projets open source suivants:
npm run dev
Le serveur est accessible sur le lien http://localhost:5173/, q pour sortir
> website@0.0.1 dev
> vite dev
Forced re-optimization of dependencies
VITE v5.4.8 ready in 1305 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
Browserslist: caniuse-lite is outdated. Please run:
npx update-browserslist-db@latest
Why you should do it regularly: https://github.com/browserslist/update-db#readme
L’exécution a lieu sur un serveur, utilisation de SSH tunneling, sur un poste ayant un accès SSH, ouvrir un terminal et exécuter la commande suivante
ssh -L 9500:localhost:5173 leno@192.168.0.215 -p 55215 -i /home/yann/.ssh/lenovo-ed25519
Puis ouvrir le lien suivant dans un navigateur : localhost:9500
]]>Création dossier
sudo mkdir -p /sharenfs/rnmkcy/
sudo chown $USER:$USER -R /sharenfs/rnmkcy
Aller dans le dossier
cd /sharenfs/rnmkcy/
Dépôt source
git clone https://github.com/gpxstudio/gpxstudio.github.io.git
Modifier la clé API mapbox ainsi que routing_url dans le fichier /sharenfs/rnmkcy/gpxstudio.github.io/res/config.json
{
"mapbox": "pk.cG1yZTNwcnJ3MzkifQ.YZnNs9sZDBjcjkzZXJ4bHZ1GlvIiwiYSI6ImNrdTowYkn-xmoUszyIOIDYw",
"mapbox_dev": "pk.eyJ1IjoiZ3B4c3R1ZGlvIiwiYSI6ImNrdHVoM2pjNTBodmUycG1yZTNwcnJ3MzkifQ.YZnNs9s9oCQPzoXAWs_SLg",
"routing_url": "https://routeur.rnmkcy.eu"
}
Le fichier index.html
Le fichier layers
/sharenfs/rnmkcy/gpxstudio.github.io/js/layers.js
/sharenfs/rnmkcy/gpxstudio.github.io/js/buttons.js
Configuration nginx site https://gpx.rnmkcy.eu
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name gpx.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
root /sharenfs/rnmkcy/gpxstudio.github.io/;
location / {
index index.html;
}
}
Recharger
sudo systemctl reload nginx
Pour afficher les autres cartes
https://github.com/nrenner/brouter-web
Comme alternative à la version en ligne, le serveur autonome de BRouter peut également être exécuté sur votre bureau local.
Prérequis:
Installer java
sudo apt install default-jre
Version : java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Debian-2deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Debian-2deb12u1, mixed mode, sharing)
Dossier
Créer le dossier brouter
dans /sharenfs/rnmkcy/gpxstudio.github.io/
Procédure
téléchargez et décompressez la dernière archive autonome (brouter-web-standalone.<version>.zip
) à partir de https://github.com/nrenner/brouter-web/releases, par exemple pour Linux (remplacez ~/opt/
par votre répertoire d’installation préféré et 0.11.0
par la dernière version) :
mkdir -p /sharenfs/rnmkcy/gpxstudio.github.io/brouter
cd /sharenfs/rnmkcy/gpxstudio.github.io/brouter
wget https://github.com/nrenner/brouter-web/releases/download/0.11.0/brouter-web-standalone.0.11.0.zip
unzip brouter-web-standalone.0.11.0.zip
rm brouter-web-standalone.0.11.0.zip
téléchargez un ou plusieurs fichiers de données rd5 depuis le download directory ou le grid map dans le répertoire segments4
.
https://brouter.de/brouter/segments4/W5_N45.rd5
La structure
/sharenfs/rnmkcy/gpxstudio.github.io/brouter
.
├── brouter.jar
├── brouter-web
├── brouter-web-standalone.0.11.0.zip
├── customprofiles
├── profile_developers_guide.txt
├── profiles2
├── run.sh
├── segments4
├── srv.sh
└── standalone
Les dossiers
leno@rnmkcy:/sharenfs/rnmkcy/gpxstudio.github.io/brouter$ ls
brouter.jar customprofiles run.sh standalone
brouter-web profile_developers_guide.txt segments4
profiles2 srv.sh
leno@rnmkcy:/sharenfs/rnmkcy/gpxstudio.github.io/brouter$ ls segments4/
W5_N45.rd5
leno@rnmkcy:/sharenfs/rnmkcy/gpxstudio.github.io/brouter$ ls profiles2/
car-eco.brf Hiking-Alpine-SAC6.brf shortest.brf
car-fast.brf Hiking-Alpine-SAC6-private.brf trekking.brf
car-vario.brf hiking-beta.brf trekking-ignore-cr.brf
dummy.brf lookups.dat trekking-noferries.brf
fastbike-asia-pacific.brf moped.brf trekking-nosteps.brf
fastbike.brf rail.brf trekking-steep.brf
fastbike-lowtraffic.brf river.brf vm-forum-liegerad-schnell.brf
fastbike-verylowtraffic.brf safety.brf vm-forum-velomobil-schnell.brf
Le bash /sharenfs/rnmkcy/gpxstudio.github.io/brouter/srv.sh
#!/bin/sh
BINDADDRESS="localhost"
# BRouter standalone server
# java -cp brouter.jar btools.brouter.RouteServer <segmentdir> <profile-map> <customprofiledir> <port> <maxthreads> [bindaddress]
# maxRunningTime is the request timeout in seconds, set to 0 to disable timeout
JAVA_OPTS="-Xmx128M -Xms128M -Xmn8M -DmaxRunningTime=300"
# If paths are unset, first search in locations matching the directory structure
# as found in the official BRouter zip archive
CLASSPATH=${CLASSPATH:-"/sharenfs/rnmkcy/gpxstudio.github.io/brouter/brouter.jar"}
SEGMENTSPATH=${SEGMENTSPATH:-"/sharenfs/rnmkcy/gpxstudio.github.io/brouter/segments4"}
PROFILESPATH=${PROFILESPATH:-"/sharenfs/rnmkcy/gpxstudio.github.io/brouter/profiles2"}
CUSTOMPROFILESPATH=${CUSTOMPROFILESPATH:-"/sharenfs/rnmkcy/gpxstudio.github.io/brouter/customprofiles"}
java $JAVA_OPTS -cp $CLASSPATH btools.server.RouteServer "$SEGMENTSPATH" "$PROFILESPATH" "$CUSTOMPROFILESPATH" 17777 1 $BINDADDRESS
Créer un service brouter
sudo nano /etc/systemd/system/brouter.service
[Unit]
Description=brouter server
[Service]
Type=exec
User=leno
WorkingDirectory=/sharenfs/rnmkcy/gpxstudio.github.io/brouter
ExecStart=sh /sharenfs/rnmkcy/gpxstudio.github.io/brouter/srv.sh
[Install]
WantedBy=multi-user.target
Recharger , activer et lancer le service brouter
sudo systemctl daemon-reload
sudo systemctl enable brouter --now
Serveur web brouter : https://routeur.rnmkcy.eu
server {
# ipv4 listening port/protocol
listen 443 ssl http2;
# ipv6 listening port/protocol
listen [::]:443 ssl http2;
server_name routeur.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
location / {
proxy_pass http://127.0.0.1:17777;
}
}
Vérifier et recharger nginx
sudo nginx -t
sudo systemctl reload nginx
Le site https://gpx.rnmkcy.eu est opérationnel
]]>Installation sur archlinux yay -S vscodium-bin
pose problème de dépendances installées par une autre application.
Installation de VSCodium se fera par flatpak
Installer flatpak sur archlinux
yay -S flatpak
How to Install VSCodium on Ubuntu 24.04, 22.04, or 20.04
Installer VSCodium via la commande Flatpak
Avec le dépôt Flathub, nous pouvons passer à l’installation de VSCodium. Cela implique la commande flatpak install. Pour démarrer le déploiement de VSCodium, utilisez la commande suivante :
flatpak install flathub com.vscodium.codium -y
Cette commande récupère VSCodium directement depuis Flathub et assure une installation optimale sur votre système.
Pour ceux qui préfèrent une interaction rapide avec le terminal, utilisez la commande suivante pour lancer VSCodium
flatpak run com.vscodium.codium
Si vous voulez lancer codium /path/to/file
du terminal hôte, ajoutez simplement ceci
dans le fichier bashrc
alias codium="flatpak run com.vscodium.codium "
Créer un fichier bureau ~/.local/share/applications/com.vscodium.codium.desktop
[Desktop Entry]
Version=1.1
Type=Application
Name=VSCodium
GenericName=Editeur de code source multiplateforme et multi langage
Comment=Gestionnaire de bases de données universel et Client SQL.
Icon=vscodium
Exec=/usr/bin/flatpak run com.vscodium.codium
Categories=Development;IDE;
Pour maintenir VSCodium à jour, vous devez régulièrement vérifier la présence de mises à jour. Linux rend ce processus relativement simple.
flatpak update
Les commandes ci-dessus vérifieront en bloc les mises à jour de VSCodium et de tous les paquets installés à l’aide du gestionnaire de paquets de votre choix.
Pour les installations Flatpak de VSCodium, exécutez la commande suivante pour supprimer le logiciel :
flatpak uninstall com.vscodium.codium
Pour mettre VSCodium en français
View>Command Palet
(ou Ctrl+Maj+P
).Configure Display Language
dans la zone de recherche qui s’est ouverte, puis valider.français
puis Cliquez sur le bouton Restart
qui est alors proposé.
A gauche, dans la rubrique “Extension” (ou Ctrl+Maj+X), installer l’extension Python (de l’éditeur ms-python avec comme descriptif : IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), code formatting, …)
Aller dans le menu Affichage>Palette de commandes...
(ou Ctrl+Maj+P).
Saisir Python: Select Interpreter
dans la zone de recherche qui s’est ouverte, puis valider.
Choisir à présent l’interpréteur (ex : Python 3.11)
Menu Fichier>Nouveau fichier...
, saisir main.py puis appuyer sur la touche Entrée.
Choisir toujours le même dossier, par exemple : ~/media/devel/vscodium/
puis valider.
Saisir le code source d’un premier programme simple, comme :
print("Bonjour !")
puis cliquer sur le bouton d’exécution (de forme triangulaire : Run Python File) en haut à droite.
Cela devrait afficher en bas de l’écran le Terminal, avec le texte “Bonjour !”.
Changer la couleur des titres Markdown
Quand on commence à créer des fichiers Markdown à la pelle, on a un peu tendance à voir ses yeux couler sur son clavier, notamment à cause des titres de niveau 1, de niveau 2, de niveau 3, etc., qui, par défaut, ont tous la même couleur ! Faut-il installer une extension pour changer ça ? Non !
Ouvrir les préférences (raccourci Ctrl + ,
Dans la barre de recherche, cherche editor.tokenColorCustomizations
Clic sur “Modifier dans settings.json”
Là, VSCode t’as prérempli le paramètre :
Tu peux alors remplacer ces 5 lignes par cette nouvelle configuration, qui va appliquer des couleurs sur tes titres Markdown de niveaux 2, 3 et 4 :
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "heading.2.markdown entity.name.section.markdown, heading.2.markdown punctuation.definition.heading.markdown",
"settings": {
"foreground": "#FF6B6B",
}
},
{
"scope": "heading.3.markdown entity.name.section.markdown, heading.3.markdown punctuation.definition.heading.markdown",
"settings": {
"foreground": "#FABE28",
}
},
{
"scope": "heading.4.markdown entity.name.section.markdown, heading.4.markdown punctuation.definition.heading.markdown",
"settings": {
"foreground": "#4ECDC4",
}
}
]
}
Sauvegarder
Résultat
Un problème majeur avec beaucoup de configurations VPN/Wireguard est que le DNS n’est pas suffisant. Cela finit par une fuite de connexion client et de détails d’emplacement (test via le site http://ipleak.net/
Pour l’installation complète Unbound qui ajoute la mise à jour des serveurs “racine”, le blocage des publicités et des DMP (Data Management Platforms), voir lien Résolveur DNS Unbound
Nous allons sécuriser le trafic DNS avec la solution unbound qui offre les caractéristiques suivantes
Nous allons le configurer de manière à contrer les fuites DNS, les attaques plus sophistiquées comme la fausse configuration de proxy, les routeurs escrocs et toutes sortes d’attaques MITM sur HTTPS et autres protocoles.
Nous installons unbound sur le serveur
ATTENTION : Le programme resolvconf est en général seulement nécessaire quand un système a plusieurs programmes qui ont besoin de modifier de façon dynamique les informations sur les serveurs de noms de domaine. Sur un système simple où les serveurs de noms de domaine ne changent pas souvent ou bien ne sont modifiés que par un programme, le fichier de configuration **resolv.conf** est suffisant.
Il faut installer resolvconf, sinon on a une erreur unbound-resolvconf
Une fois le paquet « resolvconf » installé, il ne faut plus modifier le fichier « /etc/resolv.conf », car le contenu de celui-ci sera automatiquement géré et remplacé par resolvconf
Installation des outils dns, des paquets Unbound et resolv :
sudo apt install unbound resolvconf -y
Ajout d’un fichier de configuration unbound-wg.conf
sudo nano /etc/unbound/unbound.conf.d/unbound-wg.conf
server:
# ne rien enregistrer dans les journaux hormis les erreurs
verbosity: 0
# n'écouter que sur l'interface locale en IPv4
# unbound nécessite d'être relancé si modifié
interface: 127.0.0.1
port: 53
# refuser tout le monde sauf les connexions locales (pas forcément
# nécessaire vu que le serveur n'écoute que sur la boucle locale en IPv4)
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.1/32 allow
# par défaut, unbound ne log pas les requêtes ni les réponses
# on peut le rappeler au cas où
log-queries: no
log-replies: no
# imposer la QNAME minimisation (RFC 7816)
# Pour mieux protéger la vie privée
qname-minimisation: yes
# même si le serveur faisant autorité ne le veut pas
# après discussion, il est possible que cette option ne soit
# pas recommandée dans le cadre d'un résolveur ouvert
qname-minimisation-strict: yes
Vérifier la validité du fichier de configuration avec la commande suivante :
sudo unbound-checkconf /etc/unbound/unbound.conf.d/unbound-wg.conf
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/unbound-wg.conf
Toutes les règles disponibles sont détaillées dans le manuel man 5 unbound.conf
ou dans le manuel en ligne.
Démarrer le résolveur.
sudo systemctl start unbound.service
S’assurer que tout fonctionne bien à l’aide de la commande
dig
disponible dans le paquet bind9-dnsutils
ou dnsutils
. Pour cela il
suffit de spécifier l’adresse de notre résolveur, ici 127.0.0.1
ou ::1
et
d’effectuer une requête DNS. Ici on demande à Unbound de récupérer
l’enregistrement AAAA
associé au nom de domaine afnic.fr
.
dig @127.0.0.1 A afnic.fr
Résultat commande
; <<>> DiG 9.18.28-1~deb12u2-Debian <<>> @127.0.0.1 A afnic.fr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37353
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;afnic.fr. IN A
;; ANSWER SECTION:
afnic.fr. 600 IN A 51.178.83.21
;; Query time: 232 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sun Sep 15 14:53:14 GMT 2024
;; MSG SIZE rcvd: 53
Une réponse est bien renvoyée. Le résolveur fonctionne.Vérifier que tout est opérationnel en IPv4, et en utilisant UDP et TCP.
$ dig +notcp @127.0.0.1 A afnic.fr # connexion UDP en IPv4 au résolveur
$ dig +tcp @127.0.0.1 A afnic.fr # connexion TCP en IPv4 au résolveur
À ce stade, un résolveur Unbound est configuré en local et écoute sur le port
53
. Il peut donc être utilisé pour résoudre toutes les requêtes en provenance
de la machine.
Installation
sudo apt install ufw
Ajout des règles pour ssh et wireguard
sudo ufw allow 52255/udp # wireguard
sudo ufw allow 55027/tcp # ssh
sudo ufw allow DNS
Activation
sudo ufw enable
Status sudo ufw status
Status: active
To Action From
-- ------ ----
55027/tcp ALLOW Anywhere
52255/udp ALLOW Anywhere
DNS ALLOW Anywhere
55027/tcp (v6) ALLOW Anywhere (v6)
52255/udp (v6) ALLOW Anywhere (v6)
DNS (v6) ALLOW Anywhere (v6)
Désactiver les règles IPv6 utilisant UFW sur Linux
Le désactivation des règles IPv6 dans UFW est relativement facile. Ouvrez simplement le fichier de configuration UFW /etc/default/ufw
Remplacer IPV6=yes
par IPV6=no
Recharger : sudo ufw reload
WireGuard est un serveur VPN à code source ouvert, gratuit, moderne et rapide, doté d’un chiffrement de pointe. Il est plus rapide et plus simple que l’IPSec et l’OpenVPN
Wireguard est dans le noyau 5.6+
sudo apt install wireguard
**Autoriser le serveur Wireguard à relayer les paquets **
Autoriser le serveur Wireguard à relayer les paquets venant de ces clients vers l’internet et de traiter les paquets retours (modifier /etc/sysctl.conf)
On passe en mode su : sudo -s
sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sed -i 's/^#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
sysctl -p # prise en compte immédiate
Résultat
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
On passe en mode su : sudo -s
On se positionne dans le dossier /etc/wireguard/
cd /etc/wireguard
WireGuard repose sur une authentification par clé publique/privée (cryptographie asymétrique), vous devez donc créer ces clés avec les sous-commandes wg genkey et wg pubkey
La création de la clé privée se fait avec wg genkey et la clé publique est générée en la canalisant dans wg pubkey
umask 077; wg genkey | tee wg0.key | wg pubkey > wg0.pub
Fichier de configuration /etc/wireguard/wg0.conf
Récupérer le nom de la carte réseau et l’adresse IP, ip a
:
carte réseau ens3
adresse IP 91.194.161.27
La première étape consiste à choisir une plage IPV4 privée, Random IPV4 Private Address Generator, qui sera utilisée par le serveur : 10.30.55.0/8
Pour une adresse IPV6 Local IPv6 Address Generator : fd27:4ae2:2ed9::/64
Les adresses locales uniques (ULA) IPv6 sont utilisées de la même manière que les adresses locales IPv4, telles que 10.0.0.0/8. Les adresses privées IPv4 ont été définies par la RFC 1918, tandis que les ULA IPv6 ont été définies par la RFC 4193. Contrairement à leur équivalent IPv4, les adresses locales IPv6 ont une partie aléatoire de 40 bits, ce qui les rend uniques. L’objectif des adresses locales IPv6 est que si vous connectez deux réseaux IPv6 privés ensemble - tels que deux sites privés connectés par VPN - il est très peu probable que vous rencontriez des conflits d’adressage.
Le serveur aura l’adresse IP suivante: 10.30.55.1 . Il est également nécessaire de choisir un port, qui sera exposé publiquement, pour que le serveur écoute.Le port de documentation standard est généralement 51820.
Créer le fichier /etc/wireguard/wg0.conf serveur wg0
/etc/wireguard/wg0.conf
[Interface]
Address = 10.30.55.1, fd27:4ae2:2ed9::1
ListenPort = 52255
PostUp = ufw route allow in on wg0 out on ens3
PostUp = iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on ens3
PreDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
# wg0_PRIVATE_KEY
PrivateKey = 5Z........................................mk=
DNS = 10.30.55.1, fd27:4ae2:2ed9::1
Address , fixer l’adresse IP privée du serveur à l’intérieur du VPN.Les adresses du réseau VPN de 10.30.55.0 à 10.30.55.255 sont fixées par le masque /24 et fd27:4ae2:2ed9::1 à fd27:4ae2:2ed9::ffff sont fixées par le masque /128
PostUp , pour la mise en place des règles iptables de translation d’adresses à l’activation du VPN (autoriser le routage des paquets réseau venant des clients vers internet)
PostDown , pour la suppression des règles iptables de translation d’adresses à l’arrêt du VPN
PrivateKey , clé privée du serveur (wg0.key)
DNS = Pour utiliser un pair comme serveur DNS, définissez DNS = wireguard_internal_ip_address_of_peer dans la section [Interface]. Les domaines de recherche sont également définis avec l’option DNS =. Séparez toutes les valeurs dans la liste par des virgules.
AllowedIPs = Pour acheminer tout le trafic du tunnel vers un pair spécifique, ajoutez l’itinéraire par défaut (0.0.0.0/0 pour IPv4 et ::/0 pour IPv6) à AllowedIPs. Par exemple, AllowedIPs = 0.0.0.0/0, ::/0. wg-quick se chargera automatiquement de configurer le routage correct et fwmark [5] pour que le réseau fonctionne toujours.
Modifier les droits des fichiers wg0.conf (lecture uniquement par “root”)
chmod 600 /etc/wireguard/wg0.conf
Pour une activation permanente de wireguard
sudo systemctl enable wg-quick@wg0.service
Modifier le fichier de configuration unbound-wg.conf pout y ajouter l’adresse IP privée 10.30.55.1
sudo nano /etc/unbound/unbound.conf.d/unbound-wg.conf
server:
# ne rien enregistrer dans les journaux hormis les erreurs
verbosity: 0
# n'écouter que sur l'interface locale en IPv4
# unbound nécessite d'être relancé si modifié
interface: 127.0.0.1
interface: 10.30.55.1
port: 53
# refuser tout le monde sauf les connexions locales (pas forcément
# nécessaire vu que le serveur n'écoute que sur la boucle locale en IPv4)
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.1/32 allow
access-control: 10.30.55.0/24 allow
# par défaut, unbound ne log pas les requêtes ni les réponses
# on peut le rappeler au cas où
log-queries: no
log-replies: no
# imposer la QNAME minimisation (RFC 7816)
# Pour mieux protéger la vie privée
qname-minimisation: yes
# même si le serveur faisant autorité ne le veut pas
# après discussion, il est possible que cette option ne soit
# pas recommandée dans le cadre d'un résolveur ouvert
qname-minimisation-strict: yes
Relancer unbound
sudo systemctl restart unbound
Le but est d’exécuter Wg Gen Web dans un espace et WireGuard sur le système hôte.wg-gen-web (original)
Installer go
cd ~
wget https://go.dev/dl/go1.23.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.1.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
Version go version
–> go version go1.23.1 linux/amd64
Installer node
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs
Versions node -v && npm -v
v20.17.0
10.8.2
Vous devez avoir WireGuard installé sur la machine qui exécute wg-ui
Création dossier application web
sudo mkdir -p /opt/appwg
Construction du site
cd ~/wg-webui-fr/
go mod tidy
go build -o wg-ui main.go
cd ui
export NODE_OPTIONS=--openssl-legacy-provider
export VUE_APP_API_BASE_URL=http://localhost:8080/api/v1.0
npm install
npm run build
sudo mkdir -p /opt/appwg/ui
sudo cp ../wg-ui /opt/appwg
sudo cp -r dist /opt/appwg/ui/
l’autorisation à 2 facteurs n’est pas utilisée, le fichier /opt/appwg/.env se résume à remplir la zone correspondante SMTP de la messagerie et désactiver l’autorisation
/opt/appwg/.env
SERVER=127.0.0.1
PORT=8090
# Gin framework release mode
#GIN_MODE=release
GIN_MODE=debug
WG_CONF_DIR=/etc/wireguard
WG_INTERFACE_NAME=wg0.conf
SMTP_HOST=127.0.0.1
SMTP_PORT=587
SMTP_USERNAME=""
SMTP_PASSWORD=""
SMTP_FROM="wg-web-ui@wg-web-ui.xyz"
On modifie dans /opt/appwg/.env ,le paramètre WG_CONF_DIR=./wireguard →
WG_CONF_DIR=/etc/wireguard
Créer un service systemd wgweb qui lance le serveur avec journalisation
sudo nano /etc/systemd/system/wgweb.service
[Unit]
Description=Wireguard web
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=10
WorkingDirectory=/opt/appwg
ExecStart=/opt/appwg/wg-ui
[Install]
WantedBy=multi-user.target
wireguard (wg0.conf et server.json)
Modifier les fichiers existants pour être identique au paramétrage de wireguard wg0.conf situé sous /etc/wireguard
/etc/wireguard/server.json
{
"address": [
"10.30.55.1",
"fd27:4ae2:2ed9::1"
],
"listenPort": 51820,
"mtu": 0,
"privateKey": "A----------------------------------------c=",
"publicKey": "v----------------------------------------c=",
"endpoint": "91.194.161.27:52255",
"persistentKeepalive": 16,
"dns": [
"10.30.55.1",
"fd27:4ae2:2ed9::1"
],
"allowedips": [
"0.0.0.0/0",
"::/0"
],
"preUp": "",
"postUp": "ufw route allow in on wg0 out on ens3; iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE",
"preDown": "ufw route delete allow in on wg0 out on ens3; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE",
"postDown": "",
"updatedBy": "Yann",
"created": "2024-09-15T18:00:50.589913433Z",
"updated": "2024-09-15T18:00:50.589913433Z"
}
Recharger systemd
puis démarrer le service:
sudo systemctl daemon-reload
sudo systemctl start wgweb.service
sudo systemctl status wgweb.service
● wgweb.service - Wireguard web
[...]
sept. 15 16:57:25 icevps.xyz wg-ui[14292]: [GIN-debug] Listening and serving HTTP on 127.0.0.1:8090
Lancer wireguard
sudo systemctl start wg-quick@wg0.service
On utilise la redirection port SSH (Tunneling SSH)
Vérification,ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
ssh -L 9500:localhost:8090 hallmar@91.194.161.27 -p 55027 -i /home/yann/.ssh/icevps_xyz
Ouvrir un navigateur sur le client et saisir localhost:9500
pour afficher le gestionnaire web de wireguard
Activer le service si tout fonctionne
sudo systemctl enable wgweb.service
On peut recompiler l’application wg-web suite à des modifications
Procédure de reconstruction $HOME/reconstruire.sh
cat > $HOME/reconstruire.sh << EOF
#!/bin/bash
echo "Arrêt wgweb.service"
sudo systemctl stop wgweb.service
echo "Sauvegarde"
sudo cp /opt/appwg/.env _.env
echo "Supprimer appwg"
sudo rm -r /opt/appwg
echo "Construire wg-ui main.go"
cd $HOME/wg-webui-fr/
go mod tidy
go build -o wg-ui main.go
cd ui
export NODE_OPTIONS=--openssl-legacy-provider
export VUE_APP_API_BASE_URL=http://localhost:8080/api/v1.0
npm install
npm run build
sudo mkdir -p /opt/appwg/ui
sudo cp ../wg-ui /opt/appwg
sudo cp -r dist /opt/appwg/ui/
echo "Restaurer environnement"
sudo cp $HOME/_.env /opt/appwg/.env
echo "Démarrer le service"
sudo systemctl start wgweb.service
echo "FIN reconstruction"
EOF
La rendre exécutable
chmod +x $HOME/reconstruire.sh
Mullvad VPN ne propose pas d’extension pour navigateur. À défaut, le fournisseur a développé son propre navigateur en collaboration avec Tor Project, Mullvad Browser, disponible sur l’ensemble des systèmes d’exploitation desktop.
On peut installer Mullvad sur un routeur, ce qui leur permet de profiter de la protection VPN sur tous leurs équipements connectés au réseau, contre cinq appareils autorisés en temps normal. Des explications détaillées pour plusieurs modèles sont disponibles dans un guide dédié (en anglais).
Le code de Mullvad VPN est open source et disponible sur GitHub.
Mullvad semble être l’un des VPN les plus à cheval sur l’anonymat de ses utilisateurs.
Mullvad VPN utilise les protocoles suivants :
Concernant WireGuard, Mullvad propose quelques réglages avancés
Mullvad VPN dispose de ses propres serveurs DNS pour garantir un niveau de confidentialité élevé sur Internet. En les mettant à l’épreuve avec dnsleaktest.com, nous n’avons pas repéré de fuites. Pour le chiffrement, ce VPN utilise le standard AES (Advanced Encryption Standard) 256.
Côté streaming, il y a du mieux avec la version 2024 de Mullvad, nous avons débloqué sans problèmes les catalogues US et UK des services de SVoD Netflix et BBC.
En revanche, Amazon détecte toujours l’utilisation du VPN. Si vous êtes abonné à Prime Video et souhaitez poursuivre vos séries à l’étranger, il faudra opter pour un fournisseur concurrent de Mullvad, comme Surfshark, NordVPN ou Proton VPN.
Mullvad VPN ne propose pas de serveurs spécifiques pour le téléchargement de fichiers torrent, mais nous n’avons rencontré aucune difficulté pour télécharger une image ISO d’une distribution Linux en mode P2P.
De prime abord, Mullvad VPN propose peu d’options avancées et le service lui-même est assez basique. Il est toutefois possible de retrouver quelques fonctionnalités classiques
Mullvad fait partie des rares services capables de fonctionner en IPv6.
Mullvad a connu de nettes améliorations.
Installation
yay -S mullvad-vpn-bin
Si erreur gpg
[yano@e6230 ~]$ gpg --keyserver hkps://keys.openpgp.org --recv-keys A1198702FC3E0A09A9AE5B75D5A1D4F266DE8DDF
gpg: clef D5A1D4F266DE8DDF : clef publique « Mullvad (code signing) <admin@mullvad.net> » importée
gpg: Quantité totale traitée : 1
gpg: importées : 1