- Détails
Vu ce matin dans le bus, des ports USB de charge ! C'est beau le monde moderne. 👍
Cela dit, les ports sont bleus, donc USB 3 ? Le bus hacke nos téls en charge ? 😅
- Détails
Mon Argon One est tombé en panne. J'ai écrit au support d'Argon 40 dans le doute. Ils me proposent des étapes de dépannage :
- Vérifier la connexion du câble microUSB. J'ai débranché et rebranché le câble des deux cotés, sans succès. Le même câble alimente mon RPi 3 B+ en direct sans problèmes.
- Vérifier la bonne connexion de la carte HDMI/Audio. J'ai déconnecté et reconnecté la carte, en poussant au plus loin possible. Le RPi ne démarre toujours pas.
- Vérifier la bonne position du bouton Power en l'appuyant plusieurs fois sans alimentation. Appuyé une vingtaine de fois, pas de changement.
J'apprends un nouveau défaut potentiel de l'Argon One, le bouton Power peut avoir des faux contacts... Peut-être le cas du mien, mis je n'arrive pas à le remettre d'aplomb.
Après ça, Argon 40 me propose des étapes plus discutables...
- Installer la dernière version de Raspbian. Il semble que le RPi 3 B+ ne soit pas correctement supporté sur des versions anciennes de Raspbian, mais j'ai utilisé la dernière image disponible, et surtout, mon Raspbian démarrait correctement. Et si c'était un problème logiciel, le RPi s'allumerait quand même...
- Utiliser une alim 5,25 V et 3 A, comme celle qu'Argon 40 vend. On voisine le foutage de gueule, certes le RPi se plaint de sous-tension avec mon alim Aukey PA-U30 (full standard USB 5V/2,4 A), mais ça ne l'empêche pas de s'allumer...
Argon 40 me recommande d'essayer de manipuler le bouton Power encore une fois, ils m'enverront de nouvelles cartes Power et HDMI/Audio si la situation ne s'améliore pas.
Du coup je vais essayer de remonter mon Argon One sans la carte HDMI/Audio. Et je vais démonter la carte Power pour voir s'il n'y a pas de dommages.
To be continued...
- Détails
J'ai financé et reçu un Argon One de Argon 40. C'est vraiment un boîtier bien conçu, esthétique et pratique pour Raspberry Pi. Mais.
Il y a déjà ce problème de sous-voltage, officiellement reconnu (sur une actu réservée aux contributeurs) :
(2) Voltage Drop caused by the Argon ONE Board - Yes, there is additional load from the Argon ONE power pcb, because it has the FAN and micro controller that controls the power shutdown. Based on our tests this brings in a 0.10volt drop. That is why we recommend a power supply rated at 5.25volts, 3Amps to avoid the "lightning" icon from popping up.
C'est un peu n'importe quoi, une alim USB qui délivre 5,25 V... Le standard demande 5 V, avec 5 % de tolérence. La limite basse est donc tout juste 4,75 V, et c'est la valeur sous laquelle le Raspberry Pi model 3 alerte sur la qualité de l'alimentation électrique. Argon 40 dit que leur PCB consomme 0,10 V, je soupçonne personnellement plus.
Admettons que certains constructeurs rognent sur les composants pour entrer dans les valeurs limites, mais mes adaptateurs secteur USB sont de marques réputées et fiables, et délivrent correctement 5 V. Mais mon RPi signalait régulièrement une baisse de tension... J'ai donc dû appliquer des mesures d'économie d'énergie drastiques, et désactiver WiFi, Bluetooth, sortie HDMI et audio. Encore une fois, ce qui me gêne réellement est le WiFi, mais bon.
J'allais vivre avec, tant pis. Mais ce vendredi, je me suis rendu compte que mon RPi n'était pas joignable... J'ai supposé qu'il avait planté pour une raison inconnue, mais je l'ai retrouvé éteint. J'ai essayé de le rallumer, sans succès. J'ai envisagé une panne de l'adaptateur secteur, mais il était bien fonctionnel. J'ai pensé à une panne du RPi, mais il tourne bien hors du boîtier.
Mon Argon One a grillé. Je ne suis pas électronicien, donc je ne pourrai pas dire pourquoi et comment, mais mon RPi ne démarre pas dans mon Argon One. Je l'ai donc remisé, et j'ai commandé un autre boîtier, tout à fait classique et générique. Il est fort probable que je puisse faire réparer ou échanger mon Argon One sous garantie, mais je crains que je ne doive le renvoyer à Hong Kong, et les coûts d'expédition sont sensiblement équivalents au prix d'un boîtier moins perfectionné...
Donc voilà pourquoi mon site est resté hors ligne pendant une bonne journée. Pas que ça se soit vu, mais bon. 🤣
- Détails
[Supplemental 2020/03/09: Ajout de Ubuntu Server, comment fixer une adresse IP manuellement et configuration du WiFi]
Maintenant que j'ai un beau boîtier pour mon Raspberry Pi 3 B+, il faut l'utiliser ! Je me disais que mon site pourrait être servi par un RPi, c'est le moment de mettre en oeuvre !
Ingrédients
D'abord, listons le matériel nécessaire :
- Un Raspberry Pi - évidemment. 🙂 Je vais utiliser un modèle 3 B+, mais il est possible qu'un modèle 2 puisse faire l'affaire. N'en ayant pas, je ne peux pas l'affirmer... Le modèle 3 convient également très bien.
- Un boîtier pour le RPi - à moins de vivre dangereusement avec le RPi à l'air libre, il vaut mieux le protéger dans un boîtier. Tous les goûts sont dans la nature, comme tout plein de boîtiers, il y a l'embarras du choix ! Moi j'ai l'Argon One. 😉
- Une alimentation micro USB et un câble de qualité - important ! Une alimentation de qualité assure la fiabilité de l'appareil, et évite que le RPi 3 émette des alertes de sous-voltage récurrents... J'ai un chargeur Aukey, et un câble microUSB Amazon Basics. Le chargeur Aukey a fait ses preuves, et le câble Amazon est un câble robuste et épais. Mais mon Argon One pompe un peu trop de courant au goût du RPi 3B+, et le RPi 3B+ me signale des baisses de tension... 😕
- Une carte microSD - libre choix de capacité et de vitesse. La taille, voir ce qu'on veut mettre sur le serveur. 4 Go minimum pour écrire l'image disque, je conseille 8 Go pour pouvoir en faire quelque chose après. La vitesse de la carte, à voir, j'ai cru comprendre que le RPi ne pouvait pas exploiter correctement les cartes les plus rapides. Mon choix s'est tout de même porté sur une SanDisk Extreme 64 Go.
- Un écran HDMI et un clavier USB pour l'installation initiale - Une télé peut faire l'affaire. J'ai employé mon écran de test au boulot. 😉
- Optionnel, un disque externe - même un SSD ! Le RPi peut démarrer sur un périphérique USB après une petite manipulation, et on peut utiliser des supports plus robustes que de simples cartes SD. J'utilise un SSD SanDisk SSD Plus de 120 Go dans un boîtier Inateck FE2004 (mais j'aurais dû prendre un Inateck SA01001, il va mieux avec l'Argon One 😑).
Ensuite, les logiciels :
- Raspbian - une déclinaison de Debian pour le RPi. Il existe des images préinstallées chez Raspberry Pi. Pour mon usage serveur, j'utilise Raspbian Strech Lite, pas besoin d'encombrer l'espace limité avec une interface graphique qui ne servira pas.
- Ubuntu Server - Canonical a aussi sorti une déclinaison de Ubuntu pour Raspberry Pi. Canonical étant plus cutting edge que Debian/Raspbian, ils proposent une version 64 bits et un noyau Linux 5, ainsi que des packages plus récents. J'expérimente beaucoup sur mes serveurs perso, je choisis Ubuntu. 😉 Pour une stabilité à toute épreuve, il faut s'orienter vers Raspbian.
- Apache - le célèbre serveur web. Je devrais changer pour NGINX, mais j'ai la flemme d'apprendre la syntaxe du fichier de configuration...
- php - le non moins célèbre langage, moteur de quasi tous les CMS.
- MariaDB - fork de MySQL, moteur de bases de données libre.
- Joomla! - un CMS sympa. 😉 J'ai déjà donné dans Plone, Wordpress ne m'attire pas trop. En fait au final peu importe le CMS pour moi, vu que je n'utilise que les fonctions de base...
Tous les logiciels sont libres et gratuits, c'est la beauté de la solution. 😉 J'achète juste le peu de composants pour monter un serveur RPi (dans les 90 € dans mon cas), j'utilise le surplus de ma bande passante à la maison et hop plus besoin de mon VPS SSD à 45 € de l'année chez OVH. 😉
Installer un serveur web sur RPi pour Joomla!
Maintenant qu'on a tout ce qu'il nous faut, let's go !
Préparons déjà la carte SD. Je télécharge la dernière image de Raspbian chez Raspberry Pi, ou la dernière image d'Ubuntu Server chez Canonical. Ensuite, j'utilise Rufus pour la recopier sur la carte SD. Son fonctionnement est assez simple pour se passer d'explications, je pense, sélectionner le périphérique à utiliser, choisir l'image à écrire avec le bouton SELECTION
, et DEMARRER
. 😉
Ensuite, montage du RPi dans le boîtier. Je renvoie chacun à sa notice, mais ça ne devrait pas être très compliqué. Mon Argon One nécessitait plus de manipulations que le boîtier officiel, mais il est autrement plus stylé. 😆 J'insère la carte SD précédemment préparée dans le RPi, je branche la sortie HDMI à l'écran, connecte le clavier, et c'est parti, le RPi démarre sur Raspbian.
Le nom et le mot de passe de l'utilisateur par défaut sont pi
/ raspberry
pour Raspbian, ubuntu
/ ubuntu
pour Ubuntu Server. Ce dernier demande de changer le mot de passe par défaut à la première connexion (attention clavier anglais US par défaut !).
Remarque sur les commandes utilisées dans ce document : j'ai l'habitude de me connecter en root
sur mes serveurs, mais si ce n'est pas votre cas, il faut utiliser sudo
devant les commandes qui requièrent un accès administrateur. On peut changer le mot de passe root
par la commande suivante (sudo
vous demandera le mot de passe de votre compte) :
sudo passwd root
Vous pouvez alors vous connecter en root
avec la commande su
(le mot de passe de l'utilisateur root vous sera demandé).
Raspbian
Première chose à faire, passer par raspi-config. C'est l'utilitaire en mode texte de configuration des options de Raspbian. Première chose à faire, changer le mot de passe de pi
, par Change User Password
. Précautions d'usage bien sûr, pas trivial, pas trop court, tout ça.
J'affecte après une adresse IP fixe à mon serveur en passant dans Network Options
(c'est plus pratique pour un serveur), je mets le clavier en azerty, je change le fuseau horaire dans Localisation Options
, et surtout, j'active le serveur SSH
dans Interfacing Options
. Sans quoi l'intérêt du RPi s'effondre...
Important, utiliser Expand Filesystem
dans Advanced Options
pour agrandir la partition du Raspbian pour occuper tout l'espace de la carte SD. De base elle fait 8 Go, je crois ?
Notez que Raspbian utilise maintenant dhcpcd pour les interfaces réseau, pour fixer une adresse sur une interface manuellement, il faut éditer le fichier /etc/dhcpcd.conf :
interface eth0 static ip_address=192.168.1.15/24 static routers=192.168.1.1 static domain_name_servers=9.9.9.9,8.8.8.8,192.168.1.1
interface <interface>
: L'interface réseau à considérer. On peut lister les interfaces réseaux par la commande ipconfig -a
. Sur un Raspberry Pi Model 3 on devrait avoir lo0
, eth0
et wlan0
.
static ip_address=<adresse>
: L'adresse à utiliser.
static routers=<adresse>
: L'adresse de la passerelle.
static domain_name_servers=<adresse>,<adresse>, ...
: Les adresses serveurs de noms à utiliser.
Ubuntu Server
Sur Ubuntu Server, pas de script sympa pour configurer tout ça, on fait à la main. 😐 Mais Canonical a une chouette page qui décrit tout le processus d'installation.
Déjà, le clavier est en anglais US, on peut choisir un autre clavier par la commande suivante :
dpkg-reconfigure keyboard-configuration
Il se peut que dpkg
se plaigne de fichiers verrouillés, c'est probablement à cause des mises à jour automatiques, qui peuvent prendre du temps au premier démarrage. Surveillez les processus actifs par ps ax
.
On va aussi préciser le fuseau horaire (c'est pratique quand on regarde la date des fichiers) :
dpkg-reconfigure tzdata
Enfin, on va fixer une adresse IP (pour ne pas à avoir à chercher quelle est l'adresse de notre serveur...). Ubuntu utilise maintenant Netplan, qui par défaut utilise NetworkManager
pour affecter des adresses aux interfaces par DHCP.
On va créer le fichier 01-netcfg.yaml
(qui n'existe pas par défaut) :
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: yes
addresses: [192.168.1.15/24]
gateway4: 192.168.1.1
nameservers:
addresses: [9.9.9.9,8.8.8.8,192.168.1.1]
Pour fixer une IP, on utilise networkd
et on lui donne les paramètres de l'interface eth0 (On peut lister les interfaces réseaux par la commande ip a
. Sur un Raspberry Pi Model 3 on devrait avoir lo0
, eth0
et wlan0
).
dhcp4: <yes/no>
: Utiliser ou non DCHP pour les adresses IPV4. Dans notre cas, no.dhcp6: <yes/no>
: Utiliser ou non DCHP pour les adresses IPV6. Personnellement je me repose sur l'autoconfiguration pour IPV6 chez moi.addresses: [<adresse>,<adresse>, ...]
: La ou les adresses IP à utiliser.gateway4: <adresse>
: L'adresse de la passerelle.nameservers: addresses: [<adresse>,<adresse>, ...]
: Les adresses des serveurs de noms à utiliser.
Attention, les fichiers yaml de Netplan doivent être correctement indentés !
Ubuntu Server active SSH par défaut et étend la partition racine si elle n'occupe pas tout l'espace disque.
Canonical a un motd
dynamique, géré par les scripts dans /etc/update-motd.d
. Pour ma part je désactive (chmod -x
) 10-help-text
, je le sais déjà, et 50-motd-news
, pas vraiment besoin de pubs quand je me connecte. Il n'y a pas de fichier /etc/motd
, mais s'il est créé, son contenu sera affiché après le motd
dynamique.
Dernière petite chose pour Ubuntu, l'image ne vient pas avec les utilitaires VideoCore fournis avec les images Raspbian. Il faut ajouter le repository ppa:ubuntu-raspi2/ppa :
add-apt-repository ppa:ubuntu-raspi2/pp
Et ajouter les paquets correspondant :
apt install libraspberrypi-bin libraspberrypi-dev
Beaucoup de ces paquets s'attendent que l'utilisateur soit un membre des groupes suivants :
groupadd -f --system gpio groupadd -f --system i2c groupadd -f --system input groupadd -f --system spi
Enfin, les utilitaires VideoCore sont placés dans /opt/vc/bin
pour Raspbian, alors qu'Ubuntu les installe dans /usr
. On va faire un alias pour que les utilitaires ne soient pas perdus :
ln -s /usr /opt/vc
Webmin
Ensuite, j'installe Webmin. C'est un outil d'administration fantastique, ça évite de se galérer à la ligne de commande pour tout un tas de truc. Je colle les lignes suivantes dans /etc/apt/sources.list.d/webmin.list
:
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Il faut ajouter la signature de l'auteur à apt :
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
Je lance un apt update
, un apt install webmin
, et hop on est prêt à s'y connecter (en root par défaut). Là je change le nom de l'utilisateur pi
, et j'en profite pour aller régler l'heure du système via NTP.
Apache
J'installe Apache, par apt install apache2
, ce qui me ramène un Apache 2.4. Je ramène mes fichiers de conf existants, et ça roule. Sinon, il faut créer un site virtuel. Dans Webmin c'est facile (Servers / Apache Webserver / Create virtual host
). Mais en fait c'est pas facile de savoir quoi mettre en conf... Joomla! a une doc (un peu succinte) ici, Apache a une doc exhastive sur les serveurs virtuels, Et Cipherli.st donne des exemples de directives pour utiliser les algos de cryptage sécurisés. En mixant bien le tout, j'arrive à une définition pas mal. 😉
PHP
Pour PHP,Ubuntu est cutting edge, propose donc la 7.3 directement. Mais le dépôt Raspbian par défaut ne propose que PHP 7.0 (dernière en date 7.3). J'aime toujours le bleeding edge, donc je sors mon dépôt alternatif pour PHP. 😉 Je crée le fichier /etc/apt/sources.list.d/php.list
:
deb https://packages.sury.org/php/ stretch main
Mais ce con de Debian/Raspbian ne sait pas récupérer à partir de sources en https... Il faut installer les paquets idoine :
apt install apt-transport-https lsb-release ca-certificates
Et pour ne pas que apt ne se plaigne qu'il ne connaît pas cette source, il faut installer sa signature :
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Maintenant je peux installer PHP et les modules nécessaires à Joomla! (le minimum nécessaire) :
apt install php7.3 php7.3-fpm php7.3-mbstring php7.3-mysql php7.3-xml php7.3-zip
Ne pas oublier de revoir son php.ini
, en suivant ce genre de doc.
MariaDB
J'installe ensuite MariaDB. En version 10.3. Alors qu'il y a une 10.4 stable. 😢 Tant pis. De toute façon vu l'utilisation basique de la base par Joomla! (ou les autres CMS), cela n'a que peu d'importance :
apt install mariadb-server
Là le serveur MariaDB est accessible en local avec les identifiants root. Ça mérite d'être changé. Dans Webmin par exemple. 😉
Joomla!
Dans mon cas actuel, je récupère un site Joomla! existant sur un nouveau serveur. Donc je me contente de copier le répertoire, corriger les droits au besoin, et restaurer la base SQL. Dans le cas d'une nouvelle installation, je renvoie vers la très bonne doc de Joomla!.
Voilà, j'ai maintenant un serveur Joomla! opérationnel sur mon RPi ! Techniquement pour qu'il soit réellement utilisable, il faut encore ouvrir des ports sur son routeur, mais ce n'est pas l'objet de cette doc. Il y en a plein le net, faut chercher. 😉
Sécurisation (de base)
SSL
Donc le serveur fonctionne à présent, mais il faut le sécuriser un peu. Déjà, mettre en place une connexion SSL pour le serveur web. Avant, ça coûtait cher. Maintenant, avec Let's Encrypt, c'est gratuit et quasi-automatique.
iptables
Ensuite, il ne faut pas accepter n'importe quelle connexion de n'importe où. En ayant un Linux, solution simple, iptables
. Pareil, trop vaste sujet pour cette doc sans prétention, il y a un tuto très bien là. J'ai comme toujours mon fichier déjà fait. 😆 Attention à ne pas oublier iptables-persistent
:
apt install iptables-persistent
fail2ban
C'est bien de filtrer les connexions, mais il y a des accès indésirables sur les connexions autorisées, comme les tentatives force brute... fail2ban
est là pour ça. Il scrute les logs pour repérer les échecs d'authentification et créée une règle iptables
pour bloquer l'adresse IP de l'attaquant potentiel. C'est aussi un trop vaste sujet pour ma doc de serveur RPi à pas cher. Le wiki Ubuntu a une doc pour les services courants (dont SSH), et cette page a un complément pour Joomla!.
Envoi de mail
Mon serveur étant hébergé sur une ligne domestique, l'envoi de mail est problématique, la plupart des services de messagerie refusant les connexions douteuses potentiellement sources de spams... Donc j'envoie les messages via GMail et Postfix. Un tuto bien fait m'a appris comment. 😉 J'ai choisi Internet with smarthost
pour ma part, j'ignore la différence avec Internet site
...
Boot USB
Pour la dernière partie de cette doc (qui fait plus de liens vers d'autres sites qu'expliquer des choses 😑), je remplace ma carte SD par un SSD USB, le RPi pouvant démarrer sur un périphérique externe. Framboise 314 explique très bien la manipulation. 😉 En résumé (pour RPi 3), il faut mettre program_usb_boot_mode=1
dans le fichier /boot/config.txt
pour Raspbian, /boot/firmware/usercfg.txt
pour Ubuntu (accessible même sous Windows en connectant la carte telle quelle - Partiton system-boot
pour Ubuntu) et démarrer avec un Raspbian postérieur à 2017-04-10.
Pour Ubuntu, il reste une petite étape. Le bootloader par défaut est configuré en dur pour démarrer à partir de la certe SD, ce qui fait que ça bloque le démarrage. Mais la page de wiki d'Ubuntu recommande de changer ça. Il faut remplacer la ligne :
kernel=uboot_rpi_3.bin (pour un RPi 3, il y a plusieurs sections correspondant aux divers modèles)
par :
kernel=vmlinuz initramfs initrd.img followkernel
Ubuntu a un fichier de surcharge de config.txt, usercfg.txt, donc on aura :
# Place "config.txt" changes (dtparam, dtoverlay, disable_overscan, etc.) in
# this file. Please refer to the README file for a description of the various
# configuration files on the boot partition.
[pi4]
kernel=vmlinuz
initramfs initrd.img followkernel
[pi2]
kernel=vmlinuz
initramfs initrd.img followkernel
[pi3]
kernel=vmlinuz
initramfs initrd.img followkernel
Et voilou, le RPi démarre sur le disque USB ! 😉
Maintenant que le RPi est préparé, il faut copier la SD sur le disque externe. Moi j'ai un SSD à pas cher dans un boîtier USB3. Mais la carte SD contenant Raspbian est multi-partitionnée et c'est la galère si on veut copier ça à la main. C'est là que je fais appel à Win32DiskImager (oui j'utilise Windows 😉). Notice exprès pour RPi ici.
Chez moi ça a pris quelques heures à copier... Je ne sais quoi blâmer, la carte SD, le SSD ou le disque qui a servi de tampon. Et curieusement la même opération pour Ubuntu a pris juste 30 min... 🤔 Mais bon, tout est bien arrivé à destination, et le RPi démarre sans problème sur le SSD !
J'ai relancé raspi-config
pour agrandir à nouveau la partition, mon SSD faisant 120 Go, mais il me dit qu'il peut pas, vu que ce n'est pas une carte SD... 😕 Je vois pas le problème en soi, c'est pas le type de media qui détermine le type de partition ou comment la gérer, mais bon...
Heureusement il existe encore un bon tuto en ligne. 😉 C'est une question de fdisk
et parted
, mais j'ai la flemme de lire les manpages juste pour m'en servir une fois... 😆
Encore une fois, Ubuntu m'étonne en bien, il a redimensionné la partion seul sans manipulation supplémentaire. 😉
Economie d'énergie
Comme je le disais, l'Argon One consomme juste assez de courant pour déclancher l'alerte de sous-voltage... J'ai donc la mort dans l'âme désactivé le WiFi, le Bluetooth, la carte son et la sortie HDMI (en fait c'est juste le WiFi qui me dérange, ça faisait une interface de secours...).
Pour cela, je vais utiliser principalement /boot/config.txt
pour Raspbian, /boot/firmware/usercfg.txt
pour Ubuntu. C'est pratique, on ne touche pas à l'OS, c'est un soft-switch.
Pour désactiver la carte son :
dtparam=audio=off
Pour désactiver le WiFi et le Bluetooth :
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
Pour le HDMI, pas de soft switch, on passe par /etc/rc.local
:
/usr/bin/tvservice -o
A ajouter avant exit 0
(ou tout endroit approprié dans le fichier 😉).
J'ai donc un beau serveur Joomla! RPi, raisonnablement sécurisé, qui démarre sur un SSD externe, et qui ne consomme plus autant de courant ! 👍
Wi-Fi
Bon à postériori, ayant acheté une meilleure alimentation pour mon RPi et ayant vu qu'il survivait très bien aux sous-voltages, j'ai réactivé le Wi-Fi. Et ça m'a été utile le jour où la configuration réseau pour eth0
a sauté sans raison, j'ai pu me connecter via wlan0
.
Raspbian
Pour Raspbian, on passe par raspi-config
. Network Options
/ Wi-fi
permet de renseigner SSID et mot de passe. Et ça marche tout seul ! On peut également éditer le fichier /etc/wpa_supplicant/wpa_supplicant.conf
pour définir plus d'options, comme plusieurs réseaux Wi-Fi :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR
network={
ssid="one"
scan_ssid=1
psk="testingPassword"
priority=1
id_str="one"
}
network={
ssid="testing"
psk="testingPassword"
priority=1
id_str="two"
}
Depuis Debian 10 (Buster), le fichier /etc/wpa_supplicant/wpa_supplicant.conf
doit contenir les lignes suivantes :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR
country=<code pays>
doit être correctement défini pour utiliser les bonnes fréquences de canaux 5 GHz.
ssid="<nom réseau>"
: Le SSID du réseau à rejoindre.
scan_ssid=1
: Si le réseau est masqué, ce paramètre permet de s'y connecter quand même.
psk="<mot de passe>"
: Mot de passe du réseau.
priority=<nombre>
: En cas de réseaux multiples, définit la priorité de chacun. Par défaut 0, et on se connecte en priorité au plus grand nombre.
id_str="<nom court>"
: Permet de nommer une connexion Wi-Fi, pour pouvoir l'activer simplement par ifup <nom court>
.
Ubuntu Server
Ubuntu propose NetworkManager, un utilitaire de gestion de réseaux (doc complète là). On l'installe par la commande suivante :
apt install network-manager
On peut alors utiliser la commande nmcli
.
nmcli d
permet de lister les interfaces réseau disponibles :
# nmcli d
DEVICE TYPE STATE CONNECTION
wlan0 wifi disconnected --
eth0 ethernet unmanaged --
lo loopback unmanaged --
p2p-dev-wlan0 wifi-p2p unmanaged --
Ici il n'y a que wlan0
qui est configurable par NetworkManager
, vu qu'on a fixé eth0
.
Vérifions que le Wi-Fi est activé par nmcli r
:
# nmcli r
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled
C'est OK ! Si jamais WIFI
est marqué disabled
, il suffit de le rallumer par nmcli r wifi on
.
Cherchons les réseaux à portée par nmcli d wifi list
:
# nmcli d wifi list
IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
-- Infra 11 130 Mbit/s 85 ▂▄▆█ WPA2
CELESTIALBEING Infra 6 130 Mbit/s 80 ▂▄▆_ WPA1 WPA2
CELESTIALBEING-5G Infra 44 270 Mbit/s 80 ▂▄▆_ WPA1 WPA2
CELESTIALBEING Infra 2 270 Mbit/s 69 ▂▄▆_ WPA2
On va se connecter à CELESTIALBEING-5G
:
# nmcli d wifi connect "CELESTIALBEING-5G" password "aeolialives!!!"
Device 'wlan0' successfully activated with '12345678-9abc-def0-1234-56789abcdf01'.
La commande se décompose ainsi :
nmcli d
(d pour devices) wifi connect
"<SSID à rejoindre>" password
"<mot de passe du réseau>"
Ne pas oublier les guillemets si le SSID et/ou le mot de passe comportent des caractères spéciaux susceptibles d'être interprêtés comme des commandes !
On peut voir les réseaux connectés par nmcli c
(si DEVICE
est égal à --
, c'est qu'il n'est pas connecté !) :
# nmcli c
NAME UUID TYPE DEVICE
CELESTIALBEING-5G 12345678-9abc-def0-1234-56789abcdf01 wifi wlan0
Et ip a
me donne les détails de la connexion :
# ip a
[. . .]
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 01:23:45:67:89:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.1.180/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 12862sec preferred_lft 12862sec
Il m'est arrivé d'avoir une erreur comme celle-là :
# nmcli d wifi connect "CELESTIALBEING-5G" password "aeolialives!!!"
Error: Connection activation failed: (7) Secrets were required, but not provided.
Pourtant le mot de passe était bon, et le réseau Wi-Fi est bien listé dans les connexions :
# nmcli c
NAME UUID TYPE DEVICE
CELESTIALBEING-5G 12345678-9abc-def0-1234-56789abcdf01 wifi --
Je relance la connexion :
# nmcli c up "CELESTIALBEING-5G"
Passwords or encryption keys are required to access the wireless network 'CELESTIALBEING-5G'.
Warning: password for '802-11-wireless-security.psk' not given in 'passwd-file' and nmcli cannot ask without '--ask' option.
Error: Connection activation failed: Secrets were required, but not provided
Hint: use 'journalctl -xe NM_CONNECTION=12345678-9abc-def0-1234-56789abcdf01 + NM_DEVICE=wlan0' to get more details.
Apparemment le mot de passe ne s'est pas enregistré correctement, on va lui fournir avec le paramètre --ask
, comme suggéré.
# nmcli c up "CELESTIALBEING-5G" --ask
Passwords or encryption keys are required to access the wireless network 'CELESTIALBEING-5G'.
Password (802-11-wireless-security.psk): •••••••••••••••
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
Yes ça marche ! 😁 Et en étant régi par NetworkManager, le Wi-Fi se reconnecte au réseau au redémarrage. 😉
Pour ajouter un réseau masqué ou pré-enregistrer un réseau :
# nmcli c add type wifi con-name "ALAWS" ifname wlan0 ssid "ALAWS-GN-X"
# nmcli c modify "ALAWS" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "mementomori"
Les commandes se décomposent ainsi :
nmcli c add type wifi con-name
"<nom court>" ifname wlan0 ssid
"<ssid>"
nmcli c modify
"<nom court>" wifi-sec.key-mgmt wpa-psk wifi-sec.psk
"<mot de passe>"
Voilà, je crois que j'ai fait le tour. 😉