> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nonefivem.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Media Upload

> Configure how screenshots and media files are uploaded

## Overview

The media upload system allows you to configure where screenshots and other media files are uploaded. This is configured in `no-base/configure/shared/sh_main.lua` under the `MediaUpload` section.

All uploads go directly from the client to the provider to avoid unnecessary server load. For cloud providers, we use signed URLs to keep your API keys secure on the server side.

## Configuration

```lua theme={null}
MediaUpload = {
    provider = "nocloud",
    --- If using Discord as the provider, set the webhook URL here.
    discord = {
        webhook_url = nil
    }
},
```

## Available Providers

### NoCloud (`nocloud`)

NoneM's cloud storage solution. This is the default **recommended** provider and works out of the box with NoneM scripts.

* Fast uploads with global CDN
* API keys stay secure on the server
* Free tier available

Get started at [dash.nonefivem.com](https://dash.nonefivem.com) or see the [Cloud Documentation](/cloud).

**Requirements:**

* Requires [no-cloud-cfx](https://github.com/nonefivem/no-cloud-cfx) resource. See [installation](/cloud/sdks/cfx/installation).

**Configuration:**

```lua theme={null}
MediaUpload = {
    provider = "nocloud"
}
```

### File Server (`no-file-server`)

Upload files directly to your own server. Requires self-hosting and maintenance.

**Requirements:**

* Requires [cfx-file-server](https://github.com/nonefivem/cfx-file-server) resource
* Server with sufficient storage and bandwidth
* Technical knowledge to set up and maintain

**Configuration:**

```lua theme={null}
MediaUpload = {
    provider = "no-file-server"
}
```

### Imgbox (`imgbox`)

Free image hosting service. No API key required, but it's extremely slow and comes with no SLA (Service Level Agreement).

**Configuration:**

```lua theme={null}
MediaUpload = {
    provider = "imgbox"
}
```

<Warning>
  Imgbox is extremely slow and unreliable. Only use this for testing purposes.
</Warning>

### FiveManage (`fivemanage`)

Cloud storage provider with reliable hosting. Both free and paid plans available.

**Requirements:**

* Requires `NO_FIVEMANAGE_MEDIA_API_KEY` or `FIVEMANAGE_MEDIA_API_KEY` convar

**Configuration:**

```lua theme={null}
MediaUpload = {
    provider = "fivemanage"
}
```

Add to your `server.cfg`:

```cfg theme={null}
set NO_FIVEMANAGE_MEDIA_API_KEY "your_api_key_here"
# or
set FIVEMANAGE_MEDIA_API_KEY "your_api_key_here"
```

### Discord Webhook (`discord`)

Upload images to a Discord channel via webhook. Image links are not permanent and may change or expire.

**Configuration:**

```lua theme={null}
MediaUpload = {
    provider = "discord",
    discord = {
        webhook_url = "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
    }
}
```

<Warning>
  Discord webhooks are exposed to the client. Use with caution and consider the security
  implications. The webhook URL will be visible in client-side code. Additionally, image
  links are not permanent and may change or expire, making this unsuitable for long-term
  storage.
</Warning>

## Security Considerations

* **Cloud Providers (nocloud, fivemanage)**: API keys are kept secure on the server side through signed URLs
* **Discord**: Webhook URLs are exposed to the client - anyone with access to the client files can see and potentially abuse the webhook
* **Direct Client Uploads**: All providers upload directly from the client to reduce server load

## Choosing a Provider

| Provider       | Speed     | Reliability | Security               | Cost               | Best For                      |
| -------------- | --------- | ----------- | ---------------------- | ------------------ | ----------------------------- |
| nocloud ⭐      | Fast      | High        | Excellent              | Free & Paid        | Production servers            |
| no-file-server | Fast      | Medium      | Excellent              | Free (self-hosted) | Full control, private servers |
| fivemanage     | Fast      | High        | Excellent              | Free & Paid        | Alternative cloud option      |
| imgbox         | Very Slow | Low         | Good                   | Free               | Not recommended               |
| discord        | Fast      | Low         | Poor (webhook exposed) | Free               | Testing only                  |

<Tip>
  **Our Recommendation:** Use **NoCloud** for the best experience with NoneM scripts. It's
  designed to work seamlessly with all our resources and requires minimal setup.
</Tip>

**Not recommended for production:** `imgbox`, `discord`
