> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/guides/updating-with-server-manager.md).

# Updating with the Server Manager

How to update an AXIOM-EMU V2 server from the Axiom Server Manager.

From version 2.0.0 the Axiom Server Manager installs updates for you. It downloads the new version, backs up your files and database, keeps your config edits, runs the database changes, starts the servers and checks they run the new version. If any step fails, it puts everything back.

The Manager never updates by itself. It only tells you an update exists. You choose when to install.

{% hint style="info" %}
Version 2.0.0 itself is a fresh install. Updates through the Manager start with the first release after it. Servers on 1.x use [Applying Updates](/docs/guides/applying-updates.md).
{% endhint %}

## What you need

* `AxiomServerManager.exe` in the root of your server folder, next to `GameServer\`, `DataServer\` and `Data\`. This is where the 2.0.0 package puts it. Do not move it.
* Your license key in the server ini files, as usual. The Manager reads it from there.
* All servers on one machine. The Manager cannot update a server that runs on another box.
* The Windows user that runs the Manager must be allowed to back up the `MuOnline` database (SQL role `db_backupoperator`, or `sysadmin`). With the default local SQL Server Express setup and a Windows administrator account this already works.

## 1. See that an update exists

The **Updates** button in the top bar turns orange and shows the version, for example **Update 2.0.1**. The Manager checks when it starts and every few hours. You can also open **Updates** and click **Check now**.

In the Updates window you can:

* read the release notes,
* pick the channel: **STABLE**, or **RC** for preview builds (paid licenses only),
* turn **Check automatically** off.

## 2. Download

Click **Download**. Your servers can stay online while it downloads.

If the release has a client patch, the Manager saves it to `ClientPatch\<version>\` in your server folder. If the notes say the client patch is **required**, publish it to your launcher before you let players back in.

## 3. Plan maintenance and stop the servers

Updates install with the servers off.

1. Warn your players. In the GameServer's **Commands** tab run `server.close.5m` (or `server.close.3m`, `server.close.1m`). It counts down and logs everyone out so characters are saved.
2. When the GameServer shows 0 players, click **Stop All**.

{% hint style="warning" %}
**Stop All** (and **Stop** on the GameServer row) does not log players out or save them. Players still online lose everything since their last save. Always run `server.close.*` (or `server.logout.all`) and wait for 0 players before you stop the GameServer.
{% endhint %}

## 4. Install

Click **Install update** and confirm. The Manager then:

1. checks the package signature and every file in it,
2. backs up the files it is about to change to `.manager\backups\`,
3. if the update has database changes, backs up the database to the SQL Server backup folder, then runs them,
4. updates the files (see below),
5. starts all servers and waits until each one reports the new version.

The log in the Updates window shows each step. When it ends with `update to X complete`, you are done. Let players in.

If a step fails, the Manager stops the servers, restores the database backup (only if database changes ran) and your files, and tells you what failed. You are back on the old version and can start the servers.

## What happens to my config edits

| File                                                                          | What the update does                                                                                                                                                                            |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ServerList.xml`, `AllowableIpList.txt`, `BadSyntax.txt`, `ServerManager.xml` | Never touched.                                                                                                                                                                                  |
| `.ini` files and `GameServerInfo - *.dat`                                     | Your lines stay exactly as they are: license key, IPs, ports, rates. New settings are added with their default value. Settings that no longer exist are removed only if you never changed them. |
| XML and text files in `Data\` you never edited                                | Replaced with the new version.                                                                                                                                                                  |
| XML and text files you edited, not changed in this update                     | Kept.                                                                                                                                                                                           |
| XML and text files you edited **and** the update also changed                 | Yours is kept and stays live. The new one is saved next to it as `<file>.new` and listed under **Config review**.                                                                               |
| Second GameServer folder (sub-world, e.g. `GameServer2\`)                     | Gets the new exe and the same ini additions as `GameServer\`. It must be an instance in the Manager.                                                                                            |

Your server starts fine with files waiting in **Config review**. New options you have not merged yet use their built-in defaults.

## 5. Config review

Open **Updates → Config review**. For each file the right side shows the difference: `-` lines are yours, `+` lines are the shipped file.

* **Keep mine**: removes the `.new` file. Use it after you merged by hand, or if you do not want the change.
* **Take shipped**: replaces your file with the shipped one. Yours is saved beside it as `.bak-<date>`.
* **Open both**: opens both files in Notepad so you can merge by hand. Then click **Keep mine**.

A file marked **MUST MERGE** changed its format. The old format would stop the server from starting, so **Start All** is blocked until you resolve it. This is rare and the release notes say so.

## Skipping versions

You can go from any 2.x version straight to the newest. Each package is complete.

A new major version (3.0.0) shows up only if your license covers it. If it does not, the Updates window tells you and links to the portal.

## Troubleshooting

<details>

<summary>"Not a managed install (.manager\manifest.json missing)"</summary>

The server folder was not installed from a 2.0.0+ package, or the `.manager` folder was deleted. The Manager needs it to know which version you have and which files you edited. Reinstall from the full package into a new folder and copy your configs over.

</details>

<details>

<summary>"database has no dbo.AxiomSchemaVersion table"</summary>

Your database is not a V2 baseline database. Nothing was changed. The Manager never creates this table itself. If you are keeping a 1.x database, follow [Upgrading a V1 database to V2 by hand](/docs/guides/applying-updates.md#upgrading-a-v1-database-to-v2-by-hand) first (it ends with `migrations\0001_axiom_schema_version.sql` and `migrations\0002_market.sql`), then install again.

</details>

<details>

<summary>DataServer says "[Schema] NOT STARTING"</summary>

The database is older than the DataServer exe needs, or it has no `dbo.AxiomSchemaVersion` table at all. The log line before it says which.

* **"Database schema is X, this DataServer needs Y"**: you copied exes by hand. Install the update from the Manager so the database changes run too.
* **"dbo.AxiomSchemaVersion not found"**: this is a 1.x database. Follow [Upgrading a V1 database to V2 by hand](/docs/guides/applying-updates.md#upgrading-a-v1-database-to-v2-by-hand).

</details>

<details>

<summary>"no LicenseKey found"</summary>

The Manager looks for `LicenseKey=` in the ini files next to the instances in its list. Check that the key is set and that the instance paths in the Manager point to your real server folders.

</details>

<details>

<summary>A server "never reported its version" and the update rolled back</summary>

The control channel is off or blocked. In that server's ini, `ControlPort` must not be `0`, and `ControlPort` / `ControlKey` must match the instance settings in the Manager. A second GameServer needs its own port.

</details>

<details>

<summary>Database backup failed</summary>

Nothing was changed. The Windows user running the Manager needs the right to back up the database, and the SQL Server backup folder needs free disk space. SQL Server Express cannot compress backups, so the file is about as large as the database.

</details>
