Hello, friends. In this post, you will learn how to deploy your own IRC server by installing Inspircd on Debian 10. The process is very easy and gives us many advantages that we can take advantage of in our institution.
First of all, it is important to remember that it is IRC. Internet Relay Chat is a real-time communications protocol. Using IRC, users should not establish communication beforehand, so that all users on a channel can communicate with each other, even if they have had no previous contact. Widely used for discussions and technical support of many open source projects.
Install Inspircd on Debian 10
The first thing to do is to connect to the server via SSH. After that, upgrading the system is always a good option.
sudo apt update sudo apt upgrade
With the system upgraded, we can start the installation of Inspircd on Debian 10. Fortunately, the package is in the official Debian 10 repositories so to install it, just run
sudo apt install inspircd Reading package lists… Done Building dependency tree Reading state information… Done The following additional packages will be installed: libmariadb3 libpq5 libtre5 mariadb-common mysql-common Suggested packages: sqlite3 default-mysql-server ldap-server postgresql gnutls-bin tre-agrep The following NEW packages will be installed: inspircd libmariadb3 libpq5 libtre5 mariadb-common mysql-common 0 upgraded, 6 newly installed, 0 to remove and 26 not upgraded. Need to get 1,848 kB of archives. After this operation, 11.8 MB of additional disk space will be used. Do you want to continue? [Y/n]
This way, we will be able to use it and configure it for our instance.
Configuring Inspircd on Debian 10
The program as such is installed, but before using it we have to configure it.
First, on our system, we have to open ports 22
and 6667
where the application works.
Then, we have to examine the /etc/inspircd/inspircd.conf
file which is where all the application configuration resides. It is a long file, but very well structured so we should have no problems editing it.
Before making any changes, make a backup of it.
sudo cp /etc/inspircd/inspircd.conf /etc/inspircd/inspircd.conf.bak
Now, yes, we can edit it.
sudo nano /etc/inspircd/inspircd.conf
In the server
tab you have to configure the basics of the instance. In our chaos, we have left it as follows.
<server name="osradatest.ga" description="Example IRC Server" id="1AB" network="The osradar net">
Replace the name
value with your domain and network
with your network name. Set a description and leave the value of id
as is.
Now in the admin
tag create the admin user. Set a name, nickname, and email address.
<admin name="Example User" nick="example-user" email="[email protected]">
Then locate the bind
tag and here we have the address
values where the server will be available. If you leave it blank, it will be accessible from any host which is desired if you want it to be available via the internet. The other ports
value is to define the listening port which by default is 6667
and in type
leave it clients
.
<bind address="" port="6667" type="clients">
The admin user can shut down or restart the server. But to do this he has to enter a password which we can define in the power
tag in the diepass
and restartpass
values.
<power diepass="shutdown-password" restartpass="restart-password" pause="2">
After this, he creates an operator user in the oper
tag. Again, in the host
value he can define from which location he can log in. In my case, I have left it accessible from any host, but a good practice would be to limit it to localhost
or a specific IP. Also, set a password and leave the type
in NetAdmin
.
<oper name="example-user" password="password" host="*@*" type="NetAdmin">
We won’t touch anything else, for now, so save your changes and close the editor.
Now, you should edit these two files. The first one is /etc/inspircd/inspircd.motd
which will serve as the first message. And the other one is /etc/inspircd/inspircd.rules
where you can set rules for behaviours that can be displayed from a client.
To apply the changes, you have to restart the program.
sudo systemctl restart inspircd
And you can check the status of it
sudo systemctl status inspircd ● inspircd.service - IRC server Loaded: loaded (/lib/systemd/system/inspircd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-07-09 18:26:07 CEST; 14s ago Docs: man:inspircd(1) Main PID: 2711 (inspircd) Tasks: 1 (limit: 2296) Memory: 2.1M CGroup: /system.slice/inspircd.service └─2711 /usr/sbin/inspircd --logfile /var/log/inspircd.log --config /etc/inspircd/inspircd.conf --nofork Jul 09 18:26:07 osradar systemd[1]: Started IRC server. Jul 09 18:26:07 osradar inspircd[2711]: Inspire Internet Relay Chat Server Jul 09 18:26:07 osradar inspircd[2711]: (C) InspIRCd Development Team. Jul 09 18:26:07 osradar inspircd[2711]: Developers: Jul 09 18:26:07 osradar inspircd[2711]: Brain, FrostyCoolSlug, w00t, Om, Special, peavey Jul 09 18:26:07 osradar inspircd[2711]: aquanight, psychon, dz, danieldg, jackmcbarn Jul 09 18:26:07 osradar inspircd[2711]: Attila Jul 09 18:26:07 osradar inspircd[2711]: Others: See /INFO Output Jul 09 18:26:07 osradar inspircd[2711]: Loading core commands…………………………………………….. Jul 09 18:26:07 osradar inspircd[2711]: InspIRCd is now running as 'osradartest.ga'[1AB] with 1024 max open sockets
Testing the installation
The best way to find out if everything went well is to run a client. In this case, we have chosen weechat
as it is terminal and lightweight. Ideal for testing.
So, install it on Ubuntu and Debian running
sudo apt install weechat
Run it
weechat
Now add our server by running
/server add [server-alias] [your-domain]
When added, you can connect via
/connect [server-alias]
If you need to, you can connect as an operator user.
/oper [server-alias][password]
As you can see in the screenshots, everything went fine.
Recommended: Securing the server with SSL certification
To secure your communications you should obtain and add SSL certificates using Certbot.
So, install it.
sudo apt install certbot
and get a certificate for your domain
sudo certbot certonly --standalone --preferred-challenges http -d [your-domain]
And now to add it to the program and secure the connection, create a folder for it inside the program settings
sudo mkdir /etc/inspircd/ssl
Then, copy the obtained certificates to this folder
sudo cp /etc/letsencrypt/live/[your-domain]/fullchain.pem /etc/inspircd/ssl/cert.pem sudo cp /etc/letsencrypt/live/[your-domain]/privkey.pem /etc/inspircd/ssl/key.pem
Now make the irc
user the owner of that folder to prevent others from taking advantage of it.
sudo chown -R irc:irc /etc/inspircd
Now in the Inspircd configuration file, you need to add the following information
sudo nano /etc/inspircd/inspircd.conf
And under the bind
tag add the following.
<gnutls certfile="/etc/inspircd/ssl/cert.pem" keyfile="/etc/inspircd/ssl/key.pem" priority="SECURE192:-VERS-SSL3.0"> <module name="m_ssl_gnutls.so">
In short, we are just indicating the location of the certificates.
Save the changes and restart the service
sudo systemctl restart inspircd
And now to connect, remove the previous alias in weechat
.
/server from the [alias]
When using SSL the port to use is 6697 which you have to open in the firewall and add another alias as follows.
/server add [alias] [your-domain]/6697 -ssl
And then connect again.
So, enjoy it.
Conclusion
In this post, you learned how to install an IRC server using Inspircd. This way you can create one and manage it without any problems.
More info: Official Documentation