J'ai installe mon premier UnrealIRCd en 2002. C'etait la version 3.2, sur une Red Hat 7.3 avec 256 Mo de RAM. Le script ./Config posait une trentaine de questions et la compilation prenait vingt minutes. Aujourd'hui, UnrealIRCd 6 se compile en deux minutes et la configuration est devenue bien plus lisible. Ce qui n'a pas change : c'est toujours l'IRCd le plus deploye au monde, et pour de bonnes raisons.
Pourquoi UnrealIRCd
UnrealIRCd est l'IRCd qui offre le meilleur rapport fonctionnalites/complexite. A la difference d'InspIRCd ou tout est modulaire et demande une configuration granulaire, UnrealIRCd arrive avec la plupart des fonctionnalites activees par defaut. Vous installez, vous configurez les parametres essentiels, et vous avez un serveur fonctionnel.
Les points forts concrets : support TLS natif, anti-flood avance, support SASL, cloaking des IPs, DNSBL integre, et une documentation qui couvre chaque option de configuration. La communaute est active, les mises a jour de securite arrivent rapidement, et la migration d'une version a l'autre est generalement fluide.
La version 6 est la branche stable actuelle. Elle supporte IRCv3 (server-time, message-tags, echo-message), le JSON logging, et un systeme de configuration modernise. Si vous utilisez encore UnrealIRCd 5 ou plus ancien, la migration vaut le coup.
Prerequis
# Systeme : Debian 12 / Ubuntu 22.04+ (ou equivalent)
# RAM minimum : 512 Mo (1 Go recommande)
# Disque : 500 Mo pour l'installation + logs
# Paquets necessaires :
sudo apt update
sudo apt install build-essential pkg-config libssl-dev \
libcurl4-openssl-dev zlib1g-dev libpcre2-dev \
libargon2-dev libsodium-dev git
# Creer un utilisateur dedie :
sudo useradd -m -s /bin/bash ircd
sudo su - ircd
Ne faites jamais tourner un IRCd en root. Jamais. Meme pour un test rapide. L'utilisateur dedie limite les degats en cas de compromission du processus.
Compilation depuis les sources
# En tant qu'utilisateur ircd :
git clone https://github.com/unrealircd/unrealircd.git
cd unrealircd
# Le script de configuration interactif :
./Config
# Questions cles :
# - Install directory: /home/ircd/unrealircd (defaut ok)
# - Compiler avec TLS (OpenSSL): YES
# - Compiler avec libcurl (pour les DNSBL): YES
# - Compiler avec argon2 (hash de passwords): YES
# Compilation :
make -j$(nproc)
make install
# L'installation se fait dans ~/unrealircd/
# Structure :
# ~/unrealircd/bin/ <- binaire
# ~/unrealircd/conf/ <- configuration
# ~/unrealircd/data/ <- runtime (pid, etc.)
# ~/unrealircd/logs/ <- logs
# ~/unrealircd/modules/ <- modules charges
La compilation depuis les sources est recommandee. Les paquets des distributions sont souvent en retard de plusieurs versions, et les correctifs de securite d'UnrealIRCd sortent parfois entre deux releases de la distribution.
git pull && ./Config && make && make install. La configuration existante est preservee. Faites un backup de conf/ avant quand meme.Configuration de base
Le fichier de configuration est conf/unrealircd.conf. UnrealIRCd fournit un exemple commente : copiez-le et adaptez-le.
/* unrealircd.conf — configuration minimale fonctionnelle */
include "modules.default.conf"; /* Charger les modules standards */
include "operclass.default.conf"; /* Classes d'operateurs */
include "help/help.conf"; /* Aide en ligne */
/* Identite du serveur */
me {
name "irc.votredomaine.com";
info "Mon serveur IRC";
sid "001";
};
/* Admin */
admin {
"Votre Nom";
"admin@votredomaine.com";
};
/* Classe de connexion pour les clients */
class clients {
pingfreq 120;
maxclients 500;
sendq 1M;
recvq 8192;
};
class servers {
pingfreq 90;
connfreq 60;
maxclients 10;
sendq 20M;
};
/* Autoriser les connexions */
allow {
mask *;
class clients;
maxperip 3;
};
/* Listener TLS sur 6697 */
listen {
ip *;
port 6697;
options { tls; };
};
/* Listener non-TLS sur 6667 (optionnel) */
listen {
ip *;
port 6667;
};
/* Configuration TLS */
set {
tls {
certificate "/home/ircd/unrealircd/conf/tls/server.cert.pem";
key "/home/ircd/unrealircd/conf/tls/server.key.pem";
};
kline-address "admin@votredomaine.com";
network-name "MonReseau";
default-server "irc.votredomaine.com";
help-channel "#help";
cloak-keys {
"cle-aleatoire-1-minimum-80-caracteres";
"cle-aleatoire-2-minimum-80-caracteres";
"cle-aleatoire-3-minimum-80-caracteres";
};
hiddenhost-prefix "user";
anti-flood {
connect-flood 3:60;
handshake-timeout 30;
};
max-channels-per-user 20;
};
Les cloak-keys sont essentielles : elles determinent comment les IPs des utilisateurs sont masquees. Generez-les aleatoirement (80+ caracteres) et ne les partagez qu'avec les autres serveurs de votre reseau. Si quelqu'un les obtient, il peut reverser le cloaking.
TLS avec Let's Encrypt
# Sur le serveur (en root) :
sudo apt install certbot
sudo certbot certonly --standalone -d irc.votredomaine.com
# Copier les certificats pour l'utilisateur ircd :
sudo cp /etc/letsencrypt/live/irc.votredomaine.com/fullchain.pem \
/home/ircd/unrealircd/conf/tls/server.cert.pem
sudo cp /etc/letsencrypt/live/irc.votredomaine.com/privkey.pem \
/home/ircd/unrealircd/conf/tls/server.key.pem
sudo chown ircd:ircd /home/ircd/unrealircd/conf/tls/*.pem
sudo chmod 600 /home/ircd/unrealircd/conf/tls/*.pem
# Automatiser le renouvellement :
# /etc/letsencrypt/renewal-hooks/deploy/unrealircd.sh
#!/bin/bash
cp /etc/letsencrypt/live/irc.votredomaine.com/fullchain.pem \
/home/ircd/unrealircd/conf/tls/server.cert.pem
cp /etc/letsencrypt/live/irc.votredomaine.com/privkey.pem \
/home/ircd/unrealircd/conf/tls/server.key.pem
chown ircd:ircd /home/ircd/unrealircd/conf/tls/*.pem
chmod 600 /home/ircd/unrealircd/conf/tls/*.pem
kill -HUP $(cat /home/ircd/unrealircd/data/unrealircd.pid)
chmod +x /etc/letsencrypt/renewal-hooks/deploy/unrealircd.sh
Pour les organisations qui gerent plusieurs serveurs — IRC et autres — avoir un processus systematique de gestion des certificats TLS est crucial. Des prestataires comme PowerITi peuvent mettre en place cette automatisation sur l'ensemble de votre infrastructure pour que vous n'ayez plus a y penser.
Configurer les operateurs
/* Generer un hash de mot de passe : */
/* ./unrealircd/bin/unrealircd -P monmotdepasse */
oper monpseudo {
password "$argon2id$v=19$m=...hash..."; /* Hash argon2id */
mask *@ip.connue;
class opers;
operclass netadmin;
swhois "est un administrateur reseau";
};
Utilisez toujours des mots de passe hashes (argon2id). Ne mettez jamais de mot de passe en clair dans la configuration. Limitez la mask a votre IP connue — si quelqu'un devine votre mot de passe mais n'a pas votre IP, il ne peut pas devenir oper.
unrealircd.conf contient des informations sensibles (hash des mots de passe oper, cloak-keys, mots de passe de link). Permissions 600, proprietaire ircd. Jamais dans un depot git public.Premier lancement
# En tant qu'utilisateur ircd :
cd ~/unrealircd
# Verifier la configuration :
./unrealircd configtest
# Doit afficher : "Configuration test passed"
# Lancer :
./unrealircd start
# Verifier les logs :
tail -f logs/ircd.log
# Tester la connexion :
# Depuis un client IRC :
/server irc.votredomaine.com 6697 -ssl
# Se faire oper :
/OPER monpseudo monmotdepasse
# Systemd service (optionnel) :
# /etc/systemd/system/unrealircd.service
[Unit]
Description=UnrealIRCd
After=network.target
[Service]
Type=forking
User=ircd
ExecStart=/home/ircd/unrealircd/unrealircd start
ExecStop=/home/ircd/unrealircd/unrealircd stop
ExecReload=/home/ircd/unrealircd/unrealircd rehash
Restart=on-failure
[Install]
WantedBy=multi-user.target
Si configtest echoue, le message d'erreur indique la ligne problematique et la raison. Les erreurs les plus courantes : point-virgule manquant, accolade non fermee, ou chemin de fichier TLS incorrect.
Questions frequentes
UnrealIRCd ou InspIRCd ?
UnrealIRCd si vous voulez un serveur fonctionnel rapidement avec une configuration par defaut saine. InspIRCd si vous voulez un controle granulaire sur chaque fonctionnalite et que vous ne craignez pas une configuration plus complexe. Pour une premiere installation, UnrealIRCd est plus accessible.
Combien d'utilisateurs UnrealIRCd peut-il gerer ?
Facilement 5 000 a 10 000 sur un serveur moderne avec 2-4 Go de RAM. Au-dela, la limite est plus souvent le reseau que le logiciel. UnrealIRCd est utilise par des reseaux de 10 000+ utilisateurs simultanees.
Comment mettre a jour UnrealIRCd ?
Sauvegardez conf/. Faites git pull dans le repertoire source. Relancez ./Config && make && make install. Faites ./unrealircd rehash ou restart. Les mises a jour mineures ne necessitent generalement qu'un rehash, pas un restart.