This page takes you from the downloaded package to a running Obsi Inventory with admin access.
It replaces an existing ox_inventory, or installs fresh.

## Requirements

| Requirement | Notes |
| --- | --- |
| FiveM server build **6116** or newer | With OneSync enabled |
| `oxmysql` | Database access |
| `ox_lib` | Must start before the inventory |
| A framework | ESX Legacy, Qbox, ox_core or ND Core |
| `illenium-appearance` or `fivem-appearance` | Optional: real clothing images and saving the appearance after a change |
| `ox_target` | Optional: target options for shops, stashes, dumpsters and trunks |

:::hint{type="warning" title="Keep the folder name"}
The folder **must** be called `ox_inventory`.
Other resources call `exports.ox_inventory`, and that name is how they find it.
:::

## Install

:::::steps
### Put the resource in place

Unpack the package into your resources folder and name the folder `ox_inventory`.
If you already run ox_inventory, move the old folder out of `resources` first, so only one copy starts.

::::hint{type="info" title="Coming from ox_inventory"}
Your existing items, stashes, shops and database tables keep working.
Copy your own entries from the old `data/items.lua`, `data/shops.lua` and `data/stashes.lua` into the new files, next to the Obsi items that ship with it.
::::

### Add it to server.cfg

Start the dependencies first, then the inventory:

```cfg title="server.cfg"
ensure oxmysql
ensure ox_lib
ensure es_extended            # your framework
ensure illenium-appearance    # optional
ensure ox_inventory

setr inventory:framework esx  # esx / qbx / ox / nd
setr inventory:slots 35       # 5 pockets + 20 base slots + 10 backpack slots
setr inventory:target false   # true = use ox_target for shops and stashes

add_ace group.admin command.invadmin allow
```

### Start the server

The `obsi_inv_*` tables are created on the first start.
There is no SQL file to import.

### Open the admin panel

Type `/invadmin` in chat.
Players with the `group.admin` ace get every page.
Give other staff a role on the [Permissions](/inventory/admin/permissions) page.
:::::

## Item images

Put PNG images named after the item into `web/images/`, for example `web/images/backpack_large.png`.
Until an image exists, the slot shows an icon instead.

The items that ship with Obsi Inventory are `clothing`, `clothing_hanger`, `backpack_small`, `backpack_large`, `armor_vest`, `plate_light`, `plate_medium`, `plate_heavy` and `tint_1` to `tint_7`.

## Check it works

- Press `F2` (the default key, set by the `inventory:keys` convar) and the three-column console opens.
- The pockets at the bottom left show slots **1** to **5**.
- Under the grid, **NEED A BACKPACK** shows the locked backpack slots.
- `/invadmin` opens the **ADMIN PANEL** tab.

:::hint{type="danger" title="The inventory does not open"}
Check the server console for `ox_inventory` errors.
The usual causes are `ox_lib` or `oxmysql` starting after the inventory, or `inventory:framework` naming a framework that is not running.
:::

## Building from source

Release packages already contain the built interface.
If you work from the source repository, build it yourself:

```bash
pnpm --dir web install
pnpm --dir web build
```
