> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-admin/getting-started/installation.md).

# Installation

Add both resources to your server and start them in the right order.

## What you need

| Resource                                       | Required | Used for                                                                                                                                            |
| ---------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `oxmysql`                                      | No       | Characters, vehicles and the economy pages. Without it those pages say so instead of guessing                                                       |
| ESX Legacy / QBCore / Qbox / Ox Core / ND Core | No       | Auto-detected. Without one it runs standalone — see [Running Standalone](/mango5m-docs/resources/mango-admin/getting-started/running-standalone.md) |
| `screenshot-basic`                             | No       | Player mugshots and honeypot evidence                                                                                                               |
| `mango_notify`                                 | No       | Preferred notification style                                                                                                                        |
| `ox_lib`                                       | No       | Notification fallback                                                                                                                               |
| `ox_inventory`                                 | No       | Reading and editing player inventories                                                                                                              |

Everything here is optional. Each part that cannot find what it needs says so once in the console and switches itself off — the panel never pretends to know something it cannot read.

## Steps

{% stepper %}
{% step %}

### Add both resources

Drop `mango_admin` into your resources directory.

Then the guard. It ships as `mango_watchdogs`, and **you should rename that folder** to something that does not announce what it is — somebody who has just stopped your admin menu should not be able to read down the resource list and see what to stop next.
{% endstep %}

{% step %}

### Tell the guard its name

In the watchdog's `config.lua`:

{% code title="mango\_watchdogs/config.lua" %}

```lua
Config.WatchdogResource = 'mango_core_91'   -- whatever you renamed the folder to
```

{% endcode %}

That is the only name to set. The guard protects `mango_admin` and nothing else, and the panel learns the guard's name at runtime — so the folder you renamed is the only thing to tell it about.
{% endstep %}

{% step %}

### Start them in this order

In `server.cfg`, with the guard **above** the panel it guards:

```cfg
ensure oxmysql
ensure mango_core_91
ensure mango_admin
```

{% endstep %}

{% step %}

### Give yourself access

Any **one** of these is enough:

```cfg
add_ace group.admin mango_admin.access allow
```

…or a framework group listed in `Config.AllowedGroups` (`superadmin`, `admin`, `god`, `owner` out of the box), or your identifier in `Config.Owners`:

{% code title="shared/config.lua" %}

```lua
Config.Owners = {
    'discord:000000000000000000',
}
```

{% endcode %}

An identifier in `Config.Owners` is the safety net: it holds every permission no matter what the Roles page says, so losing your Discord bot or breaking a role can never lock you out of your own panel.
{% endstep %}

{% step %}

### Restart and open it

Type `/admin`, or press **F10**.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Whenever you add or remove a file in either resource**, run `refresh` before `restart`. FXServer caches which files a resource has when it scans it, so a plain restart re-reads the files it already knew about and silently ignores new ones. The watchdog says so on startup if one of its modules did not load.
{% endhint %}

## Where things are kept

Everything the panel owns lives in `mango_admin/data/` as JSON, and no database tables are created unless you turn on [ban storage](/mango5m-docs/resources/mango-admin/configuration/bans-and-identifiers.md):

| File                       | Holds                                                                          |
| -------------------------- | ------------------------------------------------------------------------------ |
| `roles.json`               | Your roles, their permissions, limits and members                              |
| `bans.json` / `kicks.json` | The ban and kick record, and every identifier each ban was written against     |
| `reports.json`             | Report threads                                                                 |
| `warns.json`               | Warnings given, and why                                                        |
| `notes.json`               | Private staff notes on a person                                                |
| `mutes.json`               | Who is voice muted, and until when                                             |
| `known.json`               | Everyone who has ever connected, so an offline identifier resolves to a person |
| `telemetry.json`           | 72 hours of performance samples                                                |

Characters, vehicles and money are **read from your framework's own database** — the panel never keeps a second copy of them.
