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
1. Lister les partitions:
```
``` { .copy }
lsblk
```
2. Identifier la partition contenant les fichiers à sauvegarder
3. Monter la partition
```
``` { .copy }
mkdir /mnt/nom_du_dossier
mount /dev/sdXy /mnt/nom_du_dossier
```
4. Cibler le dossier à sauvegarder
```
``` { .copy }
ls /mnt/nom_du_dossier
```
5. Créer le dossier de réception sur le serveur de backup:
```
``` { .copy }
ssh -p 5555 bellinuxien@192.168.1.75
mkdir /home/bellinuxien/BACKUPS/nom-de-dossier
exit
```
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
```
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
```

View File

@ -11,66 +11,66 @@ declare -a MA_LIST
### Modification de la liste
1. Ajout d'éléments
```
``` { .copy }
MA_LIST=(1er_element 2nd_element)
MA_LIST+=("3eme élément avec des espaces")
MA_LIST[3]="4eme élémént"
```
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[1]="la valeur pour le 2eme élément"
```
3. Traitement sur l'ensemble des éléments
- en utilisant la liste des index `${!MA_LIST[@]}`:
```
``` { .copy }
for i in "${!MA_LIST[@]}" ; do
echo "index = $i - value = ${MA_LIST[i]}"
done
```
- en utilisant la liste des valeurs `${MA_LIST[@]}`
```
``` { .copy }
for i in "${MA_LIST[@]}" ; do
echo "value = ${i}"
done
```
- nombre d'éléments:
```
``` { .copy }
echo "nombre d'éléments : ${MA_LIST[]}
```
## Les tableaux (`associative arrays`)
### Création d'un tableau
```
``` { .copy }
declare -A MY_ARRAY
```
1. Ajout d'éléments
```
``` { .copy }
MY_ARRAY=([clé1]=1er_element [clé2]=2nd_element)
MY_ARRAY+=([clé3]="3eme élément avec des espaces")
MY_ARRAY[dernière_clé]="4eme é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`"
```
3. Traitement sur l'ensemble des éléments
- en utilisant la liste des clés `${!MY_ARRAY[@]}`:
```
``` { .copy }
for i in "${!MY_ARRAY[@]}" ; do
echo "key = $i - value = ${MY_ARRAY[i]}"
done
```
- en utilisant la liste des valeurs `${MY_ARRAY[@]}`
```
``` { .copy }
for i in "${MY_ARRAY[@]}" ; do
echo "value = ${i}"
done
```
- nombre d'éléments:
```
``` { .copy }
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
:bulb: Repérer le disque du système d'exploitation que l'on souhaite "chrooter"
```bash
``` { .bash .copy }
lsblk
```
- Monter les partitions nécessaires
```bash
``` { .bash .copy }
sudo mount /dev/sda2 /mnt # exemple pour un disque sda2
sudo mount --bind /dev /mnt/dev
@ -26,19 +26,19 @@ sudo mount --bind /run /mnt/run
```
- Connexion:
```bash
``` { .bash .copy }
sudo chroot /mnt
```
:warning: A partir de cette commande, toutes les autres commandes saisies s'éffectuent sur le système cible
- Réparer le GRUB:
```bash
``` { .bash .copy }
grub-install /dev/sda
```
- Réparer le système d'exploitation:
```bash
``` { .bash .copy }
apt --fix-broken install
dpkg --configure -a
apt install -f
@ -46,12 +46,12 @@ apt install --reinstall apt
```
- Pour se déconnecter:
```bash
``` { .bash .copy }
exit
```
- Démonter le système de fichier:
```bash
``` { .bash .copy }
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`)
```
``` { .bash .copy }
text=$'premièreligne\ndeuxièmeligne'
```
#### Utilisation dans une variable
```
``` { .bash .copy }
visiteur@domani:~$ MA_VARIABLE=$(cat <<EOF
premiere ligne
deuxième ligne
@ -23,7 +23,7 @@ deuxième ligne
```
#### Utilisation pour écrire dans un fichier
```
``` { .bash .copy }
visiteur@domani:~$ cat <<EOF1 > file.txt
premiere ligne
deuxième ligne

View File

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

View File

@ -1,15 +1,15 @@
# nmcli
Scanner le reseau
```bash
``` { .bash .copy }
nmcli d wifi
```
Se connecter au reseau pour la première fois
```bash
``` { .bash .copy }
nmcli d wifi connect <SSID> -a
```
Se connection à un reseau existant
```bash
``` { .bash .copy }
nmcli con <SSID>
```
Changer les serveurs DNS
@ -25,6 +25,6 @@ Méthode degeulasse
Méthode clean
/!\ À 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
```

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.
```bash
``` { .bash .copy }
sudo fdisk -l
```
![img1](../../assets/raid/image1.png)
```bash
``` { .bash .copy }
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.)
```bash
``` { .bash .copy }
sudo parted /dev/sdb 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.
```bash
``` { .bash .copy }
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.
??? note "Pour installer mdadm selon votre distribution de Linux"
=== "Debian/Ubuntu"
```bash
``` { .bash .copy }
sudo apt install mdadm
```
=== "CentOS/Redhat"
```bash
``` { .bash .copy }
sudo yum install mdadm
```
=== "SUSE"
```bash
``` { .bash .copy }
sudo zypper install mdadm
```
=== "Arch Linux"
```bash
``` { .bash .copy }
sudo pacman -S mdadm
```
Examinons les deux dispositifs:
```bash
``` { .bash .copy }
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:
```bash
``` { .bash .copy }
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.
```bash
``` { .bash .copy }
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 :
```bash
``` { .bash .copy }
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 :
```bash
``` { .bash .copy }
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 :
```bash
``` { .bash .copy }
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.
```bash
``` { .bash .copy }
sudo mkfs.ext4 /dev/md0
```
#### Créer un point de montage /mnt/raid1 et montez le lecteur RAID 1
```bash
``` { .bash .copy }
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1
```
Vous pouvez utiliser cette commande pour vérifier la quantité d'espace disque dont vous disposez.
```bash
``` { .bash .copy }
df -h /mnt/raid1
```
@ -168,29 +168,29 @@ df -h /mnt/raid1
#### Sauvegarder notre configuration RAID1 avec la commande suivante:
```bash
``` { .bash .copy }
sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf
```
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
- 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."
```bash
``` { .bash .copy }
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"
=== "base"
```bash
``` { .bash .copy }
/dev/md0 /mnt/raid1 ext4 defaults 0 0
```
=== "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
```
@ -198,7 +198,7 @@ sudo update-initramfs -u
Si vous ne souhaitez plus utiliser le RAID, exécutez la commande suivante pour le supprimer.
```bash
``` { .bash .copy }
sudo umount /mnt/raid1
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 :
!!! 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
# 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!
#### Usage minimal
```
``` { .bash .copy }
visiteur@domani:~$ read
mot
visiteur@domani:~$ echo $REPLY
@ -19,7 +19,7 @@ mot
```
#### Définissez la variable qui contient le résultat, au lieu du défaut `$REPLY`
```
``` { .bash .copy }
visiteur@domani:~$ read MAREPONSE
truc
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
```
``` { .bash .copy }
visiteur@domani:~$ read '-d '
truc visiteur@domani:~$
@ -36,20 +36,20 @@ trucAvisiteur@domani:~$
```
#### Utiliser `read -s` pour garder secrète la saisie de l'utilisateur
```
``` { .bash .copy }
visiteur@domani:~$ read -s
visiteur@domani:~$ echo $REPLY
secret
```
#### Utilisez `read -p` pour afficher un message avant la saisie (pas de retour à la ligne)
```
``` { .bash .copy }
visiteur@domani:~$ read -p "Continuez ? (y/n) : "
Continuez ? (y/n) : y
```
#### Répéter l'invite de saisie tant que la valeur n'est pas correcte
```
``` { .bash .copy }
until [[ $VALUE ]] ; do
read -p "Enter value for $var : " VALUE;
done ;
@ -57,7 +57,7 @@ Continuez ? (y/n) : y
#### Avec une itération dans une liste
```
``` { .bash .copy }
for var in ${VAR_LIST[@]}; do
VALUE=""
until [[ $VALUE ]] ; do

View File

@ -1,25 +1,30 @@
# Screen
1.Installation
sudo apt install screen
``` { .bash .copy }
sudo apt install screen
```
2.Pour démarrer une nouvelle session:
screen -S nom-de-la-session
``` { .bash .copy }
screen -S nom-de-la-session
```
3.Pour laisser la session en arrière plan
``` { .bash .copy }
++ctrl+a+d++
```
4.Pour lister les sessions existantes:
screen -ls
``` { .bash .copy }
screen -ls
```
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/)**

View File

@ -2,53 +2,75 @@
## 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:
ssh-keygen -o -a 100 -t ed25519 -C user@email #create an ED25519 key
ssh-keygen -b 4096 -t rsa -C user@email #create a RSA key
ssh-add newkey #add newkey to your SSH agent
ssh-add *
ssh-add .
``` { .bash .copy }
ssh-keygen -o -a 100 -t ed25519 -C user@email #create an ED25519 key
ssh-keygen -b 4096 -t rsa -C user@email #create a RSA key
ssh-add newkey #add newkey to your SSH agent
ssh-add *
ssh-add .
```
## List existing keys:
ssh-add -l
``` { .bash .copy }
ssh-add -l
```
## 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):
ssh-keygen -lvf key_name
``` { .bash .copy }
ssh-keygen -lvf key_name
```
## Enable SSH agent:
eval $(ssh-agent -s)
``` { .bash .copy }
eval $(ssh-agent -s)
```
## Copy a key to a distant server:
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
``` { .bash .copy }
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:
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:
ssh -p port user@server
scp -P port file user@server:way/
rsync -e ssh -avz /source server:/target
rsync -ave ssh server:/source /target
ssh-copy-id -i newkey.pub -p port user@server
``` { .bash .copy }
ssh -p port user@server
scp -P port file user@server:way/
rsync -e ssh -avz /source server:/target
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:
Type the adress:
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/)
``` { .bash .copy }
ssh://user@server:port
```
*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 :
```
``` { .bash .copy }
su bellinuxien
```
#### installer flatpak pour avoir la dernière version de Minetest
sudo apt update
sudo apt install flatpak geany
``` { .bash .copy }
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
```
``` { .bash .copy }
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub net.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
```
cd $MT
``` { .bash .copy }cd $MT
mkdir games
cd games
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
Revenir dans le terminal et écrire:
```
``` { .bash .copy }
cd $MT
mkdir mods && cd mods
git clone https://gitlab.com/mon-pseudo/monprojet.git
@ -49,7 +52,8 @@ cd monprojet
```
#### Créer le fichier init.lua
```
``` { .bash .copy }
geany init.lua&
```

View File

@ -18,7 +18,7 @@ Installer à partir des dépots officiels avec [apt](https://debian-facile.org/u
## Installer .Net
```
``` { .bash .copy }
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 apt-get update; \
@ -29,7 +29,7 @@ sudo apt-get update; \
## Installer Mono
```
``` { .bash .copy }
sudo apt install apt-transport-https dirmngr gnupg ca-certificates
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

View File

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

View File

@ -6,7 +6,7 @@
As of debian user we can install with apt
```
``` { .bash .copy }
# install prerequisites
sudo apt update -qq >/dev/null
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:
1. As root, run `ssh-keygen`
2. Copy the key to authorized keys for dokku:
```
``` { .bash .copy }
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`).
@ -61,7 +61,7 @@ Run following commands as root:
## Create app
```
``` { .bash .copy }
git clone https://github.com/heroku/python-getting-started
dokku apps:create python-getting-started
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
```
``` { .bash .copy }
curl -s https://api.github.com/repos/[author]/[repository]/releases/latest |\
grep "browser_download_url.*deb" |\
cut -d : -f 2,3 |\
@ -14,4 +14,4 @@ wget -qi -
## 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
```bash
``` { .bash .copy }
sudo apt install git -y
```
@ -16,62 +16,62 @@ sudo apt install git -y
- Cloner un dépôt distant sur sa machine locale:
```bash
``` { .bash .copy }
git clone https://gitlab.com/mon-dépôt-distant.git
```
- Initialiser un dossier de projet pour le "pousser" en ligne:
```bash
``` { .bash .copy }
cd mon-projet/
git init
```
- Ajouter des fichiers au suivi (pour les synchroniser vers un dépôt distant):
```bash
``` { .bash .copy }
git add fichier1 fichier2
```
- 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)"
```
- Pousser les changements vers le dépôt distant (Gitlab ou Github par exemple):
```bash
``` { .bash .copy }
git push
```
- Changer de branche dans le projet:
```bash
``` { .bash .copy }
git checkout nom-de-la-branche
```
- Créer une nouvelle branche à partir de la branche actuelle:
```bash
``` { .bash .copy }
git branch nom-nouvelle-branche
```
- Pousser une branche nouvellement créée en local vers le dépôt distant:
```bash
``` { .bash .copy }
git push origin nom-nouvelle-branche
```
- Effacer une branch locale:
```bash
``` { .bash .copy }
git branch -d branche-a-effacer
```
- Effacer une branche du dépôt distant:
```bash
``` { .bash .copy }
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:
```bash
``` { .bash .copy }
git clone https://gitlab.com/mon-dépôt-distant.git
```
- 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
```
- Ajouter le fichier modifié au suivi:
```bash
``` { .bash .copy }
git add fichier-modifié
```
- Créer un enregistrement de la modification
```bash
``` { .bash .copy }
git commit -m "modif fichier-modifié"
```
- Pousser les changements sur le dépôt en ligne:
```bash
``` { .bash .copy }
git push
```
@ -113,14 +113,14 @@ git push
- 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/
git init
```
- Ajouter tout les fichiers du dossier au suivi:
```bash
``` { .bash .copy }
git add *
# ou
git add .
@ -128,19 +128,19 @@ git add .
- 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
```
- Créer un enregistrement avec un commentaire:
```bash
``` { .bash .copy }
git commit -m "premier push"
```
- 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
```
@ -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:
```bash
``` { .bash .copy }
git pull
```
@ -156,31 +156,31 @@ git pull
- Savoir sur quelle branche on se trouve et les branches disponibles localement:
```bash
``` { .bash .copy }
git branch
```
- Créer une nouvelle branche et basculer vers la nouvelle branche:
```bash
``` { .bash .copy }
git checkout -b nom-nouvelle-branche
```
- Connaitre l'état du dépôt local:
```bash
``` { .bash .copy }
git status
```
- Revenir à l'état après le git clone en éffaçant les chagements éffectués:
```bash
``` { .bash .copy }
git reset --hard HEAD
```
- Visualiser les différences entre les fichiers originaux et les fichiers modifiés:
```bash
``` { .bash .copy }
git diff
```
@ -190,7 +190,7 @@ Pour éviter de faire des "git branch" pour savoir dans quelle branche on se tro
??? note "~/.bashrc"
=== "Ajouter à la fin"
```bash
``` { .bash .copy }
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

View File

@ -6,19 +6,19 @@
- Installer Ollama:
```bash
``` { .bash .copy }
curl -fsSL https://ollama.com/install.sh | sh
```
- Télécharger le modèle:
```bash
``` { .bash .copy }
ollama pull llama3:latest
```
- Lancer le modèle:
```bash
``` { .bash .copy }
ollama run llama3:latest
```
@ -35,7 +35,7 @@ ollama run llama3:latest
## Configuration
??? note "Editer le fichier config.json:"
```bash
``` { .bash .copy }
{
"models": [
{
@ -56,19 +56,19 @@ ollama run llama3:latest
- Stopper le service:
```bash
``` { .bash .copy }
sudo systemctl stop ollama
```
- Démarrer le service:
```bash
``` { .bash .copy }
sudo systemctl start ollama
```
- Supprimer un modèle:
```bash
``` { .bash .copy }
ollama rm <MODEL>
```
@ -78,6 +78,6 @@ ollama rm <MODEL>
- Télécharger un modèle:
```bash
``` { .bash .copy }
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.
Le support est très limité, mais il faut déjà commencer par là
```console
``` { .bash .copy }
sudo apt-get install fprintd libpam-fprintd
```
Pour enregistrer l'empreinte :
```console
``` { .bash .copy }
fprintd-enroll
```
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
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
```
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
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)
:warning: Keyserver fonctionnelle sur Debian 12.5
```console
``` { .bash .copy }
sudo apt update
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D4C774BA6D18F90
apt update
sudo apt-get install open-fprintd fprintd-clients python3-validity
```
Une fois installé on réessaye
```console
``` { .bash .copy }
fprintd-enroll
```
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
Par défaut, seulement la session est déblocable avec l'empreinte, pour utiliser sudo
```console
``` { .bash .copy }
pam-auth-update
```
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)
- Ouvrir un terminal et copier les commandes suivantes:
```bash
``` { .bash .copy }
git clone https://github.com/GregLebreton/adventure-map.git
cd adventure-map
./install.sh
@ -29,13 +29,13 @@ tiled
### Installation de npm (server local)
```bash
``` { .bash .copy }
sudo apt install npm -y
```
### Utilisation
```bash
``` { .bash .copy }
npm install
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
```bash
``` { .bash .copy }
sudo apt install nwipe
```
@ -17,7 +17,7 @@ sudo apt install nwipe
## 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:
```bash
``` { .bash .copy }
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).
@ -25,7 +25,7 @@ Cette commande permet d'obtenir la liste et les caractéristiques des disques et
<!-- [LSBLK](sblk2.jpg) -->
: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
```
@ -34,7 +34,7 @@ sudo umount /home/user/DISK
## UTILISATION
Pour ouvir Nwipe, utilisez la commande ci-dessous dans le terminal
```bash
``` { .bash .copy }
sudo nwipe
```

View File

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

View File

@ -2,36 +2,41 @@
## Setting up a password for root user just after install:
``` { .bash .copy }
sudo mysql -u root
```
sudo mysql -u root
## Resetting root password:
``` { .bash .copy }
sudo mysql_secure_installation
```
sudo mysql_secure_installation
## Creating a user and granting privileges:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON database_name.* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
``` { .sql .copy }
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON database_name.* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
Granting privileges on all databases:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
``` { .sql .copy }
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
```
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 :
SELECT User, Host, Password FROM mysql.user;
``` { .sql .copy }
SELECT User, Host, Password FROM mysql.user;
```
Changing a user's associated host (example from host % to host loclahost):
UPDATE mysql.user SET Host='localhost' WHERE Host='%' AND User='user'
``` { .sql .copy }
UPDATE mysql.user SET Host='localhost' WHERE Host='%' AND User='user'
```
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/)
## Connecting to MySQL:
``` { .bash .copy }
sudo mysql
```
sudo mysql
## 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):
``` { .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):
- [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/)
## Deleting databases:
``` { .sql .copy }
DROP DATABASE [IF EXISTS] database_name;
```
DROP DATABASE [IF EXISTS] database_name;
## 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)
## Checking the MySQL version:
SELECT @@version;
``` { .sql .copy }
SELECT @@version;
```
## Leaving the MySQL prompt:
``` { .sql .copy }
quit
```
quit
## Stopping/starting/restarting the service:
sudo systemctl stop mysql
sudo service mysql stop
sudo /etc/init.d/mysqld stop
``` { .bash .copy }
sudo systemctl stop mysql
sudo service mysql stop
sudo /etc/init.d/mysqld stop
```
## 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.
```
``` { .bash .copy }
sudo apt update
sudo apt upgrade
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
```
``` { .bash .copy }
sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
```
### Installation de la clé du dépôt Docker
```
``` { .bash .copy }
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
```
### Ajout du dépôt docker dans le **sources.list**
```
``` { .bash .copy }
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
@ -45,13 +45,13 @@ sudo add-apt-repository \
### 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
```
### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo
```
``` { .bash .copy }
sudo usermod -aG docker $USER
newgrp docker
```
@ -60,7 +60,7 @@ newgrp docker
## Installation de Docker-Compose
### Téléchargement de Docker-Compose
```
``` { .bash .copy }
curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep browser_download_url \
| 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
```
``` { .bash .copy }
chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo systemctl restart docker
```
### Auto-complétion pour Bash
```
``` { .bash .copy }
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
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
```
``` { .bash .copy }
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
??? note "config.php"
```
``` { .php .copy }
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
@ -184,7 +184,7 @@ Nous avons besoin de créer les fichiers suivants pour qu'ils soient utilisés p
#### Internal.php
??? note "Internal.php"
```
``` { .php .copy }
<?php
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
??? note "mimetypemapping.json"
```
``` { .json .copy }
{
"drawio": ["application/x-drawio"],
"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
```bash
``` { .bash .copy }
sudo mkdir /data/nextcloud/{data,config,apps,mysql} -p
sudo chown -R www-data:root /data/nextcloud
sudo chown -R 999:root /data/nextcloud/mysql
@ -634,14 +634,14 @@ sudo chown -R 999:root /data/nextcloud/mysql
#### redis.conf
??? note "redis.conf"
```
``` { .copy }
requirepass aeazddokpokqsd7676
```
#### redis.config.php
??? note "redis.config.php"
```php
``` { .php .copy }
<?php
if (getenv('REDIS_HOST')) {
$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**:
??? info "Dockerfile"
```Dockerfile
``` { .Dockerfile .copy }
# Etherpad Lite Dockerfile
#
# 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
```bash
``` { .bash .copy }
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.
??? info "docker-compose.yml"
```yaml
version: '3.7'
``` { .yaml .copy }
services:
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:
```bash
``` { .bash .copy }
docker-compose up --build -d
```
## 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.
```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-certbot-nginx
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:
??? info "nextcloud.mondomaine.fr.conf"
```
``` { .copy }
upstream nextcloud{
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:
```bash
``` { .bash .copy }
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:
??? info "pad.mondomaine.fr.conf"
```
``` { .copy }
upstream pad {
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;
return 404; # managed by Certbot
}
```
```
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/
```
@ -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:
??? info "collabora.mondomaine.fr.conf"
```
``` { .copy }
upstream collabora{
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:
```bash
``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/collabora.mondomaine.fr.conf /etc/nginx/sites-enabled/
```
On recharge la configuration de Nginx:
```bash
``` { .bash .copy }
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`
## Mise à jour de l'image Docker Nextcloud
## Mise à jour Nextcloud (Docker)
#### 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
- stopper la stack:
##### stopper la stack
```bash
``` { .bash .copy }
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
```
- Modifier la version d'image vers la version immédiatement supérieure dans le docker-compose.yml
> Exemple: 20 -> 21
!!! tip "Modifier la version d'image vers la version immédiatement supérieure dans le docker-compose.yml"
```
20 -> 21, 21 -> 22
```
##### Relancer la stack
- relançer la stack:
```bash
docker-compose up -d
``` { .bash .copy }
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:
Exemple:
```bash
docker exec --user www-data -it nextcloud /var/www/html/occ db:add-missing-indices
Mettre Nextcloud en mode maintenance:
``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ maintenance:mode --on
```
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
```bash
``` { .bash .copy }
docker exec --user www-data -it <NOM_DU_CONTAINER> /var/www/html/occ <COMMANDE-DB>
```
??? "Crontab (pour nettoyer Nextcloud régulierement)"
```bash
``` { .bash .copy }
crontab -e
*/5 * * * * docker exec -u www-data <NOM_DU_CONTAINER> php -f cron.php
```

View File

@ -9,13 +9,13 @@
### ARRET DE LA STACK
```bash
``` { .bash .copy }
docker-compose down
```
### modifier l'image docker de Nextcloud
```bash
``` { .bash .copy }
nano docker-compose.yml
```
@ -26,24 +26,24 @@ nano docker-compose.yml
### Relancer la stack
```bash
``` { .bash .copy }
docker compose up -d
```
### Mettre le container nextcloud web en mode maintenance
Mettre Nextcloud en mode maintenance
```bash
``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ maintenance:mode --on
```
Lancer l'update :coffee:
```bash
``` { .bash .copy }
docker exec -u www-data <nextcloud-container> php occ upgrade
```
Désactiver le mode maintenance
```bash
``` { .bash .copy }
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:
```bash
``` { .bash .copy }
docker logs <nextcloud-database-container>
```
#### Indice de table manquants (opt)
```bash
``` { .bash .copy }
# 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
```
@ -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)
Se connecter dans le conteneur:
```bash
``` { .bash .copy }
docker exec -it <nextcloud-database-container> bash
```
se connecter en tant que user nextcloud:
```bash
``` { .bash .copy }
mariadb -u <nextcloud-user> -p
# saisir le password du user nextcloud
```

View File

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

View File

@ -4,7 +4,7 @@
### Installation
```
``` { .bash .copy }
sudo apt update
sudo apt install openssh-server
```
@ -12,7 +12,7 @@ sudo apt install openssh-server
### Configuration du serveur ssh
!!! note "/etc/ssh/sshd_config"
```
``` { .copy }
# Define a diferent port from default port=22
Port 43000
#
@ -59,17 +59,18 @@ sudo apt install openssh-server
```
### Démarrage du serveur ssh
sudo systemctl restart sshd.service
``` { .bash .copy }
sudo systemctl restart sshd.service
```
---------------------
## Installation de Samba
### Installation
``` { .bash .copy }
sudo apt install samba smbclient
```
sudo apt install samba smbclient
### Configuration du serveur
!!! note "/etc/samba/smb.conf"
@ -102,7 +103,7 @@ sudo apt install openssh-server
#### Création d'un mot de passe sur le serveur
```
``` { .bash .copy }
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:
```
``` { .bash .copy }
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
On créé une variable pour le nom de la clé
```
``` { .bash .copy }
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`
```
``` { .bash .copy }
ssh-keygen -b 4096 -t rsa -N '' -f $KEY_PATH
```
#### Step 2. Envoyer la clé publique au serveur
```
``` { .bash .copy }
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:
!!! note "/etc/cron.daily/backup"
```
``` { .copy }
#!/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'
```
N'oubliez pas de rendre le script exécutable:
```
``` { .bash .copy }
sudo chmod +x /etc/cron.daily/backup
```
Définition de la tâche cron:
```
``` { .bash .copy }
sudo tee -a /etc/cron.d/backup > /dev/null <<EOT
SHELL=/bin/bash
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
```bash
``` { .bash .copy }
sudo apt install wireshark tcpdump -y
```
> 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
- Ajouter l'utilisateur au groupe wireshark
```bash
``` { .bash .copy }
sudo usermod -aG wireshark $USER
```
- Récupérer l'interface réseau du serveur distant:
```bash
``` { .bash .copy }
ssh -p 2222 remote-user@123.45.67.89
# L'interface connectée au réseau est celle qui donne l'adresse IP publique
ip a
```
> 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
```

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.
```
``` { .bash .copy }
sudo apt update
sudo apt upgrade
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
```
``` { .bash .copy }
sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
```
### Installation de la clé du dépôt Docker
```
``` { .bash .copy }
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
```
### Ajout du dépôt docker dans le **sources.list**
```
``` { .bash .copy }
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
@ -45,13 +45,13 @@ sudo add-apt-repository \
### 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
```
### Ajout de l'utilisateur dans le groupe **docker** pour utiliser docker sans sudo
```
``` { .bash .copy }
sudo usermod -aG docker $USER
newgrp docker
```
@ -60,7 +60,7 @@ newgrp docker
## Installation de Docker-Compose
### Téléchargement de Docker-Compose
```
``` { .bash .copy }
curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep browser_download_url \
| 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
```
``` { .bash .copy }
chmod +x docker-compose-linux-x86_64 && sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo systemctl restart docker
```
### Auto-complétion pour Bash
```
``` { .bash .copy }
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
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**:
```
``` { .bash .copy }
mkdir wordpress && cd wordpress
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.
!!! info "docker-compose.yml"
```
version: '3.3'
``` { .yaml .copy }
services:
db:
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
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-certbot-nginx
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:
!!! info "wordpress.mondomaine.fr"
```
``` { .copy }
upstream wpdocker {
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:
```
``` { .bash .copy }
sudo ln -s /etc/nginx/sites-available/wordpress.mondomaine.fr.conf /etc/nginx/sites-enabled/
```
On recharge la configuration de Nginx:
```
``` { .bash .copy }
sudo systemctl reload nginx.service
```

View File

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