cwwk KVM Alpine Linux (vm-alpine02)
Alpine Linux est une distribution Linux ultra-légère
Alpine Linux
Création machine virtuelle Alpine de type KVM avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur.
Prérequis
Les dernières images Alpine Linux
Générer une paire de clé sur l’ordinateur de bureau PC1
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec la machine virtuelle vm-alpine02
1
2
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-alpine02
chmod 600 ~/.ssh/vm-alpine02
Clé publique ssh vm-alpine02.pub
1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL6y0ZigTHoSppYVyC/MzXBpMvTGaex35IrDyCHEe396 yann@PC1
Création d’une image virtuelle vm-alpine02 sous le serveur cwwk rnmkcy.eu
On se connecte sur le serveur cwwk en SSH
On ouvre un terminal: tmux
Créer vm-alpine sur serveur cwwk
Puis on exécute la commande suivante pour créer une machine virtuelle Alpine avec 2 Go de RAM, 1 cœur de processeur et 8 Go de disque dur
1
2
3
4
5
6
7
8
9
10
11
12
virt-install \
--osinfo alpinelinux3.17 \
--name vm-alpine02 \
--memory 2048 \
--vcpus 1 \
--cpu host \
--hvm \
--disk path=/srv/kvm/libvirt/images/vm-alpine02.qcow2,format=qcow2,size=8 \
--cdrom /home/yick/FreeUSB2To/iso/alpine-standard-3.22.1-x86_64.iso \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial
Note: La dernière version Alpine Linux est alpinelinux3.20 au 10/07/2024 mais KVM ne connait que alpinelinux3.17 (sudo virt-install --osinfo list |grep alpine
)
Résultat exécution dans un terminal
1
2
3
4
5
6
Début d’installation…
Allocating 'vm-alpine02.qcow2' | 0 B 00:00:00 ...
Création du domaine… | 0 B 00:00:00
Running text console command: virsh --connect qemu:///system console vm-alpine02
Connected to domain 'vm-alpine02'
Escape character is ^] (Ctrl + ])
Login: root sans mot de passe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Welcome to Alpine Linux 3.22
Kernel 6.12.38-0-lts on x86_64 (/dev/ttyS0)
localhost login: root
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <https://wiki.alpinelinux.org/>.
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
localhost:~# setup-alpine
ALPINE LINUX INSTALL
----------------------
Hostname
----------
Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] vm-alpine02
Interface
-----------
Available interfaces are: eth0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0]
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] 192.168.10.212
Netmask? [255.255.255.0]
Gateway? (or 'none') [none] 192.168.0.205
Configuration for eth0:
type=static
address=192.168.10.212
netmask=255.255.255.0
gateway=192.168.0.205
Do you want to do any manual network configuration? (y/n) [n] n
DNS domain name? (e.g 'bar.com')
DNS nameserver(s)? 192.168.0.205
Root Password
---------------
Changing password for root
New password:
Bad password: too weak
Retype password:
passwd: password for root changed by root
Timezone
----------
...
Arctic/ Europe/ Japan ROK
...
Which timezone are you in? (or '?' or 'none') [UTC] Europe/
...
Belfast Gibraltar Ljubljana Paris Sofia Volgograd
...
What sub-timezone of 'Europe' are you in? (or '?') Paris
Proxy
-------
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
APK Mirror
------------
wget: bad address 'mirrors.alpinelinux.org'
wget: bad address 'mirrors.alpinelinux.org'
(f) Find and use fastest mirror
(s) Show mirrorlist
(r) Use random mirror
(e) Edit /etc/apk/repositories with text editor
(c) Community repo enable
(skip) Skip setting up apk repositories
Enter mirror number or URL: [1]
Added mirror dl-cdn.alpinelinux.org
Updating repository indexes... done.
User
------
Setup a user? (enter a lower-case loginname, or 'no') [no] alpi
Full name for user alpi [alpi]
Changing password for alpi
New password:
Bad password: similar to username
Retype password:
passwd: password for alpi changed by root
Enter ssh key or URL for alpi (or 'none') [none] ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL6y0ZigTHoSppYVyC/MzXBpMvTGaex35IrDyCHEe396 yann@PC1
(1/1) Installing doas (6.8.2-r8)
Executing busybox-1.37.0-r18.trigger
OK: 10 MiB in 29 packages
Which ssh server? ('openssh', 'dropbear' or 'none') [openssh]
Disk & Install
----------------
Available disks are:
vda (8.6 GB 0x1af4 )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] vda
The following disk is selected:
vda (8.6 GB 0x1af4 )
How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys
WARNING: The following disk(s) will be erased:
vda (8.6 GB 0x1af4 )
WARNING: Erase the above disk(s) and continue? (y/n) [n] y
Creating file systems...
Installing system on /dev/vda3:
/mnt/boot is device /dev/vda1
100% ████████████████████████████████████████████==> initramfs: creating /boot/initramfs-lts for 6.12.48-0-lts
/boot is device /dev/vda1
Installation is complete. Please reboot.
Se connecter: alpi/alpi49
Eteindre la machine: poweroff
Connexion vm-alpine via SSH
Sur le poste linux du réseau qui a la clé privée vm-alpine02
1
ssh -i .ssh/vm-alpine02 alpi@192.168.10.212
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
The authenticity of host '192.168.10.212 (192.168.10.212)' can't be established.
ED25519 key fingerprint is SHA256:9z85qEvNw6aPdYEVsSR4TJkmyaUazJ+6/+/fsoiEaA0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.212' (ED25519) to the list of known hosts.
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <https://wiki.alpinelinux.org/>.
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
vm-alpine02:~$
Une fois connecté ,vous pouvez accéder au “root” de manière classique avec la commande :
1
su -
Editeur nano (Vous pouvez aussi opter pour vi qui est nativement présent sur le système)
1
apk add nano
Ajout dépôt communauté
Editer la configuration des dépôts
1
nano /etc/apk/repositories
Trouvez maintenant la ligne qui se termine dans /community
Ensuite, retirez le #
au début de la ligne.
Le fichier résultant devrait ressembler à ceci
1
2
3
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.22/main
http://dl-cdn.alpinelinux.org/alpine/v3.22/community
Mise à jour
1
2
3
4
apk update
apk upgrade
# Vous pouvez fusionner les deux lignes avec
apk -U upgrade
sudo
Installer sudo
1
2
apk update
apk add sudo
Ajouter un utilisateur avec les privlèges root
1
echo "alpi ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-alpi
motd
Message à la connexion SSH, /etc/motd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
_ _ _ _ _
/ \ | |_ __ (_)_ __ ___ | | (_)_ __ _ ___ __
/ _ \ | | '_ \| | '_ \ / _ \ | | | | '_ \| | | \ \/ /
/ ___ \| | |_) | | | | | __/ | |___| | | | | |_| |> <
/_/ \_\_| .__/|_|_| |_|\___| |_____|_|_| |_|\__,_/_/\_\__
__ ___ _|_|__ __ _| |_ __ (_)_ __ ___ / _ \___ \
\ \ / / '_ ` _ \ _____ / _` | | '_ \| | '_ \ / _ \ | | |__) |
\ V /| | | | | |_____| (_| | | |_) | | | | | __/ |_| / __/
\_/ |_| |_| |_| \__,_|_| .__/|_|_| |_|\___|\___/_____|
_ ___ ____ _ __ ___ |_| ___ ____ _ ____
/ |/ _ \___ \ / |/ /_ ( _ ) / |/ _ \ |___ \/ |___ \
| | (_) |__) | | | '_ \ / _ \ | | | | | __) | | __) |
| |\__, / __/ _| | (_) | (_) || | |_| | / __/| |/ __/
|_| /_/_____(_)_|\___/ \___(_)_|\___(_)_____|_|_____|
Configurer OpenSSH
Modifier la configuration serveur SSH
1
sudo nano /etc/ssh/sshd_config.d/vm-alpine02.conf
Ajouter
1
2
Port = 55212
PasswordAuthentication no
Relancer le serveur
1
sudo service sshd restart
Test connexion
1
ssh alpi@192.168.10.212 -p 55212 -i /home/yann/.ssh/vm-alpine02
Alpine Linux - Mise à jour automatique
Installer curl
1
sudo apk add curl
En mode su
Pour chaque nouveau serveur Alpine Linux, créer en mode su un script shell nommé apk-autoupgrade
dans le dossier /etc/periodic/daily/
avec les permissions suivantes : 700
1
2
echo -e "#!/bin/sh\napk upgrade --update | sed \"s/^/[\`date\`] /\" >> /var/log/apk-autoupgrade.log" > /etc/periodic/daily/apk-autoupgrade && \
chmod 700 /etc/periodic/daily/apk-autoupgrade
Si les tâches cron ne sont pas activées
1
2
rc-service crond start
rc-update add crond
Le script exécute la commande apk upgrade --update
une fois par jour, apk par défaut ne demande jamais l’intervention de l’utilisateur.
Additif pour notification ntfy
1
nano /etc/periodic/daily/apk-autoupgrade
Ajouter ce qui suit en fin de fichier
1
2
3
4
5
6
7
8
curl \
-H "X-Email: ntfy@cinay.eu" \
-H "Title: 💻 Alpine Linux `hostname` : Fin exécution script 'apk-autoupgrade'" \
-H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H prio:low \
-d "`hostname` `ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1` \
✔️ Fin exécution script /etc/periodic/daily/apk-autoupgrade" \
https://noti.rnmkcy.eu/yan_infos
NFS
Cette page documente la configuration du système de fichiers réseau (NFS) du côté du serveur et du client, y compris les autofs et l’authentification Kerberos. Installation
Installez le paquet suivant pour le service client et serveur NFS.
1
sudo apk add nfs-utils
Client NFS
Créer un dossier local de montage
1
mkdir ~/docker-data
Pour monter automatiquement les actions NFS, une entrée doit être faite à /etc/fstab
comme suit:
1
192.168.0.205:/sharenfs/docker-data /home/alpi/docker-data nfs4 rw,_netdev 0 0
Pour monter nfs share depuis le fichier /etc/fstab au démarrage du système :
1
sudo rc-update add nfsmount
Pour monter les actions de nfs depuis le fichier /etc/fstab :
1
sudo rc-service nfsmount start
Vous pouvez vérifier vos services de démarrage :
1
sudo rc-status
Conseil : netmount est un service général pour tous les systèmes de fichiers basés sur le réseau, tandis que nfsmount est spécialement conçu pour NFS.
Pour utiliser netmount, voici les commandes équivalentes :
1
2
# rc-service netmount démarrage
# rc-update add netmount
En cas d’erreur au montage NFS ,
REDEMARRER LA MACHINE
.