no-file-server is a simple HTTP file upload server designed for FiveM. It allows your server-side scripts to upload, store, and serve files (images, audio, video, PDFs) locally without relying on external services.
Runs on FiveM's Node.js runtime via @citizenfx/http-wrapper.
- 📁 File Uploads - Upload images, audio, video, and documents
- 🔗 File Serving - Access uploaded files via HTTP
- 🛡️ Rate Limiting - Configurable per-IP request limits
- 🔒 Player IP Check - Restrict access to connected players only
- ⚙️ Configurable - Max file size, allowed mime types, directories
- 🚀 Lightweight - Minimal dependencies, fast builds
- Download the latest release from Releases
- Extract to your FiveM resources folder
- Add
ensure no-file-serverto yourserver.cfg - Configure
config.jsonas needed
Edit config.json to customize:
| Option | Description | Default |
|---|---|---|
security.trustedOrigins |
Allowed CORS origins | ["*"] |
security.isPlayerCheck |
Only allow connected player IPs | true |
rateLimit.enabled |
Enable rate limiting | true |
rateLimit.maxRequests |
Max requests per time window | 10 |
rateLimit.windowMs |
Time window in milliseconds | 60000 (1 minute) |
uploads.directory |
Upload folder path | ./uploads |
uploads.maxFileSizeMB |
Max file size in MB | 10 |
uploads.allowedMimeTypes |
Allowed file types | Images, audio, video |
Endpoints are available at:
https://<cfx-username>-<server-id>.users.cfx.re/no-file-server/uploads
| Method | Endpoint | Description |
|---|---|---|
POST |
/uploads |
Upload a file (multipart form, field: file) |
GET |
/uploads/:filename |
Get/serve a file |
POST https://<cfx-username>-<server-id>.users.cfx.re/no-file-server/uploads
GET https://<cfx-username>-<server-id>.users.cfx.re/no-file-server/uploads/screenshot_1234567890_abc123.jpg
MIT
