Skip to main content

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

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 or see the Cloud Documentation. Requirements: Configuration:
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 resource
  • Server with sufficient storage and bandwidth
  • Technical knowledge to set up and maintain
Configuration:
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:
MediaUpload = {
    provider = "imgbox"
}
Imgbox is extremely slow and unreliable. Only use this for testing purposes.

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:
MediaUpload = {
    provider = "fivemanage"
}
Add to your server.cfg:
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:
MediaUpload = {
    provider = "discord",
    discord = {
        webhook_url = "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
    }
}
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.

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

ProviderSpeedReliabilitySecurityCostBest For
nocloud ⭐FastHighExcellentFree & PaidProduction servers
no-file-serverFastMediumExcellentFree (self-hosted)Full control, private servers
fivemanageFastHighExcellentFree & PaidAlternative cloud option
imgboxVery SlowLowGoodFreeNot recommended
discordFastLowPoor (webhook exposed)FreeTesting only
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.
Not recommended for production: imgbox, discord