Fivemap — Feature Overview
A FiveM resource that serves a live web map with real-time player positions. The map is delivered over HTTP from the server; players appear as markers. Configurable page title; no in-game UI or ACE permissions.
Video Preview
Overview
- Web map: Serves a static map app (HTML/JS/CSS) from the resource’s
html/folder. Open the map in any browser; no in-game menu. - Live players: The map fetches player positions from the server via a JSON API and displays them as markers.
- API: Two GET endpoints —
/players(list of online players with id, name, x, y, z) and/config(page title and other settings). Used by the map frontend; can be consumed by other tools. - Configuration: Page title (and any future options) are stored in the resource’s config and persist across restarts.
- No ACE / commands: The resource does not register any commands or permission nodes. Access to the HTTP server is controlled by your server or reverse-proxy (e.g. who can reach the port or path).
Accessing the Map
- The resource registers an HTTP handler for your FiveM server. Open the map in a browser at your server’s HTTP base URL (e.g.
http://your-server:30120/). The exact path depends on how your server or reverse proxy routes requests to this resource. - If the map app is served at a base path (e.g.
/fivemap/), use that path to load the map; the frontend will request/fivemap/playersand/fivemap/configfor live data and settings.
Serving over HTTPS with a custom domain
You can expose the map over HTTPS on a custom domain using a reverse tunnel. Cloudflare Zero Trust tunnels are one option; other reverse-tunnel solutions may work as well. The video above is an installation tutorial that shows Caddy + Cloudflare Zero Trust Tunnels: Caddy runs on a different port, rewrites the root path to /fivemap and reverse-proxies to the FiveM server; the tunnel then forwards your custom domain to Caddy.
If your chosen proxy or tunnel doesn’t support path rewrites, use Caddy in front of FiveM: run Caddy on a separate port (e.g. 30140), configure it to rewrite / to /fivemap/ and reverse-proxy to the FiveM HTTP port (e.g. 30120). Point the tunnel at Caddy’s port. The resource includes a Caddyfile and proxy.sh / proxy.bat to run Caddy with this setup.
API Endpoints
All responses are JSON. The resource only handles GET for these.
| Endpoint | Method | Description |
|---|---|---|
/players | GET | List of online players. Each entry: id (server ID), name, x, y, z (world coordinates). |
/config | GET | Config exposed to the map. At least: pageTitle (string). |
Static assets (HTML, JS, CSS, images) are served from the html/ directory; exact paths depend on how the request path is mapped (e.g. / or /fivemap/ → html/index.html).
Configuration
Config is stored in the resource folder as config.json. Defaults:
| Key | Default | Description |
|---|---|---|
pageTitle | "Paylune's Dynmap" | Title used in the map page and by the frontend. |
Deployment
The resource includes the map UI in its html/ folder. The server script serves those files and responds to /players and /config. Start the resource to serve the map; no extra deployment steps.
Summary
- Live web map: View the game world and player positions in a browser.
- Real-time positions: Map polls
/playersand updates markers for online players. - Config: Page title (and future options) stored in the resource’s config; persists across restarts.
- No permissions in-resource: Access controlled by server/reverse-proxy and network.