Tip of the day: UnrealIRCd 6 uses GeoIP by default. It is shown in WHOIS but also available as country in mask items,

for example it can be used in the TLD Block to serve a Spanish MOTD to people in Spanish speaking countries.

Upgrading from 5.x

From UnrealIRCd documentation wiki
Jump to navigation Jump to search
Other languages:

Upgrading from UnrealIRCd 5.x to UnrealIRCd 6.x requires a few changes.

This article consists of four parts: how to install 6.x, how to update your config file, an important note on 3rd party modules (spoiler: they need to be updated too), and finally what happens if you are running a mixed network consisting of both U5 and U6 servers.




If you are OK with replacing your current U5 installation with U6 then you can use the following command on *NIX:

./unrealircd upgrade --unreal6

The command from above will create a backup of your current installation to ~/unrealircd.bak.*, and will then download, extract, compile and install, making this step very easy.

After this, do NOT restart your IRC server yet! Continue with Configuration file changes below.


If you are NOT OK with replacing your current U5 installation, for example if you want to have them in different directories, then:

  • Manually install UnrealIRCd 6 by downloading the .tar.gz and following all the usual procedures from Installing from source.
  • Manually copy over your U5 conf/unrealircd.conf to your U6 conf directory. And also don't forget your ircd.motd, tls/server.cert.pem, tls/server.key.pem, etc.

IMPORTANT: Do NOT blindly copy over ALL *.conf files. In particular, do not copy over modules.default.conf from U5 to U6.


Download and run the installer for UnrealIRCd 6. Everything will be installed in a NEW directory called C:\Program Files\UnrealIRCd 6 so your existing C:\Program Files\UnrealIRCd 5 will be left untouched.

After the setup has finished, copy over the following files from C:\Program Files\UnrealIRCd 5\conf to C:\Program Files\UnrealIRCd 6\conf:

  • unrealircd.conf
  • tls\server.cert.pem
  • tls\server.key.pem

IMPORTANT: Do NOT blindly copy over ALL *.conf files. In particular, do not copy over modules.default.conf from U5 to U6.

Configuration file changes[edit]

You can use your existing unrealircd.conf from UnrealIRCd 5, there is no need to start from scratch. However, you will need to make a few updates:

Include snomask configuration[edit]

Add the following to your unrealircd.conf:

include "snomasks.default.conf";

Load a cloaking module[edit]

In UnrealIRCd 6 we require you to choose a cloaking module explicitly. If you are upgrading an existing U5 network/server and want to keep the same style of cloaked bans, then add this to your unrealircd.conf:

loadmodule "cloak_md5";

Update log blocks[edit]

In UnrealIRCd 6 we use a new log block syntax. Most people will just want to log everything. So, remove all your old log { } blocks and add this one:

log {
        source {
        destination {
            file "ircd.log" { maxsize 100M; }

For full details, such as how to filter out things, and optional things like JSON logging, see the new Log block.

Update your snomasks[edit]

Check in your config file if you have a set block with an snomask-on-oper item, and/or if you have any oper blocks with an snomask item:

  • In UnrealIRCd 6 lots of snomask letters changed! See Snomasks
  • The new default snomask for opers in UnrealIRCd 6 is +bBcdfkqsSoO
  • If you have a snomask setting in your config file, be sure to update it! Or just remove the line to stick with the defaults
  • If you don't have a set::snomask-on-oper or oper::snomask, then you don't need to change anything

Test your config and restart the IRC server[edit]

Once you have done the config changes of above all should be good, so now it's time to test and run the new UnrealIRCd 6:


Go to your ~/unrealircd/ directory (or wherever you installed UnrealIRCd to) and run:

./unrealircd configtest

This will tell you if there are any (remaining) errors. If all looks good then you can boot UnrealIRCd 6:

./unrealircd restart



  • Stop your UnrealIRCd 5 server. If you are running as a service (instead of GUI), then it would be wise to uninstall it too.
  • Start the UnrealIRCd 6 server

Third party modules[edit]

When you are installing or upgrading, UnrealIRCd automatically checks via the module manager if the official unrealircd module repository contains an updated version of the module. If there is an UnrealIRCd 6 version of the module then it will be upgraded automatically.

Most modules by Gottem and k4be have been updated for UnrealIRCd 6. A few of them have been removed because the functionality is now already in UnrealIRCd 6 itself, for example the geoip modules.

If you use any 3rd party modules that are not in the official unrealircd module repository, and/or that have not been updated for use with UnrealIRCd 6, then you will have to contact the module author for an updated version. Or, you can decide not to load the module because you don't really need it or can use similar features that are in UnrealIRCd itself to get the same effect.

Important: you CANNOT load UnrealIRCd 5 modules on UnrealIRCd 6 without changes.

Running a mixed U5-U6 network[edit]

There are some consequences of running a network where some are running UnrealIRCd 5 and some other server(s) are on UnrealIRCd 6. In most cases they are minor and acceptable for a short period of time (say, a few weeks or a few months) until the entire network is on UnrealIRCd 6.


Be sure to read the Snomasks article for differences between UnrealIRCd 5 and 6, as the letters have changed! But, even once you have set your snomasks correctly, some server notices will be missing. In practice, it are only a few that have to do with linking, sacommands (SAJOIN/SAPART) and OperOverride. In most cases these are only a small problem. Once all servers are on UnrealIRCd 6 this issue is resolved and you should see everything again.

Functionality looking different[edit]

In a mixed network you will sometimes see things different on both sides of a link. For example, UnrealIRCd 6 has named extended bans (+b ~account:xyz), while they will show up as letter extended bans on the UnrealIRCd 5 side (+b ~a:xyz). In the case of such extended bans, UnrealIRCd 6 automatically sends it as letter bans to UnrealIRCd 5 servers, so there won't be any problem. The extbans will work on both U5 and U6.

Functionality missing / not working well[edit]

Sometimes there is functionality in UnrealIRCd 6 that simply does not exist in UnrealIRCd 5. For example, country extended bans is a new feature (+b ~country:BE). Such functionality will not be effective for users on UnrealIRCd 5 servers. In this example, the ban will never match on the U5-side.