He instalado UnrealIRCd mas veces de las que puedo contar. En Slackware, en FreeBSD, en Debian, en maquinas virtuales, en contenedores, en hardware que probablemente deberia haber sido reciclado hace anos. La version 6 es la mas limpia que han sacado. Si vas a montar un servidor IRC hoy, esta es la guia que me hubiera gustado tener cuando empece.
Requisitos previos
Necesitas una maquina con Linux. Debian 12 o Ubuntu 22.04 LTS son las opciones mas sensatas. Si prefieres FreeBSD, el proceso es similar pero los paths y los comandos de paquetes cambian. No voy a cubrir Windows — si quieres correr un IRCd en Windows, tenemos una conversacion pendiente sobre decisiones de vida.
Requisitos minimos:
- 512 MB de RAM (1 GB recomendado si vas a tener servicios)
- 1 GB de disco (mas si quieres logs)
- Una IP publica (o al menos un puerto forwarding en 6667 y 6697)
- Un dominio apuntando a esa IP (opcional pero muy recomendado para TLS)
- Acceso root o sudo
Si no tienes servidor propio, un VPS basico de cualquier proveedor funciona. Con 2-4 euros al mes tienes suficiente para un servidor IRC de hasta 500 usuarios. Para algo mas serio, un proveedor como PowerITi que entienda de hosting dedicado te ahorra problemas de rendimiento a largo plazo.
# Instalar dependencias en Debian/Ubuntu:
sudo apt update
sudo apt install build-essential libssl-dev libcurl4-openssl-dev \
zlib1g-dev libpcre2-dev pkg-config git curl
# Crear usuario dedicado (NUNCA corras ircd como root):
sudo useradd -m -s /bin/bash ircd
sudo su - ircd
Compilacion e instalacion
UnrealIRCd se compila desde fuente. No es tan intimidante como suena — el script de configuracion hace la mayor parte del trabajo.
# Como usuario ircd:
cd ~
wget https://www.unrealircd.org/downloads/unrealircd-6.1.8.tar.gz
tar xzf unrealircd-6.1.8.tar.gz
cd unrealircd-6.1.8
# Configurar (acepta los defaults, son razonables):
./Config
# Las preguntas importantes:
# - Install directory: /home/ircd/unrealircd (default, dejalo)
# - Maximum connections: 1024 (suficiente para empezar)
# - Enable SSL/TLS: YES (siempre)
# - Enable cURL: YES (necesario para remote includes)
# Compilar e instalar:
make -j$(nproc)
make install
La compilacion tarda entre 2 y 10 minutos dependiendo de tu hardware. Si falla, el 90% de las veces es porque falta un paquete de desarrollo. Lee el error — casi siempre dice que libreria falta — e instalala.
Configuracion basica
El archivo de configuracion es unrealircd.conf en el directorio de instalacion. UnrealIRCd viene con un ejemplo completo (unrealircd.conf.example) que esta comentado linea por linea. Copialo como base.
cd ~/unrealircd/conf
cp examples/example.conf unrealircd.conf
# Edita con tu editor favorito:
nano unrealircd.conf
Los bloques que debes modificar obligatoriamente:
/* Identidad del servidor */
me {
name "irc.tudominio.com";
info "Mi servidor IRC";
sid "001";
};
/* Administrador */
admin {
"Tu Nombre";
"tunick";
"admin@tudominio.com";
};
/* Clase de conexion para usuarios normales */
class clients {
pingfreq 90;
maxclients 500;
sendq 200k;
recvq 8000;
};
/* Bloque listen: donde escucha el servidor */
listen {
ip *;
port 6667; /* Texto plano — considera desactivarlo */
};
listen {
ip *;
port 6697;
options { tls; };
};
/* Bloque oper: tu cuenta de operador */
oper tunick {
class opers;
mask *@*;
password "tu-password-hasheado";
operclass netadmin;
swhois "is a Network Administrator";
};
Para hashear la contrasena del oper, usa el comando que viene con UnrealIRCd:
~/unrealircd/bin/unrealircd -P argon2 "tu-password-aqui"
Nunca pongas contrasenas en texto plano en la configuracion. Nunca. He visto configs publicadas accidentalmente en pastebins con contrasenas de oper en claro. No seas esa persona.
TLS con Let's Encrypt
En 2025 no hay excusa para no tener TLS. Let's Encrypt es gratuito y la configuracion tarda cinco minutos.
# Instalar certbot (como root):
sudo apt install certbot
# Obtener certificado (standalone, para el dominio del IRC):
sudo certbot certonly --standalone -d irc.tudominio.com
# Los certificados quedan en:
# /etc/letsencrypt/live/irc.tudominio.com/fullchain.pem
# /etc/letsencrypt/live/irc.tudominio.com/privkey.pem
# Dar acceso al usuario ircd:
sudo chmod 755 /etc/letsencrypt/live/
sudo chmod 755 /etc/letsencrypt/archive/
# O mejor: copia los certs al directorio de UnrealIRCd
sudo cp /etc/letsencrypt/live/irc.tudominio.com/fullchain.pem /home/ircd/unrealircd/conf/tls/
sudo cp /etc/letsencrypt/live/irc.tudominio.com/privkey.pem /home/ircd/unrealircd/conf/tls/
sudo chown ircd:ircd /home/ircd/unrealircd/conf/tls/*.pem
En unrealircd.conf, configura el bloque TLS:
set {
tls {
certificate "tls/fullchain.pem";
key "tls/privkey.pem";
options {
no-client-certificate;
};
ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384";
};
};
# Cron para renovar y copiar (como root):
0 3 * * 1 certbot renew --quiet && \
cp /etc/letsencrypt/live/irc.tudominio.com/fullchain.pem /home/ircd/unrealircd/conf/tls/ && \
cp /etc/letsencrypt/live/irc.tudominio.com/privkey.pem /home/ircd/unrealircd/conf/tls/ && \
chown ircd:ircd /home/ircd/unrealircd/conf/tls/*.pem && \
su - ircd -c '/home/ircd/unrealircd/bin/unrealircd rehash'
Cloaking y seguridad
Cloaking oculta la IP real de los usuarios detras de un hash. Es basico para la privacidad en cualquier red IRC moderna.
/* En unrealircd.conf */
set {
cloak-method ip;
cloak-keys {
"clave-aleatoria-1-de-al-menos-80-caracteres-generala-con-openssl-rand";
"clave-aleatoria-2-diferente-de-la-primera-tambien-larga";
"clave-aleatoria-3-igualmente-unica-y-larga";
};
cloak-prefix "irc";
};
/* Para generar claves aleatorias: */
/* openssl rand -hex 40 */
Otras medidas de seguridad que deberias configurar desde el dia uno:
- Anti-flood: UnrealIRCd tiene modulos anti-flood integrados. Activalos. El default es razonable.
- Connection throttling: Limita cuantas conexiones nuevas acepta por segundo. Esto frena los ataques de conexion masiva.
- DNS blacklists: Configura DRONeS o EFnet RBL para bloquear IPs conocidas como fuentes de abuso.
- Max connections per IP: 3-5 es razonable. Mas que eso probablemente es un clon o un bot malicioso.
Instalar Anope
Un servidor IRC sin servicios es un servidor donde nadie puede registrar su nick ni proteger su canal. Anope es el estandar de facto.
# Como usuario ircd:
cd ~
wget https://github.com/anope/anope/releases/download/2.0.14/anope-2.0.14-source.tar.gz
tar xzf anope-2.0.14-source.tar.gz
cd anope-2.0.14-source
mkdir build && cd build
cmake -DINSTDIR=/home/ircd/anope -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
make install
# Copiar config ejemplo:
cd /home/ircd/anope/conf
cp nickserv.example.conf nickserv.conf
cp chanserv.example.conf chanserv.conf
cp services.example.conf services.conf
En services.conf, configura la conexion al IRCd:
uplink {
host = "127.0.0.1"
port = 6900 /* Puerto de link, no el de usuarios */
password = "link-password"
};
serverinfo {
name = "services.tudominio.com"
description = "IRC Services"
id = "00A"
};
Y en unrealircd.conf, anade el bloque de link para que el IRCd acepte la conexion de Anope:
link services.tudominio.com {
incoming {
mask 127.0.0.1;
};
password "link-password";
class servers;
};
ulines {
services.tudominio.com;
};
Systemd y arranque automatico
No quieres tener que iniciar manualmente el IRCd cada vez que el servidor reinicia. Crea un servicio systemd.
# /etc/systemd/system/unrealircd.service
[Unit]
Description=UnrealIRCd
After=network.target
[Service]
Type=forking
User=ircd
Group=ircd
WorkingDirectory=/home/ircd/unrealircd
ExecStart=/home/ircd/unrealircd/bin/unrealircd
ExecStop=/home/ircd/unrealircd/bin/unrealircd stop
ExecReload=/home/ircd/unrealircd/bin/unrealircd rehash
PIDFile=/home/ircd/unrealircd/data/unrealircd.pid
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
# Activar:
sudo systemctl daemon-reload
sudo systemctl enable unrealircd
sudo systemctl start unrealircd
sudo systemctl status unrealircd
Haz lo mismo para Anope. Dos servicios systemd, uno para cada proceso. Asi si uno se cae, systemd lo reinicia automaticamente.
Pruebas y verificacion
Antes de anunciar tu servidor al mundo, verificalo:
# Test de conexion TLS:
openssl s_client -connect irc.tudominio.com:6697 2>/dev/null | head -10
# Conectar con irssi:
irssi
/server add -auto -tls -tls_verify irc.tudominio.com 6697
/connect irc.tudominio.com
# Verificar servicios:
/msg NickServ HELP
/msg ChanServ HELP
# Verificar tu acceso oper:
/oper tunick tu-password
# Comprobar estado del servidor:
/stats u (uptime)
/lusers (usuarios conectados)
/map (mapa de servidores linkados)
Si todo responde correctamente, tu servidor esta listo. Lo siguiente es configurar los detalles: MOTD personalizado, reglas del servidor, canales por defecto. Pero eso es personalizacion, no infraestructura. Lo critico ya esta hecho.
Preguntas frecuentes
Puedo instalar UnrealIRCd con Docker?
Existen imagenes Docker no oficiales, pero no las recomiendo para produccion. UnrealIRCd no es una aplicacion stateless — tiene archivos de estado, PIDs, y maneja conexiones persistentes. Un contenedor anade complejidad sin beneficio real para un servicio de este tipo. Instalalo directamente.
Cuantos usuarios soporta un servidor?
Con hardware modesto (2 cores, 2 GB RAM), puedes manejar 5.000-10.000 usuarios sin problemas. El bottleneck suele ser el ancho de banda, no la CPU o la memoria. Para redes mas grandes, necesitas multiples servidores linkados.
Debo abrir el puerto 6667 (sin TLS)?
Depende de tu audiencia. Si todos tus usuarios pueden usar TLS (puerto 6697), no abras 6667. Menos superficie de ataque. Si necesitas compatibilidad con clientes antiguos que no soportan TLS, abrelo pero advierte que las conexiones no son cifradas.
Como actualizo UnrealIRCd?
Descarga la nueva version, compilala en un directorio separado, para el servicio, copia el binario, reinicia. Tu unrealircd.conf se mantiene entre versiones. Lee siempre las release notes antes de actualizar — a veces hay cambios en la sintaxis de configuracion.