IRC (Internet Relay Chat) est le grand-père des messageries instantanées, qui existait même avant l’invention du World Wide Web. C’est donc une technologie avec un os dans le nez, mais ce n’est pas pour autant qu’il faut la dénigrer. Parfois, c’est dans les vieilles marmites qu’on fait les meilleures soupes.
Dans cet article, je décris la mise en place d’un serveur IRC avec NgIRCd sous Rocky Linux 8. Voici la configuration que je cherche à obtenir :
- Deux canaux de discussion publics prédéfinis.
- Un canal de discussion privé prédéfini et accessible par mot de passe.
- Le serveur doit accepter les seules connexions chiffrées.
Prérequis
- Un serveur dédié sous Rocky Linux 8.
- Un domaine valide, par exemple
irc.microlinux.fr
. - Un certificat pour ce domaine.
Configuration du pare-feu
Ouvrir le port 6667 en TCP :
# firewall-cmd --permanent --add-service=irc
# firewall-cmd --reload
# firewall-cmd --list-services
dns http https imaps irc smtp smtps ssh
Installation
Sous Red Hat Enterprise Linux et Rocky Linux, le paquet ngircd
est fourni par le dépôt EPEL, qu’il faudra donc avoir configuré au préalable :
# dnf repolist | grep epel epel EPEL epel-modular EPEL Modular # dnf install -y ngircd
Configuration
La configuration du serveur NgIRCd s’effectue par le biais du fichier /etc/ngircd.conf
. Le fichier par défaut livré avec l’installation comporte un peu plus de 400 lignes avec des commentaires détaillés pour chacune des options.
Le principe de fonctionnement de NgIRCd est similaire au serveur de messagerie Postfix dans le sens où l’application comporte une configuration compilée par défaut. À partir de là, il suffit de renseigner les options qui dévient de cette configuration dans le fichier /etc/ngircd.conf
, ce qui permet de se retrouver avec un fichier relativement compact.
Pour commencer, j’ai renommé le fichier initial :
# cd /etc/ # mv -v ngircd.conf ngircd.conf.orig renamed 'ngircd.conf' -> 'ngircd.conf.orig'
Ensuite j’ai expérimenté un peu, pour me retrouver avec la configuration suivante :
# /etc/ngircd.conf
[Global]
Name = irc.microlinux.fr
AdminInfo1 = Serveur IRC Microlinux
AdminInfo2 = France
AdminEMail = info@microlinux.fr
Info = Serveur IRC Microlinux
Listen = 0.0.0.0
Ports = 6668
ServerGID = ngircd
ServerUID = ngircd
[Options]
AllowedChannelTypes =
[SSL]
CertFile = /etc/letsencrypt/live/sd-110196.dedibox.fr/fullchain.pem
KeyFile = /etc/letsencrypt/live/sd-110196.dedibox.fr/privkey.pem
Ports = 6667
[Channel]
Name = #microlinux
Topic = Support Microlinux
[Channel]
Name = #scholae-public
Topic = Discussions publiques
[Channel]
Name = #scholae-secure
Topic = Discussions privées
Modes = k
KeyFile = /etc/ngircd.scholae-secure.key
Cette configuration mérite quelques explications :
Listen = 0.0.0.0
indique que le serveur est à l’écoute de toutes les adresses en IPv4.- L’application tourne avec les droits de l’utilisateur système
ngircd
et du groupe système associé. - En dehors de la connexion chiffrée spécifiée dans la section
[SSL]
, NgIRCd doit impérativement comporter une configuration sans chiffrement. L’astuce consiste ici à configurer le port « bidon » 6668 sans ouvrir le pare-feu pour ce port. Du coup le port « standard » 6667 sera utilisé pour les connexions chiffrées. - Si l’on définit une chaîne de caractères vide pour l’option
AllowedChannelTypes
, cela permet d’empêcher la création intempestive de canaux de discussion sur le serveur. Dans ce cas, on souhaite uniquement utiliser les canaux prédéfinis. - Dans la configuration du canal privé
#scholae-secure
,Modes = k
signifie que l’utilisateur a besoin de fournir un mot de passe pour se connecter. Les identifiants de connexion et les mots de passe correspondants sont stockés dans le fichier spécifié/etc/ngircd.scholae-secure.key
.
Le fichier /etc/ngircd.scholae-secure.key
devra être édité en suivant la syntaxe suivante :
utilisateur:pseudo:mot_de_passe
Concrètement, voici à quoi il ressemblera :
kikinovak:kikinovak:mot_de_passe_de_kikinovak jmortreux:jmortreux:mot_de_passe_de_jmortreux wchenaoui:wchenaoui:mot_de_passe_de_wchenaoui fbanester:fbanester:mot_de_passe_de_fbanester mchabaud:mchabaud:mot_de_passe_de_mchabaud ataudiere:ataudiere:mot_de_passe_de_ataudiere
On pourra éditer /etc/ngircd.motd
pour fournir un message de bienvenue (Message Of The Day) aux utilisateurs du serveur :
##################################### # Bienvenue sur notre serveur IRC ! # #####################################
Régler les permissions de tous ces fichiers de configuration :
# chown root:ngircd /etc/ngircd.* # chmod 0660 /etc/ngircd.*
L’option --configtest
permet de tester la configuration tout en affichant la valeur utilisée pour chaque option :
# ngircd --configtest
Mise en service
Activer et démarrer NgIRCd :
# systemctl enable ngircd --now
Vérifier l’état du service :
# systemctl status ngircd
NgIRCd utilise Syslog pour la journalisation. On utilisera donc journalctl
pour afficher les logs :
# journalctl -u ngircd
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
2 commentaires
Galaad · 13 février 2024 à 8 h 15 min
Merci pour cet article très clair et intéressent,
Avez vous un client IRC pour android à conseiller ?
quelques chose de facile à prendre en mains et configurer pour des personne pas forcement versé dans la technologie.
kikinovak · 13 février 2024 à 8 h 29 min
Aucune idée. J’utilise IRC principalement sur ma station de travail, et là c’est avec HexChat. Le mieux sera sans doute de tester quelques applis IRC et de choisir celle qui vous convient le mieux.