Post

cwwk KVM Alpine Linux (vm-alpine02)

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.

Docker

Installer Docker sur Alpine Linux

Cet article est sous licence CC BY 4.0 par l'auteur.