Upgrading from 5.x

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.

Automatic
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.

Manual
If you are NOT OK with replacing your current U5 installation, for example if you want to have them in different directories, then: IMPORTANT: Do NOT blindly copy over ALL *.conf files. In particular, do not copy over modules.default.conf from U5 to U6.
 * 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.

Windows
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
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
Add the following to your unrealircd.conf: include "snomasks.default.conf";

Load a cloaking module
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
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 { !debug; all; }       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
Check in your config file if you have a set block with an  item, and/or if you have any oper blocks with an   item:
 * In UnrealIRCd 6 lots of snomask letters changed! See Snomasks
 * The new default snomask for opers in UnrealIRCd 6 is
 * 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
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:

*NIX
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

Windows
Simply:
 * 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
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
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.

IRCOps
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
In a mixed network you will sometimes see things different on both sides of a link. For example, UnrealIRCd 6 has named extended bans, while they will show up as letter extended bans on the UnrealIRCd 5 side. 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
Sometimes there is functionality in UnrealIRCd 6 that simply does not exist in UnrealIRCd 5. For example, country extended bans is a new feature. Such functionality will not be effective for users on UnrealIRCd 5 servers. In this example, the ban will never match on the U5-side.