ajout copy on code blocks
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Grégory Lebreton 2024-11-09 14:09:40 +01:00
parent d6a206acda
commit c24a564510
29 changed files with 412 additions and 325 deletions

View File

@ -1,30 +1,30 @@
# Sauvegarder des données # Sauvegarder des données
1. Lister les partitions: 1. Lister les partitions:
``` ``` { .copy }
lsblk lsblk
``` ```
2. Identifier la partition contenant les fichiers à sauvegarder 2. Identifier la partition contenant les fichiers à sauvegarder
3. Monter la partition 3. Monter la partition
``` ``` { .copy }
mkdir /mnt/nom_du_dossier mkdir /mnt/nom_du_dossier
mount /dev/sdXy /mnt/nom_du_dossier mount /dev/sdXy /mnt/nom_du_dossier
``` ```
4. Cibler le dossier à sauvegarder 4. Cibler le dossier à sauvegarder
``` ``` { .copy }
ls /mnt/nom_du_dossier ls /mnt/nom_du_dossier
``` ```
5. Créer le dossier de réception sur le serveur de backup: 5. Créer le dossier de réception sur le serveur de backup:
``` ``` { .copy }
ssh -p 5555 bellinuxien@192.168.1.75 ssh -p 5555 bellinuxien@192.168.1.75
mkdir /home/bellinuxien/BACKUPS/nom-de-dossier mkdir /home/bellinuxien/BACKUPS/nom-de-dossier
exit exit
``` ```
6. Copier le dossier utilisateur vers le dossier sur le serveur de backup: 6. Copier le dossier utilisateur vers le dossier sur le serveur de backup:
```bash ``` { .copy }
rsync -ah -e "ssh -p 5555" /mnt/nom_du_dossier bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ --info=progress2 && sync rsync -ah -e "ssh -p 5555" /mnt/nom_du_dossier bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ --info=progress2 && sync
``` ```
7. Rapatrier les fichiers du serveur de backup vers une machine: 7. Rapatrier les fichiers du serveur de backup vers une machine:
```bash ``` { .copy }
rsync -ah -e "ssh -p 5555" bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ /mnt/nom_du_dossier --info=progress2 && sync rsync -ah -e "ssh -p 5555" bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ /mnt/nom_du_dossier --info=progress2 && sync
``` ```

View File

@ -11,66 +11,66 @@ declare -a MA_LIST
### Modification de la liste ### Modification de la liste
1. Ajout d'éléments 1. Ajout d'éléments
``` ``` { .copy }
MA_LIST=(1er_element 2nd_element) MA_LIST=(1er_element 2nd_element)
MA_LIST+=("3eme élément avec des espaces") MA_LIST+=("3eme élément avec des espaces")
MA_LIST[3]="4eme élémént" MA_LIST[3]="4eme élémént"
``` ```
2. Changement de valeur d'un élément 2. Changement de valeur d'un élément
``` ``` { .copy }
MA_LIST[0]="la nouvelle valeur qu'on met pour le 1er élément" MA_LIST[0]="la nouvelle valeur qu'on met pour le 1er élément"
MA_LIST[1]="la valeur pour le 2eme élément" MA_LIST[1]="la valeur pour le 2eme élément"
``` ```
3. Traitement sur l'ensemble des éléments 3. Traitement sur l'ensemble des éléments
- en utilisant la liste des index `${!MA_LIST[@]}`: - en utilisant la liste des index `${!MA_LIST[@]}`:
``` ``` { .copy }
for i in "${!MA_LIST[@]}" ; do for i in "${!MA_LIST[@]}" ; do
echo "index = $i - value = ${MA_LIST[i]}" echo "index = $i - value = ${MA_LIST[i]}"
done done
``` ```
- en utilisant la liste des valeurs `${MA_LIST[@]}` - en utilisant la liste des valeurs `${MA_LIST[@]}`
``` ``` { .copy }
for i in "${MA_LIST[@]}" ; do for i in "${MA_LIST[@]}" ; do
echo "value = ${i}" echo "value = ${i}"
done done
``` ```
- nombre d'éléments: - nombre d'éléments:
``` ``` { .copy }
echo "nombre d'éléments : ${MA_LIST[]} echo "nombre d'éléments : ${MA_LIST[]}
``` ```
## Les tableaux (`associative arrays`) ## Les tableaux (`associative arrays`)
### Création d'un tableau ### Création d'un tableau
``` ``` { .copy }
declare -A MY_ARRAY declare -A MY_ARRAY
``` ```
1. Ajout d'éléments 1. Ajout d'éléments
``` ``` { .copy }
MY_ARRAY=([clé1]=1er_element [clé2]=2nd_element) MY_ARRAY=([clé1]=1er_element [clé2]=2nd_element)
MY_ARRAY+=([clé3]="3eme élément avec des espaces") MY_ARRAY+=([clé3]="3eme élément avec des espaces")
MY_ARRAY[dernière_clé]="4eme élément" MY_ARRAY[dernière_clé]="4eme élément"
``` ```
2. Changement de valeur d'un élément 2. Changement de valeur d'un élément
``` ``` { .copy }
MY_ARRAY[clé1]="la nouvelle valeur qu'on met pour l'élément associé à `clé1`" MY_ARRAY[clé1]="la nouvelle valeur qu'on met pour l'élément associé à `clé1`"
``` ```
3. Traitement sur l'ensemble des éléments 3. Traitement sur l'ensemble des éléments
- en utilisant la liste des clés `${!MY_ARRAY[@]}`: - en utilisant la liste des clés `${!MY_ARRAY[@]}`:
``` ``` { .copy }
for i in "${!MY_ARRAY[@]}" ; do for i in "${!MY_ARRAY[@]}" ; do
echo "key = $i - value = ${MY_ARRAY[i]}" echo "key = $i - value = ${MY_ARRAY[i]}"
done done
``` ```
- en utilisant la liste des valeurs `${MY_ARRAY[@]}` - en utilisant la liste des valeurs `${MY_ARRAY[@]}`
``` ``` { .copy }
for i in "${MY_ARRAY[@]}" ; do for i in "${MY_ARRAY[@]}" ; do
echo "value = ${i}" echo "value = ${i}"
done done
``` ```
- nombre d'éléments: - nombre d'éléments:
``` ``` { .copy }
echo "nombre d'éléments : ${MY_ARRAY[]} echo "nombre d'éléments : ${MY_ARRAY[]}
``` ```

View File

@ -11,12 +11,12 @@ De même, la commande peut permettre de travailler sur un système devenu inacce
## Utilisation ## Utilisation
:bulb: Repérer le disque du système d'exploitation que l'on souhaite "chrooter" :bulb: Repérer le disque du système d'exploitation que l'on souhaite "chrooter"
```bash ``` { .bash .copy }
lsblk lsblk
``` ```
- Monter les partitions nécessaires - Monter les partitions nécessaires
```bash ``` { .bash .copy }
sudo mount /dev/sda2 /mnt # exemple pour un disque sda2 sudo mount /dev/sda2 /mnt # exemple pour un disque sda2
sudo mount --bind /dev /mnt/dev sudo mount --bind /dev /mnt/dev
@ -26,19 +26,19 @@ sudo mount --bind /run /mnt/run
``` ```
- Connexion: - Connexion:
```bash ``` { .bash .copy }
sudo chroot /mnt sudo chroot /mnt
``` ```
:warning: A partir de cette commande, toutes les autres commandes saisies s'éffectuent sur le système cible :warning: A partir de cette commande, toutes les autres commandes saisies s'éffectuent sur le système cible
- Réparer le GRUB: - Réparer le GRUB:
```bash ``` { .bash .copy }
grub-install /dev/sda grub-install /dev/sda
``` ```
- Réparer le système d'exploitation: - Réparer le système d'exploitation:
```bash ``` { .bash .copy }
apt --fix-broken install apt --fix-broken install
dpkg --configure -a dpkg --configure -a
apt install -f apt install -f
@ -46,12 +46,12 @@ apt install --reinstall apt
``` ```
- Pour se déconnecter: - Pour se déconnecter:
```bash ``` { .bash .copy }
exit exit
``` ```
- Démonter le système de fichier: - Démonter le système de fichier:
```bash ``` { .bash .copy }
sudo umount -a /mnt sudo umount -a /mnt
``` ```

View File

@ -6,12 +6,12 @@ On utilise un **Here Tag**, qui est souvent `EOF`mais que vous pouvez nommer com
#### Multi-lignes SANS Heredoc (avec `\n`) #### Multi-lignes SANS Heredoc (avec `\n`)
``` ``` { .bash .copy }
text=$'premièreligne\ndeuxièmeligne' text=$'premièreligne\ndeuxièmeligne'
``` ```
#### Utilisation dans une variable #### Utilisation dans une variable
``` ``` { .bash .copy }
visiteur@domani:~$ MA_VARIABLE=$(cat <<EOF visiteur@domani:~$ MA_VARIABLE=$(cat <<EOF
premiere ligne premiere ligne
deuxième ligne deuxième ligne
@ -23,7 +23,7 @@ deuxième ligne
``` ```
#### Utilisation pour écrire dans un fichier #### Utilisation pour écrire dans un fichier
``` ``` { .bash .copy }
visiteur@domani:~$ cat <<EOF1 > file.txt visiteur@domani:~$ cat <<EOF1 > file.txt
premiere ligne premiere ligne
deuxième ligne deuxième ligne

View File

@ -4,7 +4,7 @@
## Repérer les partitions disponibles ## Repérer les partitions disponibles
Quelques commandes sont utiles pour connaître l'état des disques, des partitions et des points de montage Quelques commandes sont utiles pour connaître l'état des disques, des partitions et des points de montage
``` ``` { .bash .copy }
sudo fdisk -l sudo fdisk -l
sudo df -H sudo df -H
``` ```
@ -19,38 +19,39 @@ On utilise la commande udiskctl qui nous permet de monter un disque externe ou u
### Installation ### Installation
``` ``` { .bash .copy }
sudo apt install udisks2 sudo apt install udisks2
``` ```
### Usage ### Usage
#### Monter une partition #### Monter une partition
``` ``` { .bash .copy }
udiskct --mount -b /dev/sdb1 udiskct --mount -b /dev/sdb1
``` ```
#### Démonter une partition #### Démonter une partition
``` ``` { .bash .copy }
udiskctl unmount -b /dev/sdb1 udiskctl unmount -b /dev/sdb1
``` ```
#### Éjecter proprement une clé usb #### Éjecter proprement une clé usb
``` ``` { .bash .copy }
udiskctl power-off -b /dev/sdb udiskctl power-off -b /dev/sdb
``` ```
## Avec mount ## Avec mount
Avec la commande mount, il est nécessaire de bien définir les options de montage Avec la commande mount, il est nécessaire de bien définir les options de montage:
``` ``` { .bash .copy }
sudo mkdir -p /mnt/cle sudo mkdir -p /mnt/cle
sudo mount /dev/sdb1 /mnt/cle sudo mount /dev/sdb1 /mnt/cle
``` ```
Pour démonter une clé Pour démonter une clé:
```
``` { .bash .copy }
sudo umount /mnt/cle sudo umount /mnt/cle
``` ```

View File

@ -1,15 +1,15 @@
# nmcli # nmcli
Scanner le reseau Scanner le reseau
```bash ``` { .bash .copy }
nmcli d wifi nmcli d wifi
``` ```
Se connecter au reseau pour la première fois Se connecter au reseau pour la première fois
```bash ``` { .bash .copy }
nmcli d wifi connect <SSID> -a nmcli d wifi connect <SSID> -a
``` ```
Se connection à un reseau existant Se connection à un reseau existant
```bash ``` { .bash .copy }
nmcli con <SSID> nmcli con <SSID>
``` ```
Changer les serveurs DNS Changer les serveurs DNS
@ -25,6 +25,6 @@ Méthode degeulasse
Méthode clean Méthode clean
/!\ À faire pour chaque point d'accès /!\ /!\ À faire pour chaque point d'accès /!\
```bash ``` { .bash .copy }
nmcli con mod <SSID> ipv4.dns "80.67.169.12 80.67.169.40" ipv4.ignore-auto-dns yes nmcli con mod <SSID> ipv4.dns "80.67.169.12 80.67.169.40" ipv4.ignore-auto-dns yes
``` ```

View File

@ -24,13 +24,13 @@
Insérez deux disques durs dans votre ordinateur Linux, puis ouvrez une fenêtre de terminal. Exécutez la commande suivante pour vérifier le nom du dispositif. Insérez deux disques durs dans votre ordinateur Linux, puis ouvrez une fenêtre de terminal. Exécutez la commande suivante pour vérifier le nom du dispositif.
```bash ``` { .bash .copy }
sudo fdisk -l sudo fdisk -l
``` ```
![img1](../../assets/raid/image1.png) ![img1](../../assets/raid/image1.png)
```bash ``` { .bash .copy }
linux fdisk partition linux fdisk partition
``` ```
@ -38,7 +38,7 @@ Vous pouvez voir que le mien est /dev/sdb et /dev/sdc.
- Ensuite, exécutez les deux commandes suivantes pour créer une nouvelle table de partition MBR sur les deux disques durs. (Remarque : cela effacera toutes les partitions et les données existantes de ces deux disques durs. Assurez-vous de sauvegarder vos données.) - Ensuite, exécutez les deux commandes suivantes pour créer une nouvelle table de partition MBR sur les deux disques durs. (Remarque : cela effacera toutes les partitions et les données existantes de ces deux disques durs. Assurez-vous de sauvegarder vos données.)
```bash ``` { .bash .copy }
sudo parted /dev/sdb mklabel msdos sudo parted /dev/sdb mklabel msdos
sudo parted /dev/sdc mklabel msdos sudo parted /dev/sdc mklabel msdos
``` ```
@ -47,7 +47,7 @@ Vous pouvez créer une table de partition GPT en remplaçant "msdos" par "gpt",
Ensuite, utilisez la commande fdisk pour créer une nouvelle partition sur chaque disque et formatez-les en tant que système de fichiers Linux autodétecté en RAID. Commencez par le faire sur /dev/sdb. Ensuite, utilisez la commande fdisk pour créer une nouvelle partition sur chaque disque et formatez-les en tant que système de fichiers Linux autodétecté en RAID. Commencez par le faire sur /dev/sdb.
```bash ``` { .bash .copy }
sudo fdisk /dev/sdb sudo fdisk /dev/sdb
``` ```
@ -73,25 +73,25 @@ Suivez les mêmes instructions pour créer une partition Linux autodétectée en
[MDADM](https://fr.wikipedia.org/wiki/Mdadm) est utilisé pour gérer les dispositifs MD (multiples dispositifs), également connus sous le nom de RAID logiciel Linux. [MDADM](https://fr.wikipedia.org/wiki/Mdadm) est utilisé pour gérer les dispositifs MD (multiples dispositifs), également connus sous le nom de RAID logiciel Linux.
??? note "Pour installer mdadm selon votre distribution de Linux" ??? note "Pour installer mdadm selon votre distribution de Linux"
=== "Debian/Ubuntu" === "Debian/Ubuntu"
```bash ``` { .bash .copy }
sudo apt install mdadm sudo apt install mdadm
``` ```
=== "CentOS/Redhat" === "CentOS/Redhat"
```bash ``` { .bash .copy }
sudo yum install mdadm sudo yum install mdadm
``` ```
=== "SUSE" === "SUSE"
```bash ``` { .bash .copy }
sudo zypper install mdadm sudo zypper install mdadm
``` ```
=== "Arch Linux" === "Arch Linux"
```bash ``` { .bash .copy }
sudo pacman -S mdadm sudo pacman -S mdadm
``` ```
Examinons les deux dispositifs: Examinons les deux dispositifs:
```bash ``` { .bash .copy }
sudo mdadm --examine /dev/sdb /dev/sdc sudo mdadm --examine /dev/sdb /dev/sdc
``` ```
@ -99,7 +99,7 @@ sudo mdadm --examine /dev/sdb /dev/sdc
Vous pouvez voir que les deux sont de type "fd" (Linux autodétecté en RAID). À ce stade, il n'y a pas de configuration RAID sur /dev/sdb1 et /dev/sdc1, ce qui peut être déduit avec cette commande: Vous pouvez voir que les deux sont de type "fd" (Linux autodétecté en RAID). À ce stade, il n'y a pas de configuration RAID sur /dev/sdb1 et /dev/sdc1, ce qui peut être déduit avec cette commande:
```bash ``` { .bash .copy }
sudo mdadm --examine /dev/sdb1 /dev/sdc1 sudo mdadm --examine /dev/sdb1 /dev/sdc1
``` ```
@ -109,7 +109,7 @@ sudo mdadm --examine /dev/sdb1 /dev/sdc1
#### Exécutez la commande suivante pour créer un RAID 1. Le lecteur logique sera nommé /dev/md0. #### Exécutez la commande suivante pour créer un RAID 1. Le lecteur logique sera nommé /dev/md0.
```bash ``` { .bash .copy }
sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc1 sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc1
``` ```
@ -119,7 +119,7 @@ sudo mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 /dev/sdc1
Maintenant, nous pouvons le vérifier avec : Maintenant, nous pouvons le vérifier avec :
```bash ``` { .bash .copy }
cat /proc/mdstat cat /proc/mdstat
``` ```
@ -127,7 +127,7 @@ cat /proc/mdstat
Vous pouvez voir que md0 est actif et qu'il s'agit d'une configuration RAID 1. Pour obtenir des informations plus détaillées sur /dev/md0, vous pouvez utiliser les commandes ci-dessous : Vous pouvez voir que md0 est actif et qu'il s'agit d'une configuration RAID 1. Pour obtenir des informations plus détaillées sur /dev/md0, vous pouvez utiliser les commandes ci-dessous :
```bash ``` { .bash .copy }
sudo mdadm --detail /dev/md0 sudo mdadm --detail /dev/md0
``` ```
@ -135,7 +135,7 @@ sudo mdadm --detail /dev/md0
Pour obtenir des informations détaillées sur chaque dispositif RAID, exécutez cette commande : Pour obtenir des informations détaillées sur chaque dispositif RAID, exécutez cette commande :
```bash ``` { .bash .copy }
sudo mdadm --examine /dev/sdb1 /dev/sdc1 sudo mdadm --examine /dev/sdb1 /dev/sdc1
``` ```
@ -145,20 +145,20 @@ sudo mdadm --examine /dev/sdb1 /dev/sdc1
#### Formatez-le en système de fichiers ext4. #### Formatez-le en système de fichiers ext4.
```bash ``` { .bash .copy }
sudo mkfs.ext4 /dev/md0 sudo mkfs.ext4 /dev/md0
``` ```
#### Créer un point de montage /mnt/raid1 et montez le lecteur RAID 1 #### Créer un point de montage /mnt/raid1 et montez le lecteur RAID 1
```bash ``` { .bash .copy }
sudo mkdir /mnt/raid1 sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1 sudo mount /dev/md0 /mnt/raid1
``` ```
Vous pouvez utiliser cette commande pour vérifier la quantité d'espace disque dont vous disposez. Vous pouvez utiliser cette commande pour vérifier la quantité d'espace disque dont vous disposez.
```bash ``` { .bash .copy }
df -h /mnt/raid1 df -h /mnt/raid1
``` ```
@ -168,29 +168,29 @@ df -h /mnt/raid1
#### Sauvegarder notre configuration RAID1 avec la commande suivante: #### Sauvegarder notre configuration RAID1 avec la commande suivante:
```bash ``` { .bash .copy }
sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf
``` ```
Output: Output:
```bash ``` { .bash .copy }
ARRAY /dev/md/0 level=raid1 num-devices=2 metadata=1.2 spares=1 name=xenial:0 UUID=c7a2743d:f1e0d872:b2ad29cd:e2bee48c ARRAY /dev/md/0 level=raid1 num-devices=2 metadata=1.2 spares=1 name=xenial:0 UUID=c7a2743d:f1e0d872:b2ad29cd:e2bee48c
- devices=/dev/sdb1,/dev/sdc1 - devices=/dev/sdb1,/dev/sdc1
``` ```
!!! tip "Sur certaines distributions Linux telles que CentOS, le fichier de configuration pour mdadm se trouve dans /etc/mdadm/mdadm.conf. Vous devrez exécuter la commande suivante pour générer une nouvelle image initramfs après avoir exécuté la commande ci-dessus." !!! tip "Sur certaines distributions Linux telles que CentOS, le fichier de configuration pour mdadm se trouve dans /etc/mdadm/mdadm.conf. Vous devrez exécuter la commande suivante pour générer une nouvelle image initramfs après avoir exécuté la commande ci-dessus."
```bash ``` { .bash .copy }
sudo update-initramfs -u sudo update-initramfs -u
``` ```
!!! note "Pour monter automatiquement le lecteur logique RAID 1 au démarrage, ajouter une entrée dans le fichier /etc/fstab" !!! note "Pour monter automatiquement le lecteur logique RAID 1 au démarrage, ajouter une entrée dans le fichier /etc/fstab"
=== "base" === "base"
```bash ``` { .bash .copy }
/dev/md0 /mnt/raid1 ext4 defaults 0 0 /dev/md0 /mnt/raid1 ext4 defaults 0 0
``` ```
=== "avançé (pour voir le volume RAID dans le gestionnaire de fichiers)" === "avançé (pour voir le volume RAID dans le gestionnaire de fichiers)"
```bash ``` { .bash .copy }
/dev/md0 /mnt/raid1 ext4- defaults,x-gvfs-show 0 0 /dev/md0 /mnt/raid1 ext4- defaults,x-gvfs-show 0 0
``` ```
@ -198,7 +198,7 @@ sudo update-initramfs -u
Si vous ne souhaitez plus utiliser le RAID, exécutez la commande suivante pour le supprimer. Si vous ne souhaitez plus utiliser le RAID, exécutez la commande suivante pour le supprimer.
```bash ``` { .bash .copy }
sudo umount /mnt/raid1 sudo umount /mnt/raid1
sudo mdadm --remove /dev/md0 sudo mdadm --remove /dev/md0
``` ```
@ -206,7 +206,7 @@ sudo mdadm --remove /dev/md0
Ensuite, éditez le fichier mdadm.conf et commentez la définition RAID : Ensuite, éditez le fichier mdadm.conf et commentez la définition RAID :
!!! note "Editez le fichier /etc/fstab et commentez la ligne qui active le montage automatique du dispositif RAID" !!! note "Editez le fichier /etc/fstab et commentez la ligne qui active le montage automatique du dispositif RAID"
```bash ``` { .bash .copy }
#ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 spares=1 name=bionic:0 UUID=76c80bd0:6b1fe526:90807435:99030af9 #ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 spares=1 name=bionic:0 UUID=76c80bd0:6b1fe526:90807435:99030af9
# devices=/dev/sda1,/dev/sdb1 # devices=/dev/sda1,/dev/sdb1
``` ```

View File

@ -11,7 +11,7 @@ On utilise ensuite la valeur saisie stockée dans une variable.
Utilisez [`HereDoc`](heredoc.md) pour afficher du contenu sur plusieurs lignes! Utilisez [`HereDoc`](heredoc.md) pour afficher du contenu sur plusieurs lignes!
#### Usage minimal #### Usage minimal
``` ``` { .bash .copy }
visiteur@domani:~$ read visiteur@domani:~$ read
mot mot
visiteur@domani:~$ echo $REPLY visiteur@domani:~$ echo $REPLY
@ -19,7 +19,7 @@ mot
``` ```
#### Définissez la variable qui contient le résultat, au lieu du défaut `$REPLY` #### Définissez la variable qui contient le résultat, au lieu du défaut `$REPLY`
``` ``` { .bash .copy }
visiteur@domani:~$ read MAREPONSE visiteur@domani:~$ read MAREPONSE
truc truc
visiteur@domani:~$ echo $MAREPONSE visiteur@domani:~$ echo $MAREPONSE
@ -27,7 +27,7 @@ truc
``` ```
#### Utilisez ++space++, ou n'importe quel caractère pour délimiter la fin de la réponse #### Utilisez ++space++, ou n'importe quel caractère pour délimiter la fin de la réponse
``` ``` { .bash .copy }
visiteur@domani:~$ read '-d ' visiteur@domani:~$ read '-d '
truc visiteur@domani:~$ truc visiteur@domani:~$
@ -36,20 +36,20 @@ trucAvisiteur@domani:~$
``` ```
#### Utiliser `read -s` pour garder secrète la saisie de l'utilisateur #### Utiliser `read -s` pour garder secrète la saisie de l'utilisateur
``` ``` { .bash .copy }
visiteur@domani:~$ read -s visiteur@domani:~$ read -s
visiteur@domani:~$ echo $REPLY visiteur@domani:~$ echo $REPLY
secret secret
``` ```
#### Utilisez `read -p` pour afficher un message avant la saisie (pas de retour à la ligne) #### Utilisez `read -p` pour afficher un message avant la saisie (pas de retour à la ligne)
``` ``` { .bash .copy }
visiteur@domani:~$ read -p "Continuez ? (y/n) : " visiteur@domani:~$ read -p "Continuez ? (y/n) : "
Continuez ? (y/n) : y Continuez ? (y/n) : y
``` ```
#### Répéter l'invite de saisie tant que la valeur n'est pas correcte #### Répéter l'invite de saisie tant que la valeur n'est pas correcte
``` ``` { .bash .copy }
until [[ $VALUE ]] ; do until [[ $VALUE ]] ; do
read -p "Enter value for $var : " VALUE; read -p "Enter value for $var : " VALUE;
done ; done ;
@ -57,7 +57,7 @@ Continuez ? (y/n) : y
#### Avec une itération dans une liste #### Avec une itération dans une liste
``` ``` { .bash .copy }
for var in ${VAR_LIST[@]}; do for var in ${VAR_LIST[@]}; do
VALUE="" VALUE=""
until [[ $VALUE ]] ; do until [[ $VALUE ]] ; do

View File

@ -1,25 +1,30 @@
# Screen # Screen
1.Installation 1.Installation
``` { .bash .copy }
sudo apt install screen sudo apt install screen
```
2.Pour démarrer une nouvelle session: 2.Pour démarrer une nouvelle session:
``` { .bash .copy }
screen -S nom-de-la-session screen -S nom-de-la-session
```
3.Pour laisser la session en arrière plan 3.Pour laisser la session en arrière plan
``` { .bash .copy }
++ctrl+a+d++ ++ctrl+a+d++
```
4.Pour lister les sessions existantes: 4.Pour lister les sessions existantes:
``` { .bash .copy }
screen -ls screen -ls
```
5.Pour se reconnecter : 5.Pour se reconnecter :
``` { .bash .copy }
screen -r nom-de-la-session
```
screen -r nom-de-la-session **See [https://linuxize.com/post/how-to-use-linux-screen/](https://linuxize.com/post/how-to-use-linux-screen/)**
**See [https://linuxize.com/post/how-to-use-linux-screen/](https://linuxize.com/post/how-to-use-linux-screen/)**
** Pour splitter l'écran: [https://tomlee.co/2011/10/gnu-screen-splitting/](https://tomlee.co/2011/10/gnu-screen-splitting/)** ** Pour splitter l'écran: [https://tomlee.co/2011/10/gnu-screen-splitting/](https://tomlee.co/2011/10/gnu-screen-splitting/)**

View File

@ -2,53 +2,75 @@
## Remove a key from known hosts: ## Remove a key from known hosts:
ssh-keygen -f "/home/user/.ssh/known_hosts" -R "key_name" ``` { .bash .copy }
ssh-keygen -f "/home/user/.ssh/known_hosts" -R "key_name"
```
## Create a key: ## Create a key:
ssh-keygen -o -a 100 -t ed25519 -C user@email #create an ED25519 key ``` { .bash .copy }
ssh-keygen -b 4096 -t rsa -C user@email #create a RSA key ssh-keygen -o -a 100 -t ed25519 -C user@email #create an ED25519 key
ssh-add newkey #add newkey to your SSH agent ssh-keygen -b 4096 -t rsa -C user@email #create a RSA key
ssh-add * ssh-add newkey #add newkey to your SSH agent
ssh-add . ssh-add *
ssh-add .
```
## List existing keys: ## List existing keys:
ssh-add -l ``` { .bash .copy }
ssh-add -l
```
## Display a key: ## Display a key:
cat /home/user/.ssh/key_name ``` { .bash .copy }
cat /home/user/.ssh/key_name
```
## Display a key fingerprint (with random art image): ## Display a key fingerprint (with random art image):
ssh-keygen -lvf key_name ``` { .bash .copy }
ssh-keygen -lvf key_name
```
## Enable SSH agent: ## Enable SSH agent:
eval $(ssh-agent -s) ``` { .bash .copy }
eval $(ssh-agent -s)
```
## Copy a key to a distant server: ## Copy a key to a distant server:
ssh-copy-id user@server #Copy all keys that are registered in SSH agent ``` { .bash .copy }
ssh-copy-id -i newkey.pub user@server\n #Copy newkey.pub ssh-copy-id user@server #Copy all keys that are registered in SSH agent
ssh-copy-id -i newkey.pub user@server\n #Copy newkey.pub
```
## Remove a key: ## Remove a key:
Removing a key from a server can be done by editing your `/home/user/.ssh/authorized_keys` file. ??? note "Removing a key from a server"
It can be done by editing your `/home/user/.ssh/authorized_keys` file.
``` { .bash .copy }
nano /home/$(whoami)/.ssh/authorized_keys
```
Type ++ctrl+k++ to delete the line
## Connect and copy from a different port number: ## Connect and copy from a different port number:
ssh -p port user@server ``` { .bash .copy }
scp -P port file user@server:way/ ssh -p port user@server
rsync -e ssh -avz /source server:/target scp -P port file user@server:way/
rsync -ave ssh server:/source /target rsync -e ssh -avz /source server:/target
ssh-copy-id -i newkey.pub -p port user@server rsync -ave ssh server:/source /target
ssh-copy-id -i newkey.pub -p port user@server
```
## Connect a distant server in your file browser under Linux using SFTP: ## Connect a distant server in your file browser under Linux using SFTP:
Type the adress: Type the adress:
ssh://user@server:port ``` { .bash .copy }
ssh://user@server:port
*See also:* [Enabling a SSH key on a Synology NAS running DSM 6](https://gitlab.com/sakura-lain/ssh-synology-nas-dsm-6/) ```
*Voir aussi:* [Enabling a SSH key on a Synology NAS running DSM 6](https://gitlab.com/sakura-lain/ssh-synology-nas-dsm-6/)

View File

@ -6,20 +6,22 @@
#### Pour passer à un utilisateur admin : #### Pour passer à un utilisateur admin :
``` ``` { .bash .copy }
su bellinuxien su bellinuxien
``` ```
#### installer flatpak pour avoir la dernière version de Minetest #### installer flatpak pour avoir la dernière version de Minetest
sudo apt update ``` { .bash .copy }
sudo apt install flatpak geany sudo apt update
sudo apt install flatpak geany
```
#### On quitte l'admin avec CTRL+D #### On quitte l'admin avec ++ctrl+d++
### Partie 2: en tant qu'utilisateur ### Partie 2: en tant qu'utilisateur
``` ``` { .bash .copy }
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub net.minetest.Minetest flatpak install flathub net.minetest.Minetest
export MT=.var/app/net.minetest.Minetest/.minetest export MT=.var/app/net.minetest.Minetest/.minetest
@ -28,7 +30,7 @@ export MT=.var/app/net.minetest.Minetest/.minetest
#### Installer le jeu du Garage Numérique #### Installer le jeu du Garage Numérique
``` ```
cd $MT ``` { .bash .copy }cd $MT
mkdir games mkdir games
cd games cd games
git clone https://gitlab.com/garagenum/minetest-lug9000 git clone https://gitlab.com/garagenum/minetest-lug9000
@ -41,7 +43,8 @@ git clone https://gitlab.com/garagenum/minetest-lug9000
#### Cloner le projet sur son ordinateur #### Cloner le projet sur son ordinateur
Revenir dans le terminal et écrire: Revenir dans le terminal et écrire:
```
``` { .bash .copy }
cd $MT cd $MT
mkdir mods && cd mods mkdir mods && cd mods
git clone https://gitlab.com/mon-pseudo/monprojet.git git clone https://gitlab.com/mon-pseudo/monprojet.git
@ -49,7 +52,8 @@ cd monprojet
``` ```
#### Créer le fichier init.lua #### Créer le fichier init.lua
```
``` { .bash .copy }
geany init.lua& geany init.lua&
``` ```

View File

@ -18,7 +18,7 @@ Installer à partir des dépots officiels avec [apt](https://debian-facile.org/u
## Installer .Net ## Installer .Net
``` ``` { .bash .copy }
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update; \ sudo apt-get update; \
@ -29,7 +29,7 @@ sudo apt-get update; \
## Installer Mono ## Installer Mono
``` ``` { .bash .copy }
sudo apt install apt-transport-https dirmngr gnupg ca-certificates sudo apt install apt-transport-https dirmngr gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

View File

@ -19,7 +19,7 @@
#### Cliquer sur `Créer un dépôt`. #### Cliquer sur `Créer un dépôt`.
#### Une fois le dépôt créé, le cloner sur votre machine locale : #### Une fois le dépôt créé, le cloner sur votre machine locale :
```bash ``` { .bash .copy }
git clone git@git.legaragenumerique.fr:gitea_username/nom_du_projet.git git clone git@git.legaragenumerique.fr:gitea_username/nom_du_projet.git
``` ```
@ -54,7 +54,7 @@ git clone git@git.legaragenumerique.fr:gitea_username/nom_du_projet.git
``` ```
#### créer la branch deploy et la pousser: #### créer la branch deploy et la pousser:
```bash ``` { .bash .copy }
git checkout -b deploy git checkout -b deploy
git push -u origin deploy git push -u origin deploy
``` ```
@ -64,7 +64,7 @@ git push -u origin deploy
## Mettre à jour son site ## Mettre à jour son site
- Une fois les modifications éffectuée sur vos fichiers, simplement pousser sur le serveur: - Une fois les modifications éffectuée sur vos fichiers, simplement pousser sur le serveur:
```bash ``` { .bash .copy }
git add * git add *
git commit -m "maj fichier example.html" git commit -m "maj fichier example.html"
git push git push
@ -75,17 +75,17 @@ git push
## Retirer son site ## Retirer son site
#### changer de branche (ne plus être sur la branche deploy): #### changer de branche (ne plus être sur la branche deploy):
```bash ``` { .bash .copy }
git checkout main git checkout main
``` ```
#### supprimer la branch `deploy` locale: #### supprimer la branch `deploy` locale:
```bash ``` { .bash .copy }
git branch -d deploy git branch -d deploy
``` ```
#### supprimer la branch `deploy` distante: #### supprimer la branch `deploy` distante:
```bash ``` { .bash .copy }
git push --delete origin deploy git push --delete origin deploy
``` ```

View File

@ -6,7 +6,7 @@
As of debian user we can install with apt As of debian user we can install with apt
``` ``` { .bash .copy }
# install prerequisites # install prerequisites
sudo apt update -qq >/dev/null sudo apt update -qq >/dev/null
sudo apt install -qq -y apt-transport-https sudo apt install -qq -y apt-transport-https
@ -52,7 +52,7 @@ Configure a public/private key pair for ssh root access.
Run following commands as root: Run following commands as root:
1. As root, run `ssh-keygen` 1. As root, run `ssh-keygen`
2. Copy the key to authorized keys for dokku: 2. Copy the key to authorized keys for dokku:
``` ``` { .bash .copy }
cat ~/.ssh/id_rsa.pub |sshcommand acl-add dokku superuser cat ~/.ssh/id_rsa.pub |sshcommand acl-add dokku superuser
``` ```
3. In setup webpage at `http://<dokku.local>`, paste content from `/root/.ssh/id_rsa.pub` (only the part with `ssh-rsa`). 3. In setup webpage at `http://<dokku.local>`, paste content from `/root/.ssh/id_rsa.pub` (only the part with `ssh-rsa`).
@ -61,7 +61,7 @@ Run following commands as root:
## Create app ## Create app
``` ``` { .bash .copy }
git clone https://github.com/heroku/python-getting-started git clone https://github.com/heroku/python-getting-started
dokku apps:create python-getting-started dokku apps:create python-getting-started
dokku postgres:create djangodatabase dokku postgres:create djangodatabase

View File

@ -4,7 +4,7 @@ Ce guide permet d''utiliser l'API de Gitlab / Gitlab avec Bash pour récupérer
## Récupérer la dernière version d'un projet Github ## Récupérer la dernière version d'un projet Github
``` ``` { .bash .copy }
curl -s https://api.github.com/repos/[author]/[repository]/releases/latest |\ curl -s https://api.github.com/repos/[author]/[repository]/releases/latest |\
grep "browser_download_url.*deb" |\ grep "browser_download_url.*deb" |\
cut -d : -f 2,3 |\ cut -d : -f 2,3 |\
@ -14,4 +14,4 @@ wget -qi -
## Récupérer la dernière version d'un projet Gitlab ## Récupérer la dernière version d'un projet Gitlab
``` > A faire

View File

@ -8,7 +8,7 @@ Il permet de stocker son code source en ligne pour y accéder de n'importe où e
## Installation ## Installation
```bash ``` { .bash .copy }
sudo apt install git -y sudo apt install git -y
``` ```
@ -16,62 +16,62 @@ sudo apt install git -y
- Cloner un dépôt distant sur sa machine locale: - Cloner un dépôt distant sur sa machine locale:
```bash ``` { .bash .copy }
git clone https://gitlab.com/mon-dépôt-distant.git git clone https://gitlab.com/mon-dépôt-distant.git
``` ```
- Initialiser un dossier de projet pour le "pousser" en ligne: - Initialiser un dossier de projet pour le "pousser" en ligne:
```bash ``` { .bash .copy }
cd mon-projet/ cd mon-projet/
git init git init
``` ```
- Ajouter des fichiers au suivi (pour les synchroniser vers un dépôt distant): - Ajouter des fichiers au suivi (pour les synchroniser vers un dépôt distant):
```bash ``` { .bash .copy }
git add fichier1 fichier2 git add fichier1 fichier2
``` ```
- Créer un enregistrement (une version) du code avec un commentaire: - Créer un enregistrement (une version) du code avec un commentaire:
```bash ``` { .bash .copy }
git commit -m "commentaire (exemple: modification du fichier1, ajout fonction test)" git commit -m "commentaire (exemple: modification du fichier1, ajout fonction test)"
``` ```
- Pousser les changements vers le dépôt distant (Gitlab ou Github par exemple): - Pousser les changements vers le dépôt distant (Gitlab ou Github par exemple):
```bash ``` { .bash .copy }
git push git push
``` ```
- Changer de branche dans le projet: - Changer de branche dans le projet:
```bash ``` { .bash .copy }
git checkout nom-de-la-branche git checkout nom-de-la-branche
``` ```
- Créer une nouvelle branche à partir de la branche actuelle: - Créer une nouvelle branche à partir de la branche actuelle:
```bash ``` { .bash .copy }
git branch nom-nouvelle-branche git branch nom-nouvelle-branche
``` ```
- Pousser une branche nouvellement créée en local vers le dépôt distant: - Pousser une branche nouvellement créée en local vers le dépôt distant:
```bash ``` { .bash .copy }
git push origin nom-nouvelle-branche git push origin nom-nouvelle-branche
``` ```
- Effacer une branch locale: - Effacer une branch locale:
```bash ``` { .bash .copy }
git branch -d branche-a-effacer git branch -d branche-a-effacer
``` ```
- Effacer une branche du dépôt distant: - Effacer une branche du dépôt distant:
```bash ``` { .bash .copy }
git push origin --delete branche-a-effacer git push origin --delete branche-a-effacer
``` ```
@ -81,31 +81,31 @@ git push origin --delete branche-a-effacer
- Cloner un dépôt distant sur sa machine locale: - Cloner un dépôt distant sur sa machine locale:
```bash ``` { .bash .copy }
git clone https://gitlab.com/mon-dépôt-distant.git git clone https://gitlab.com/mon-dépôt-distant.git
``` ```
- Entrer dans le dossier du dépôt et modifier un fichier: - Entrer dans le dossier du dépôt et modifier un fichier:
```bash ``` { .bash .copy }
cd mon-dépôt-distant/ # modification sur un fichier cd mon-dépôt-distant/ # modification sur un fichier
``` ```
- Ajouter le fichier modifié au suivi: - Ajouter le fichier modifié au suivi:
```bash ``` { .bash .copy }
git add fichier-modifié git add fichier-modifié
``` ```
- Créer un enregistrement de la modification - Créer un enregistrement de la modification
```bash ``` { .bash .copy }
git commit -m "modif fichier-modifié" git commit -m "modif fichier-modifié"
``` ```
- Pousser les changements sur le dépôt en ligne: - Pousser les changements sur le dépôt en ligne:
```bash ``` { .bash .copy }
git push git push
``` ```
@ -113,14 +113,14 @@ git push
- On entre dans le dossier et on l'initialise en tant que dépôt git: - On entre dans le dossier et on l'initialise en tant que dépôt git:
```bash ``` { .bash .copy }
cd mon-dépôt-local/ cd mon-dépôt-local/
git init git init
``` ```
- Ajouter tout les fichiers du dossier au suivi: - Ajouter tout les fichiers du dossier au suivi:
```bash ``` { .bash .copy }
git add * git add *
# ou # ou
git add . git add .
@ -128,19 +128,19 @@ git add .
- Ajouter l'adresse du dépôt distant qui va recevoir le dépôt local: - Ajouter l'adresse du dépôt distant qui va recevoir le dépôt local:
```bash ``` { .bash .copy }
git remote add origin https://gitlab.com/mon-user/mon-nouveau-dépôt.git git remote add origin https://gitlab.com/mon-user/mon-nouveau-dépôt.git
``` ```
- Créer un enregistrement avec un commentaire: - Créer un enregistrement avec un commentaire:
```bash ``` { .bash .copy }
git commit -m "premier push" git commit -m "premier push"
``` ```
- Pousser le nouveau dépôt vers le dépôt distant en ligne: - Pousser le nouveau dépôt vers le dépôt distant en ligne:
```bash ``` { .bash .copy }
git push origin main # ou le nom de la branche git push origin main # ou le nom de la branche
``` ```
@ -148,7 +148,7 @@ git push origin main # ou le nom de la branche
- Récupérer localement les changements du dépôt distant: - Récupérer localement les changements du dépôt distant:
```bash ``` { .bash .copy }
git pull git pull
``` ```
@ -156,31 +156,31 @@ git pull
- Savoir sur quelle branche on se trouve et les branches disponibles localement: - Savoir sur quelle branche on se trouve et les branches disponibles localement:
```bash ``` { .bash .copy }
git branch git branch
``` ```
- Créer une nouvelle branche et basculer vers la nouvelle branche: - Créer une nouvelle branche et basculer vers la nouvelle branche:
```bash ``` { .bash .copy }
git checkout -b nom-nouvelle-branche git checkout -b nom-nouvelle-branche
``` ```
- Connaitre l'état du dépôt local: - Connaitre l'état du dépôt local:
```bash ``` { .bash .copy }
git status git status
``` ```
- Revenir à l'état après le git clone en éffaçant les chagements éffectués: - Revenir à l'état après le git clone en éffaçant les chagements éffectués:
```bash ``` { .bash .copy }
git reset --hard HEAD git reset --hard HEAD
``` ```
- Visualiser les différences entre les fichiers originaux et les fichiers modifiés: - Visualiser les différences entre les fichiers originaux et les fichiers modifiés:
```bash ``` { .bash .copy }
git diff git diff
``` ```
@ -190,7 +190,7 @@ Pour éviter de faire des "git branch" pour savoir dans quelle branche on se tro
??? note "~/.bashrc" ??? note "~/.bashrc"
=== "Ajouter à la fin" === "Ajouter à la fin"
```bash ``` { .bash .copy }
git_branch() { git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/' git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
} }

View File

@ -6,19 +6,19 @@
- Installer Ollama: - Installer Ollama:
```bash ``` { .bash .copy }
curl -fsSL https://ollama.com/install.sh | sh curl -fsSL https://ollama.com/install.sh | sh
``` ```
- Télécharger le modèle: - Télécharger le modèle:
```bash ``` { .bash .copy }
ollama pull llama3:latest ollama pull llama3:latest
``` ```
- Lancer le modèle: - Lancer le modèle:
```bash ``` { .bash .copy }
ollama run llama3:latest ollama run llama3:latest
``` ```
@ -35,7 +35,7 @@ ollama run llama3:latest
## Configuration ## Configuration
??? note "Editer le fichier config.json:" ??? note "Editer le fichier config.json:"
```bash ``` { .bash .copy }
{ {
"models": [ "models": [
{ {
@ -56,19 +56,19 @@ ollama run llama3:latest
- Stopper le service: - Stopper le service:
```bash ``` { .bash .copy }
sudo systemctl stop ollama sudo systemctl stop ollama
``` ```
- Démarrer le service: - Démarrer le service:
```bash ``` { .bash .copy }
sudo systemctl start ollama sudo systemctl start ollama
``` ```
- Supprimer un modèle: - Supprimer un modèle:
```bash ``` { .bash .copy }
ollama rm <MODEL> ollama rm <MODEL>
``` ```
@ -78,6 +78,6 @@ ollama rm <MODEL>
- Télécharger un modèle: - Télécharger un modèle:
```bash ``` { .bash .copy }
ollama pull <MODEL> ollama pull <MODEL>
``` ```

View File

@ -4,11 +4,11 @@
Par défaut, fprintd et libpam-fprintd sont les paquets faisant fonctionner les lecteurs d'empreintes sur Debian. Par défaut, fprintd et libpam-fprintd sont les paquets faisant fonctionner les lecteurs d'empreintes sur Debian.
Le support est très limité, mais il faut déjà commencer par là Le support est très limité, mais il faut déjà commencer par là
```console ``` { .bash .copy }
sudo apt-get install fprintd libpam-fprintd sudo apt-get install fprintd libpam-fprintd
``` ```
Pour enregistrer l'empreinte : Pour enregistrer l'empreinte :
```console ``` { .bash .copy }
fprintd-enroll fprintd-enroll
``` ```
Si on a de la chance, on a le message Si on a de la chance, on a le message
@ -22,11 +22,11 @@ Impossible to enroll: GDBus.Error:net.reactivated.Fprint.Error.NoSuchDevice: No
## Installation de python-validity ## Installation de python-validity
Python-validity est un projet pour élargir le support des lecteurs d'empreintes sur Linux. Pour l'installer sur Debian on passe par le PPA d'Ubuntu Python-validity est un projet pour élargir le support des lecteurs d'empreintes sur Linux. Pour l'installer sur Debian on passe par le PPA d'Ubuntu
```console ``` { .bash .copy }
sudo add-apt-repository ppa:uunicorn/open-fprintd sudo add-apt-repository ppa:uunicorn/open-fprintd
``` ```
Il va falloir modifier les dépôts, car ceux par défauts sont ceux de la toute dernière version d'Ubuntu Il va falloir modifier les dépôts, car ceux par défauts sont ceux de la toute dernière version d'Ubuntu
```console ``` { .bash .copy }
# /etc/apt/sources.list.d/uunicorn-ubuntu-open-fprintd-mantic.list # /etc/apt/sources.list.d/uunicorn-ubuntu-open-fprintd-mantic.list
deb http://ppa.launchpad.net/uunicorn/open-fprintd/ubuntu focal main deb http://ppa.launchpad.net/uunicorn/open-fprintd/ubuntu focal main
``` ```
@ -37,14 +37,14 @@ Pour en savoir plus sur les noms de code d'Ubuntu
(le nom de code est le premier mot, ex: Focal Fossa : focal) (le nom de code est le premier mot, ex: Focal Fossa : focal)
:warning: Keyserver fonctionnelle sur Debian 12.5 :warning: Keyserver fonctionnelle sur Debian 12.5
```console ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D4C774BA6D18F90 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D4C774BA6D18F90
apt update apt update
sudo apt-get install open-fprintd fprintd-clients python3-validity sudo apt-get install open-fprintd fprintd-clients python3-validity
``` ```
Une fois installé on réessaye Une fois installé on réessaye
```console ``` { .bash .copy }
fprintd-enroll fprintd-enroll
``` ```
Il faudra appuyer son doigt contre le capteur et le relever, jusqu'au message Il faudra appuyer son doigt contre le capteur et le relever, jusqu'au message
@ -55,7 +55,7 @@ Si jamais l'erreur "No devices available" persiste, il n'y a quasiment aucune so
## Authentification pour sudo ## Authentification pour sudo
Par défaut, seulement la session est déblocable avec l'empreinte, pour utiliser sudo Par défaut, seulement la session est déblocable avec l'empreinte, pour utiliser sudo
```console ``` { .bash .copy }
pam-auth-update pam-auth-update
``` ```
Il faudra cocher "Fingerprint authentification" et valider Il faudra cocher "Fingerprint authentification" et valider

View File

@ -15,7 +15,7 @@ To understand how to use this starter kit, follow the tutorial at [https://docs.
### Installation de Tiled (éditeur de map) ### Installation de Tiled (éditeur de map)
- Ouvrir un terminal et copier les commandes suivantes: - Ouvrir un terminal et copier les commandes suivantes:
```bash ``` { .bash .copy }
git clone https://github.com/GregLebreton/adventure-map.git git clone https://github.com/GregLebreton/adventure-map.git
cd adventure-map cd adventure-map
./install.sh ./install.sh
@ -29,13 +29,13 @@ tiled
### Installation de npm (server local) ### Installation de npm (server local)
```bash ``` { .bash .copy }
sudo apt install npm -y sudo apt install npm -y
``` ```
### Utilisation ### Utilisation
```bash ``` { .bash .copy }
npm install npm install
npm run start npm run start
``` ```

View File

@ -8,7 +8,7 @@ A l'origine, nwipe est un fork de la commande dwipe utilisée à l'origine par D
## INSTALLATION ## INSTALLATION
```bash ``` { .bash .copy }
sudo apt install nwipe sudo apt install nwipe
``` ```
@ -17,7 +17,7 @@ sudo apt install nwipe
## AFFICHER LES INFORMATIONS DISQUES ## AFFICHER LES INFORMATIONS DISQUES
Avant d'utiliser nwipe, il est important d'identifier quel disque nous allons effacer, pour ce faire entrez la commande ci-dessous: Avant d'utiliser nwipe, il est important d'identifier quel disque nous allons effacer, pour ce faire entrez la commande ci-dessous:
```bash ``` { .bash .copy }
lsblk lsblk
``` ```
Cette commande permet d'obtenir la liste et les caractéristiques des disques et de leurs partitions. (La commande ne nécessite pas les droits administrateurs pour être exécutée). Cette commande permet d'obtenir la liste et les caractéristiques des disques et de leurs partitions. (La commande ne nécessite pas les droits administrateurs pour être exécutée).
@ -25,7 +25,7 @@ Cette commande permet d'obtenir la liste et les caractéristiques des disques et
<!-- [LSBLK](sblk2.jpg) --> <!-- [LSBLK](sblk2.jpg) -->
:warning: veillez bien à démonter les partitions si c'est le cas comme dans l'exemple ci-dessous. :warning: veillez bien à démonter les partitions si c'est le cas comme dans l'exemple ci-dessous.
```bash ``` { .bash .copy }
sudo umount /home/user/DISK sudo umount /home/user/DISK
``` ```
@ -34,7 +34,7 @@ sudo umount /home/user/DISK
## UTILISATION ## UTILISATION
Pour ouvir Nwipe, utilisez la commande ci-dessous dans le terminal Pour ouvir Nwipe, utilisez la commande ci-dessous dans le terminal
```bash ``` { .bash .copy }
sudo nwipe sudo nwipe
``` ```

View File

@ -2,7 +2,7 @@
## Cloner le projet ## Cloner le projet
``` ``` { .bash .copy }
makayabou@domani:~$ git clone https://gitlab.com/garagenum/tools/linux/debian-customizer.git makayabou@domani:~$ git clone https://gitlab.com/garagenum/tools/linux/debian-customizer.git
Clonage dans 'debian-customizer'... Clonage dans 'debian-customizer'...
remote: Enumerating objects: 717, done. remote: Enumerating objects: 717, done.
@ -15,7 +15,7 @@ Résolution des deltas: 100% (858/858), fait.
## Exécuter le script ## Exécuter le script
``` ``` { .bash .copy }
cd debian-customizer/ cd debian-customizer/
sudo bash install-pxe-server.sh sudo bash install-pxe-server.sh
``` ```

View File

@ -2,36 +2,41 @@
## Setting up a password for root user just after install: ## Setting up a password for root user just after install:
``` { .bash .copy }
sudo mysql -u root
```
sudo mysql -u root
## Resetting root password: ## Resetting root password:
``` { .bash .copy }
sudo mysql_secure_installation
```
sudo mysql_secure_installation
## Creating a user and granting privileges: ## Creating a user and granting privileges:
``` { .sql .copy }
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON database_name.* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; GRANT ALL ON database_name.* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
```
Granting privileges on all databases: Granting privileges on all databases:
``` { .sql .copy }
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'; GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
```
Changing a user's password: Changing a user's password:
``` { .sql .copy }
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password');
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password'); ALTER USER 'user'@'localhost' IDENTIFIED BY 'password';
```
ALTER USER 'user'@'localhost' IDENTIFIED BY 'password';
Listing all users : Listing all users :
``` { .sql .copy }
SELECT User, Host, Password FROM mysql.user; SELECT User, Host, Password FROM mysql.user;
```
Changing a user's associated host (example from host % to host loclahost): Changing a user's associated host (example from host % to host loclahost):
``` { .sql .copy }
UPDATE mysql.user SET Host='localhost' WHERE Host='%' AND User='user' UPDATE mysql.user SET Host='localhost' WHERE Host='%' AND User='user'
```
See also, on users management: See also, on users management:
@ -49,47 +54,55 @@ See also, on users management:
- [Changing MySQL user password](https://linuxacademy.com/blog/linux/changing-mysql-user-password/) - [Changing MySQL user password](https://linuxacademy.com/blog/linux/changing-mysql-user-password/)
## Connecting to MySQL: ## Connecting to MySQL:
``` { .bash .copy }
sudo mysql
```
sudo mysql
## Creating a database: ## Creating a database:
``` { .sql .copy }
CREATE DATABASE lpic CHARACTER SET 'utf8'; #Beware of encoding
```
CREATE DATABASE lpic CHARACTER SET 'utf8'; #Beware of encoding
## Saving databases (basic level, assuming your user is root): ## Saving databases (basic level, assuming your user is root):
``` { .bash .copy }
mysqldump -u root -p password database > database.sql #insecure
MYSQL_PWD="password" mysqldump -u root database > database.sql #secure
MYSQL_PWD="password" mysqldump -u root --all-databases > database.sql
```
mysqldump -u root -p password database > database.sql #insecure
MYSQL_PWD="password" mysqldump -u root database > database.sql #secure
MYSQL_PWD="password" mysqldump -u root --all-databases > database.sql
See also, for more advanced features): See also, for more advanced features):
- [Utilisation de myssqldump](https://www.geek-directeur-technique.com/2017/07/17/utilisation-de-mysqldump) - [Utilisation de myssqldump](https://www.geek-directeur-technique.com/2017/07/17/utilisation-de-mysqldump)
- [Guide de sauvegarde et restauration MySQL](https://www.memoinfo.fr/tutoriels-linux/guide-sauvegarde-restauration-mysql/) - [Guide de sauvegarde et restauration MySQL](https://www.memoinfo.fr/tutoriels-linux/guide-sauvegarde-restauration-mysql/)
## Deleting databases: ## Deleting databases:
``` { .sql .copy }
DROP DATABASE [IF EXISTS] database_name;
```
DROP DATABASE [IF EXISTS] database_name;
## Checking a database encoding (default is UTF8): ## Checking a database encoding (default is UTF8):
``` { .sql .copy }
SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
```
SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "database_name";
See: [How to convert a MySQL database to UTF-8 encoding](https://www.a2hosting.es/kb/developer-corner/mysql/convert-mysql-database-utf-8) See: [How to convert a MySQL database to UTF-8 encoding](https://www.a2hosting.es/kb/developer-corner/mysql/convert-mysql-database-utf-8)
## Checking the MySQL version: ## Checking the MySQL version:
``` { .sql .copy }
SELECT @@version; SELECT @@version;
```
## Leaving the MySQL prompt: ## Leaving the MySQL prompt:
``` { .sql .copy }
quit
```
quit
## Stopping/starting/restarting the service: ## Stopping/starting/restarting the service:
``` { .bash .copy }
sudo systemctl stop mysql sudo systemctl stop mysql
sudo service mysql stop sudo service mysql stop
sudo /etc/init.d/mysqld stop sudo /etc/init.d/mysqld stop
```
## Courses and tutorials in French: ## Courses and tutorials in French:

View File

@ -10,7 +10,7 @@ Ainsi nous pourrons utiliser le serveur de notre choix pour notre web-applicatio
On installe Nginx à partir des dépôts Debian, de façon à avoir une version stable, avec l'apport des correctifs de sécurité, et qui ne sera jamais cassé par une modification du système. On installe Nginx à partir des dépôts Debian, de façon à avoir une version stable, avec l'apport des correctifs de sécurité, et qui ne sera jamais cassé par une modification du système.
``` ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt upgrade sudo apt upgrade
sudo apt install nginx sudo apt install nginx
@ -24,19 +24,19 @@ Dans votre navigateur, en tapant dabs la barre d'adresse `http://IP_DU_SERVEUR`,
### Installation des dépendances ### Installation des dépendances
``` ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
``` ```
### Installation de la clé du dépôt Docker ### Installation de la clé du dépôt Docker
``` ``` { .bash .copy }
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
``` ```
### Ajout du dépôt docker dans le **sources.list** ### Ajout du dépôt docker dans le **sources.list**
``` ``` { .bash .copy }
sudo add-apt-repository \ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \ "deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \ $(lsb_release -cs) \
@ -45,13 +45,13 @@ sudo add-apt-repository \
### Mise à jour de la liste des paquets et installation de docker ### Mise à jour de la liste des paquets et installation de docker
``` ``` { .bash .copy }
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
``` ```
### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo ### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo
``` ``` { .bash .copy }
sudo usermod -aG docker $USER sudo usermod -aG docker $USER
newgrp docker newgrp docker
``` ```
@ -60,7 +60,7 @@ newgrp docker
## Installation de Docker-Compose ## Installation de Docker-Compose
### Téléchargement de Docker-Compose ### Téléchargement de Docker-Compose
``` ``` { .bash .copy }
curl -s https://api.github.com/repos/docker/compose/releases/latest \ curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep browser_download_url \ | grep browser_download_url \
| grep docker-compose-linux-x86_64 \ | grep docker-compose-linux-x86_64 \
@ -70,14 +70,14 @@ curl -s https://api.github.com/repos/docker/compose/releases/latest \
### Mise en place de l'exécutable ### Mise en place de l'exécutable
``` ``` { .bash .copy }
chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo systemctl restart docker sudo systemctl restart docker
``` ```
### Auto-complétion pour Bash ### Auto-complétion pour Bash
``` ``` { .bash .copy }
sudo mkdir -p /etc/bash_completion.d sudo mkdir -p /etc/bash_completion.d
sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
source /etc/bash_completion.d/docker-compose source /etc/bash_completion.d/docker-compose
@ -89,7 +89,7 @@ source /etc/bash_completion.d/docker-compose
### Création d'un dossier pour le projet ### Création d'un dossier pour le projet
``` ``` { .bash .copy }
mkdir nextcloud && cd nextcloud mkdir nextcloud && cd nextcloud
``` ```
@ -100,7 +100,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
#### config.php #### config.php
??? note "config.php" ??? note "config.php"
``` ``` { .php .copy }
<?php <?php
$CONFIG = array ( $CONFIG = array (
'htaccess.RewriteBase' => '/', 'htaccess.RewriteBase' => '/',
@ -184,7 +184,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
#### Internal.php #### Internal.php
??? note "Internal.php" ??? note "Internal.php"
``` ``` { .php .copy }
<?php <?php
declare(strict_types=1); declare(strict_types=1);
@ -411,7 +411,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
#### mimetypemapping.json #### mimetypemapping.json
??? note "mimetypemapping.json" ??? note "mimetypemapping.json"
``` ``` { .json .copy }
{ {
"drawio": ["application/x-drawio"], "drawio": ["application/x-drawio"],
"pad": ["application/x-ownpad"], "pad": ["application/x-ownpad"],
@ -623,7 +623,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
``` ```
#### Création des dossiers pour les volumes permanents #### Création des dossiers pour les volumes permanents
```bash ``` { .bash .copy }
sudo mkdir /data/nextcloud/{data,config,apps,mysql} -p sudo mkdir /data/nextcloud/{data,config,apps,mysql} -p
sudo chown -R www-data:root /data/nextcloud sudo chown -R www-data:root /data/nextcloud
sudo chown -R 999:root /data/nextcloud/mysql sudo chown -R 999:root /data/nextcloud/mysql
@ -634,14 +634,14 @@ sudo chown -R 999:root /data/nextcloud/mysql
#### redis.conf #### redis.conf
??? note "redis.conf" ??? note "redis.conf"
``` ``` { .copy }
requirepass aeazddokpokqsd7676 requirepass aeazddokpokqsd7676
``` ```
#### redis.config.php #### redis.config.php
??? note "redis.config.php" ??? note "redis.config.php"
```php ``` { .php .copy }
<?php <?php
if (getenv('REDIS_HOST')) { if (getenv('REDIS_HOST')) {
$CONFIG = array ( $CONFIG = array (
@ -668,7 +668,7 @@ sudo chown -R 999:root /data/nextcloud/mysql
Nous allons compiler une image d'etherpad en suivant les instructions de **Dockerfile**: Nous allons compiler une image d'etherpad en suivant les instructions de **Dockerfile**:
??? info "Dockerfile" ??? info "Dockerfile"
```Dockerfile ``` { .Dockerfile .copy }
# Etherpad Lite Dockerfile # Etherpad Lite Dockerfile
# #
# https://github.com/ether/etherpad-lite # https://github.com/ether/etherpad-lite
@ -727,7 +727,7 @@ Nous allons compiler une image d'etherpad en suivant les instructions de **Docke
### Copie du projet etherpad sur github ### Copie du projet etherpad sur github
```bash ``` { .bash .copy }
git clone https://github.com/ether/etherpad-lite.git git clone https://github.com/ether/etherpad-lite.git
``` ```
@ -736,9 +736,7 @@ git clone https://github.com/ether/etherpad-lite.git
Ce fichier de configuration va déployer une image docker de nextcloud avec collabora et etherpad, avec la base de données mariadb, redis et coturn. Ce fichier de configuration va déployer une image docker de nextcloud avec collabora et etherpad, avec la base de données mariadb, redis et coturn.
??? info "docker-compose.yml" ??? info "docker-compose.yml"
```yaml ``` { .yaml .copy }
version: '3.7'
services: services:
nextcloud: nextcloud:
@ -879,14 +877,14 @@ Ce fichier de configuration va déployer une image docker de nextcloud avec coll
``` ```
Il ne reste plus qu'à démarrer les conteneurs: Il ne reste plus qu'à démarrer les conteneurs:
```bash ``` { .bash .copy }
docker-compose up --build -d docker-compose up --build -d
``` ```
## Installation de SSL pour Nginx avec Let's Encrypt ## Installation de SSL pour Nginx avec Let's Encrypt
Let's encrypt est un service qui permet de générer gratuitement un certificat SSL pour le domaine de notre choix. Let's encrypt est un service qui permet de générer gratuitement un certificat SSL pour le domaine de notre choix.
```bash ``` { .bash .copy }
sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface
sudo apt install python3-certbot-nginx sudo apt install python3-certbot-nginx
sudo certbot certonly -d nextcloud.mondomaine.fr sudo certbot certonly -d nextcloud.mondomaine.fr
@ -901,7 +899,7 @@ sudo certbot certonly -d pad.mondomaine.fr
On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/nextcloud.mondomaine.fr.conf: On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/nextcloud.mondomaine.fr.conf:
??? info "nextcloud.mondomaine.fr.conf" ??? info "nextcloud.mondomaine.fr.conf"
``` ``` { .copy }
upstream nextcloud{ upstream nextcloud{
server 127.0.0.1:8889; server 127.0.0.1:8889;
} }
@ -982,7 +980,7 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled: Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
```bash ``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/
``` ```
@ -991,7 +989,7 @@ sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/si
On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/pad.mondomaine.fr.conf: On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/pad.mondomaine.fr.conf:
??? info "pad.mondomaine.fr.conf" ??? info "pad.mondomaine.fr.conf"
``` ``` { .copy }
upstream pad { upstream pad {
server 127.0.0.1:9001; server 127.0.0.1:9001;
} }
@ -1031,12 +1029,11 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
server_name pad.mondomaine.fr; server_name pad.mondomaine.fr;
return 404; # managed by Certbot return 404; # managed by Certbot
} }
```
```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled: Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
``` ``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/pad.mondomaine.fr.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/pad.mondomaine.fr.conf /etc/nginx/sites-enabled/
``` ```
@ -1047,7 +1044,7 @@ sudo ln -s /etc/nginx/sites-available/pad.mondomaine.fr.conf /etc/nginx/sites-en
On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/collabora.mondomaine.fr.conf: On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/collabora.mondomaine.fr.conf:
??? info "collabora.mondomaine.fr.conf" ??? info "collabora.mondomaine.fr.conf"
``` ``` { .copy }
upstream collabora{ upstream collabora{
server 127.0.0.1:9980; server 127.0.0.1:9980;
} }
@ -1106,14 +1103,14 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
``` ```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled: Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
```bash ``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/collabora.mondomaine.fr.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/collabora.mondomaine.fr.conf /etc/nginx/sites-enabled/
``` ```
On recharge la configuration de Nginx: On recharge la configuration de Nginx:
```bash ``` { .bash .copy }
sudo systemctl reload nginx.service sudo systemctl reload nginx.service
``` ```
@ -1132,55 +1129,100 @@ Il est nécessaire de récupérer la API KEY générée par etherpad:
On la saisit ensuite dans Nextcloud: `Settings > Administration > Additional settings` On la saisit ensuite dans Nextcloud: `Settings > Administration > Additional settings`
## Mise à jour de l'image Docker Nextcloud ## Mise à jour Nextcloud (Docker)
#### Vérifier la version en production #### Vérifier la version en production
> Avant chaque update checker dans les paramètres de base si des indices de table bdd manques ou autre. :warning: Avant chaque update checker dans les paramètres de base si des indices de table bdd manques ou autre. (voir: 6. Indices de table manquants)
> L'update s'éffectue par palier de versions (20 vers 21 puis 21 vers 22, etc...)
#### étapes #### étapes
- stopper la stack: ##### stopper la stack
```bash ``` { .bash .copy }
docker-compose down docker-compose down
``` ```
- editer le tag de l'image Nextcloud dans le docker-compose.yaml: ##### modifier l'image docker de Nextcloud
```bash ``` { .bash .copy }
nano docker-compose.yml nano docker-compose.yml
``` ```
- Modifier la version d'image vers la version immédiatement supérieure dans le docker-compose.yml !!! tip "Modifier la version d'image vers la version immédiatement supérieure dans le docker-compose.yml"
> Exemple: 20 -> 21 ```
20 -> 21, 21 -> 22
```
##### Relancer la stack
- relançer la stack: ``` { .bash .copy }
docker compose up -d
```bash
docker-compose up -d
``` ```
> Finir l'update via l'interface web ##### Mettre le container nextcloud web en mode maintenance
Une fois la mise à jour des applications éffectuée, se connecter et vérifier avec un compte administrateur dans Paramètres -> Vue d'ensemble si certaines tables de la base de donnée ont besoin d'être modifié via une commande explicitement décrite: Mettre Nextcloud en mode maintenance:
``` { .bash .copy }
Exemple: docker exec -u www-data <nextcloud-container> php occ maintenance:mode --on
```bash
docker exec --user www-data -it nextcloud /var/www/html/occ db:add-missing-indices
``` ```
Lancer l'update: :coffee:
``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ upgrade
```
Désactiver le mode maintenance:
``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ maintenance:mode --off
```
##### Vérifier les logs
Après une mise à jour, vérifier les logs docker pour d'éventuelles erreurs sur des champs de base de donnée ou indices manquants:
``` { .bash .copy }
docker logs <nextcloud-database-container>
```
##### Indices de table manquants
!!! note "Ajouter les indices de table manquants"
``` { .bash .copy }
docker exec --user www-data -it <nextcloud-database-container> /var/www/html/occ db:add-missing-indices
```
!!! note "Modifier le type de champs d'un indice d'une table" (optionnel)"
Se connecter dans le conteneur:
``` { .bash .copy }
docker exec -it <nextcloud-database-container> bash
```
se connecter en tant que user nextcloud:
``` { .bash .copy }
mariadb -u <nextcloud-user> -p
# saisir le password du user nextcloud
```
##### cron job
``` { .bash .copy }
crontab -e
```
!!! note "crontab"
``` { .bash .copy }
*/5 * * * * docker exec -u www-data <NOM_DU_CONTAINER> php -f cron.php
```
##### Commande générique pour ajouter des colonnes manquantes à certaines tables de la BDD ##### Commande générique pour ajouter des colonnes manquantes à certaines tables de la BDD
```bash ``` { .bash .copy }
docker exec --user www-data -it <NOM_DU_CONTAINER> /var/www/html/occ <COMMANDE-DB> docker exec --user www-data -it <NOM_DU_CONTAINER> /var/www/html/occ <COMMANDE-DB>
``` ```
??? "Crontab (pour nettoyer Nextcloud régulierement)" ??? "Crontab (pour nettoyer Nextcloud régulierement)"
```bash ``` { .bash .copy }
crontab -e crontab -e
*/5 * * * * docker exec -u www-data <NOM_DU_CONTAINER> php -f cron.php */5 * * * * docker exec -u www-data <NOM_DU_CONTAINER> php -f cron.php
``` ```

View File

@ -9,13 +9,13 @@
### ARRET DE LA STACK ### ARRET DE LA STACK
```bash ``` { .bash .copy }
docker-compose down docker-compose down
``` ```
### modifier l'image docker de Nextcloud ### modifier l'image docker de Nextcloud
```bash ``` { .bash .copy }
nano docker-compose.yml nano docker-compose.yml
``` ```
@ -26,24 +26,24 @@ nano docker-compose.yml
### Relancer la stack ### Relancer la stack
```bash ``` { .bash .copy }
docker compose up -d docker compose up -d
``` ```
### Mettre le container nextcloud web en mode maintenance ### Mettre le container nextcloud web en mode maintenance
Mettre Nextcloud en mode maintenance Mettre Nextcloud en mode maintenance
```bash ``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ maintenance:mode --on docker exec -u www-data <nextcloud-container> php occ maintenance:mode --on
``` ```
Lancer l'update :coffee: Lancer l'update :coffee:
```bash ``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ upgrade docker exec -u www-data <nextcloud-container> php occ upgrade
``` ```
Désactiver le mode maintenance Désactiver le mode maintenance
```bash ``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ maintenance:mode --off docker exec -u www-data <nextcloud-container> php occ maintenance:mode --off
``` ```
@ -51,13 +51,13 @@ docker exec -u www-data <nextcloud-container> php occ maintenance:mode --off
Après une mise à jour, vérifier les logs docker pour d'éventuelles erreurs sur des champs de base de donnée ou indices manquants: Après une mise à jour, vérifier les logs docker pour d'éventuelles erreurs sur des champs de base de donnée ou indices manquants:
```bash ``` { .bash .copy }
docker logs <nextcloud-database-container> docker logs <nextcloud-database-container>
``` ```
#### Indice de table manquants (opt) #### Indice de table manquants (opt)
```bash ``` { .bash .copy }
# Commande pour ajouter des colonnes manquantes à certaines tables de la BDD # Commande pour ajouter des colonnes manquantes à certaines tables de la BDD
docker exec --user www-data -it <nextcloud-database-container> /var/www/html/occ db:add-missing-indices docker exec --user www-data -it <nextcloud-database-container> /var/www/html/occ db:add-missing-indices
``` ```
@ -65,12 +65,12 @@ docker exec --user www-data -it <nextcloud-database-container> /var/www/html/occ
#### Modifier le type de champs d'un indice d'une table (opt) #### Modifier le type de champs d'un indice d'une table (opt)
Se connecter dans le conteneur: Se connecter dans le conteneur:
```bash ``` { .bash .copy }
docker exec -it <nextcloud-database-container> bash docker exec -it <nextcloud-database-container> bash
``` ```
se connecter en tant que user nextcloud: se connecter en tant que user nextcloud:
```bash ``` { .bash .copy }
mariadb -u <nextcloud-user> -p mariadb -u <nextcloud-user> -p
# saisir le password du user nextcloud # saisir le password du user nextcloud
``` ```

View File

@ -2,26 +2,27 @@
## List databases ## List databases
``` ``` { .bash .copy }
postgres=# \l postgres=# \l
``` ```
## Switch database ## Switch database
``` ``` { .sql .copy }
postgres=# \c db_name postgres=# \c db_name
``` ```
List tables List tables
``` ``` { .sql .copy }
db_name=# \dt db_name=# \dt
``` ```
Show table content Show table content
``` ``` { .sql .copy }
db_name=# \d table_name db_name=# \d table_name
``` ```
Modify table Modify table
``` ``` { .sql .copy }
UPDATE table_name UPDATE table_name
SET column1 = 'value1', SET column1 = 'value1',
column2 = 'value2', column2 = 'value2',

View File

@ -4,7 +4,7 @@
### Installation ### Installation
``` ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt install openssh-server sudo apt install openssh-server
``` ```
@ -12,7 +12,7 @@ sudo apt install openssh-server
### Configuration du serveur ssh ### Configuration du serveur ssh
!!! note "/etc/ssh/sshd_config" !!! note "/etc/ssh/sshd_config"
``` ``` { .copy }
# Define a diferent port from default port=22 # Define a diferent port from default port=22
Port 43000 Port 43000
# #
@ -59,17 +59,18 @@ sudo apt install openssh-server
``` ```
### Démarrage du serveur ssh ### Démarrage du serveur ssh
``` { .bash .copy }
sudo systemctl restart sshd.service sudo systemctl restart sshd.service
```
--------------------- ---------------------
## Installation de Samba ## Installation de Samba
### Installation ### Installation
``` { .bash .copy }
sudo apt install samba smbclient
```
sudo apt install samba smbclient
### Configuration du serveur ### Configuration du serveur
!!! note "/etc/samba/smb.conf" !!! note "/etc/samba/smb.conf"
@ -102,7 +103,7 @@ sudo apt install openssh-server
#### Création d'un mot de passe sur le serveur #### Création d'un mot de passe sur le serveur
``` ``` { .bash .copy }
sudo smbpassword -a $USER sudo smbpassword -a $USER
``` ```
@ -110,7 +111,7 @@ sudo smbpassword -a $USER
Il est nécessaire de configurer le WORKGROUP pour les clients, afin qu'ils soient autorisés à se connecter au serveur Samba: Il est nécessaire de configurer le WORKGROUP pour les clients, afin qu'ils soient autorisés à se connecter au serveur Samba:
``` ``` { .bash .copy }
sudo sed -i 's/WORKGROUP/KTHA-CIE/' /etc/samba/smb.conf sudo sed -i 's/WORKGROUP/KTHA-CIE/' /etc/samba/smb.conf
``` ```
@ -127,18 +128,18 @@ sudo sed -i 's/WORKGROUP/KTHA-CIE/' /etc/samba/smb.conf
#### Step 1. Créer la clé d'authentification #### Step 1. Créer la clé d'authentification
On créé une variable pour le nom de la clé On créé une variable pour le nom de la clé
``` ``` { .bash .copy }
KEY_PATH=~/.ssh/owner-of-key_rsa KEY_PATH=~/.ssh/owner-of-key_rsa
``` ```
On génère la clé dans le dossier par défaut pour ne pas avoir à indiquer le chemin de la clé avec **-i*** lors d'une connexion avec `ssh` On génère la clé dans le dossier par défaut pour ne pas avoir à indiquer le chemin de la clé avec **-i*** lors d'une connexion avec `ssh`
``` ``` { .bash .copy }
ssh-keygen -b 4096 -t rsa -N '' -f $KEY_PATH ssh-keygen -b 4096 -t rsa -N '' -f $KEY_PATH
``` ```
#### Step 2. Envoyer la clé publique au serveur #### Step 2. Envoyer la clé publique au serveur
``` ``` { .bash .copy }
ssh-copy-id -i $KEY_PATH $USER@$SERVER_IP ssh-copy-id -i $KEY_PATH $USER@$SERVER_IP
``` ```
@ -147,19 +148,18 @@ ssh-copy-id -i $KEY_PATH $USER@$SERVER_IP
Script à exécuter: Script à exécuter:
!!! note "/etc/cron.daily/backup" !!! note "/etc/cron.daily/backup"
``` ``` { .copy }
#!/bin/bash #!/bin/bash
rsync -ahv --update --delete --info=backup2,copy2,del2,name1,stats2 --log-file="/home/$USER/backup_log/backup.log.$(date +%Y-%m-%d)" /home/$USER/Documents/ -e 'ssh -p 43000 -i $KEY_PATH $USER@176.151.59.186:/home/$USER/Documents' rsync -ahv --update --delete --info=backup2,copy2,del2,name1,stats2 --log-file="/home/$USER/backup_log/backup.log.$(date +%Y-%m-%d)" /home/$USER/Documents/ -e 'ssh -p 43000 -i $KEY_PATH $USER@176.151.59.186:/home/$USER/Documents'
``` ```
N'oubliez pas de rendre le script exécutable: N'oubliez pas de rendre le script exécutable:
``` ``` { .bash .copy }
sudo chmod +x /etc/cron.daily/backup sudo chmod +x /etc/cron.daily/backup
``` ```
Définition de la tâche cron: Définition de la tâche cron:
``` { .bash .copy }
```
sudo tee -a /etc/cron.d/backup > /dev/null <<EOT sudo tee -a /etc/cron.d/backup > /dev/null <<EOT
SHELL=/bin/bash SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

View File

@ -6,7 +6,7 @@ Comment installer Wireshark et capturer le traffic réseau d'un serveur distant
### Installation ### Installation
```bash ``` { .bash .copy }
sudo apt install wireshark tcpdump -y sudo apt install wireshark tcpdump -y
``` ```
> Note: A installer sur le serveur ainsi que sur la machine cliente "streamant" le flux réseau. > Note: A installer sur le serveur ainsi que sur la machine cliente "streamant" le flux réseau.
@ -14,19 +14,19 @@ sudo apt install wireshark tcpdump -y
### Configuration ### Configuration
- Ajouter l'utilisateur au groupe wireshark - Ajouter l'utilisateur au groupe wireshark
```bash ``` { .bash .copy }
sudo usermod -aG wireshark $USER sudo usermod -aG wireshark $USER
``` ```
- Récupérer l'interface réseau du serveur distant: - Récupérer l'interface réseau du serveur distant:
```bash ``` { .bash .copy }
ssh -p 2222 remote-user@123.45.67.89 ssh -p 2222 remote-user@123.45.67.89
# L'interface connectée au réseau est celle qui donne l'adresse IP publique # L'interface connectée au réseau est celle qui donne l'adresse IP publique
ip a ip a
``` ```
> Note: Il est préférable d'avoir éffectué l'échange de clefs SSH via la commande: > Note: Il est préférable d'avoir éffectué l'échange de clefs SSH via la commande:
```bash ``` { .bash .copy }
ssh-copy-id remote-user@server-ip ssh-copy-id remote-user@server-ip
``` ```

View File

@ -10,7 +10,7 @@ Ainsi nous pourrons utiliser le serveur de notre choix pour notre web-applicatio
On installe Nginx à partir des dépôts Debian, de façon à avoir une version stable, avec l'apport des correctifs de sécurité, et qui ne sera jamais cassé par une modification du système. On installe Nginx à partir des dépôts Debian, de façon à avoir une version stable, avec l'apport des correctifs de sécurité, et qui ne sera jamais cassé par une modification du système.
``` ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt upgrade sudo apt upgrade
sudo apt install nginx sudo apt install nginx
@ -24,19 +24,19 @@ Dans votre navigateur, en tapant dabs la barre d'adresse `http://IP_DU_SERVEUR`,
### Installation des dépendances ### Installation des dépendances
``` ``` { .bash .copy }
sudo apt update sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
``` ```
### Installation de la clé du dépôt Docker ### Installation de la clé du dépôt Docker
``` ``` { .bash .copy }
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
``` ```
### Ajout du dépôt docker dans le **sources.list** ### Ajout du dépôt docker dans le **sources.list**
``` ``` { .bash .copy }
sudo add-apt-repository \ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \ "deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \ $(lsb_release -cs) \
@ -45,13 +45,13 @@ sudo add-apt-repository \
### Mise à jour de la liste des paquets et installation de docker ### Mise à jour de la liste des paquets et installation de docker
``` ``` { .bash .copy }
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
``` ```
### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo ### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo
``` ``` { .bash .copy }
sudo usermod -aG docker $USER sudo usermod -aG docker $USER
newgrp docker newgrp docker
``` ```
@ -60,7 +60,7 @@ newgrp docker
## Installation de Docker-Compose ## Installation de Docker-Compose
### Téléchargement de Docker-Compose ### Téléchargement de Docker-Compose
``` ``` { .bash .copy }
curl -s https://api.github.com/repos/docker/compose/releases/latest \ curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep browser_download_url \ | grep browser_download_url \
| grep docker-compose-linux-x86_64 \ | grep docker-compose-linux-x86_64 \
@ -70,14 +70,14 @@ curl -s https://api.github.com/repos/docker/compose/releases/latest \
### Mise en place de l'exécutable ### Mise en place de l'exécutable
``` ``` { .bash .copy }
chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo systemctl restart docker sudo systemctl restart docker
``` ```
### Auto-complétion pour Bash ### Auto-complétion pour Bash
``` ``` { .bash .copy }
sudo mkdir -p /etc/bash_completion.d sudo mkdir -p /etc/bash_completion.d
sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
source /etc/bash_completion.d/docker-compose source /etc/bash_completion.d/docker-compose
@ -89,7 +89,7 @@ source /etc/bash_completion.d/docker-compose
Créer un dossier pour accueillir le projet, et le fichier **docker-compose.yml**: Créer un dossier pour accueillir le projet, et le fichier **docker-compose.yml**:
``` ``` { .bash .copy }
mkdir wordpress && cd wordpress mkdir wordpress && cd wordpress
touch docker-compose.yml touch docker-compose.yml
``` ```
@ -97,9 +97,7 @@ touch docker-compose.yml
Ce fichier de configuration va déployer une image docker de wordpress et de la base de données mysql. Ce fichier de configuration va déployer une image docker de wordpress et de la base de données mysql.
!!! info "docker-compose.yml" !!! info "docker-compose.yml"
``` ``` { .yaml .copy }
version: '3.3'
services: services:
db: db:
image: mysql:5.7 image: mysql:5.7
@ -132,7 +130,7 @@ Ce fichier de configuration va déployer une image docker de wordpress et de la
## Installation de SSL pour Nginx avec Let's Encrypt ## Installation de SSL pour Nginx avec Let's Encrypt
Let's encrypt est un service qui permet de générer gratuitement un certificat SSL pour le domaine de notre choix. Let's encrypt est un service qui permet de générer gratuitement un certificat SSL pour le domaine de notre choix.
``` ``` { .bash .copy }
sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface
sudo apt install python3-certbot-nginx sudo apt install python3-certbot-nginx
sudo certbot -d wordpress.mondomaine.fr sudo certbot -d wordpress.mondomaine.fr
@ -144,7 +142,7 @@ sudo certbot -d wordpress.mondomaine.fr
On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/wordpress.mondomaine.fr.conf: On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sites-available/wordpress.mondomaine.fr.conf:
!!! info "wordpress.mondomaine.fr" !!! info "wordpress.mondomaine.fr"
``` ``` { .copy }
upstream wpdocker { upstream wpdocker {
server 127.0.0.1:8000; server 127.0.0.1:8000;
} }
@ -191,13 +189,13 @@ On peut maintenant créer le fichier de configuration nginx dans /etc/nginx/sit
``` ```
Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled: Pour activer ce fichier de configuration, on créé un lien symbolique vers le dossier sites-enabled:
``` ``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/
``` ```
On recharge la configuration de Nginx: On recharge la configuration de Nginx:
``` ``` { .bash .copy }
sudo systemctl reload nginx.service sudo systemctl reload nginx.service
``` ```

View File

@ -9,6 +9,7 @@ theme:
- navigation.instant - navigation.instant
- navigation.expand - navigation.expand
- navigation.tabs - navigation.tabs
- content.code.copy
plugins: plugins:
#- markdownmermaid #- markdownmermaid
- search: - search: