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
| 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 |
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