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.

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.

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
As said, if you use any third party modules, then you may have to ask the author to update them for UnrealIRCd 6.

If (all) your third party modules have already been updated for use in UnrealIRCd 6 by the author(s), and they are in the unrealircd module repository, then the upgrade should be seemless and not require you to do anything special. When you install (or upgrade) UnrealIRCd they are upgraded automatically.

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.