Creating an IRC Botnet has two main parts: (1) establishing an IRC server and (2) generating the bots.

Part 1: Establishing an IRC Server

Credit and kudos to Gus @PiMyLifeUp for writing the tutorial I summarized here.

Software I used to get this to work

OS: Ubuntu 18.04.1 LTS
Packages: ircd-hybrid libtd17 whois

Commands I used to get setup

FYI: SSL & RSA private keys will be created during the following install process.

# apt-get update
# apt-get upgrade
# apt-get install ircd-hybrid libltd17 whois

Copy the following command’s output (it will be an encrypted version of the password you supply).

# /usr/bin/mkpasswd <password>

Editing your main configuration file

# vim /etc/ircd-hybrid/ircd.conf

The Server Info { block is not completely necessary, but it allows you to customize your server.

Server Info {
name = "irc.server01.sky.net";
description = "Cool-guy IRC Server";
network_name = "sky.net";
network_desc = "A network to control the Terminators."; 
max_clients = 13;
}

Disable the legacy option in the Auth { block by placing a # in front of it. The Identd service will eventually get in your way more than it will protect you.

Auth {
# flags = need_ident;
}

Remove the # before the Operator Info { block and then, modify it. The user value specifies anyone can run the oper command.

Operator Info { 
name = "tank"; 
user = "*@*"; 
password = "<encrypted version of password>;"
}

Editing your Message of the Day (MOTD) login banner

Again, something else not entirely necessary, but here’s my excuse to use ASCII art:
# vim /etc/ircd-hybrid/irc.motd

ACCESSING: irc.server01.sky.net
----------------------------------------------
           o    .   _     .
             .     (_)         o
      o      ____            _       o
     _   ,-/   /)))  .   o  (_)   .
    (_)  \_\  ( e(     O             _
    o       \/' _/   ,_ ,  o   o    (_)
     . O    _/ (_   / _/      .  ,        o
        o8o/    \\_/ / ,-.  ,oO8/( -TT
       o8o8O | } }  / /   \Oo8OOo8Oo||     O
      Oo(""o8"""""""""""""""8oo""""""")    
     _   `\`'                  `'   /'   o
    (_)    \                       /    _   .
         O  \           _         /    (_)
   o   .     `-. .----<(o)_--. .-'
      --------(_/------(_<_/--\_)--------
   Can't you see I'm trying to take a bath?
----------------------------------------------

Checking your work

If you have Nmap installed, run it to verify ports are open and the service is running.
# /etc/init.d/ircd-hybrid restart
# nmap localhost

I have a MacBook and iPhone so I used LimeChat and Igloo to test my server.