{"meta":{"slug":"five-m","name":"Five M","category":"gta","source":"pterodactyl","owner":"pterodactyl","repo":"game-eggs","branch":"main","path":"gta/fivem/egg-five-m.json","rawUrl":"https://raw.githubusercontent.com/pterodactyl/game-eggs/main/gta/fivem/egg-five-m.json","indexedAt":1792246788483},"egg":{"_comment":"DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO","meta":{"version":"PTDL_v2","update_url":null},"exported_at":"2025-10-20T20:14:27+02:00","name":"FiveM","author":"parker@parkervcp.com","description":"A new FiveM /RedM egg for the latest builds due to recent changes in FiveM","features":null,"docker_images":{"ghcr.io/ptero-eggs/yolks:debian":"ghcr.io/ptero-eggs/yolks:debian"},"file_denylist":[],"startup":"$(pwd)/alpine/opt/cfx-server/ld-musl-x86_64.so.1 --library-path \"$(pwd)/alpine/usr/lib/v8/:$(pwd)/alpine/lib/:$(pwd)/alpine/usr/lib/\" -- $(pwd)/alpine/opt/cfx-server/FXServer +set citizen_dir $(pwd)/alpine/opt/cfx-server/citizen/ +set sv_licenseKey {{FIVEM_LICENSE}} +set steam_webApiKey {{STEAM_WEBAPIKEY}} +set sv_maxplayers {{MAX_PLAYERS}} $( [ \"$TXADMIN_ENABLE\" == \"1\" ] || printf %s '+exec server.cfg' )","config":{"files":"{\r\n    \"server.cfg\": {\r\n        \"parser\": \"file\",\r\n        \"find\": {\r\n            \"endpoint_add_tcp\": \"endpoint_add_tcp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n            \"endpoint_add_udp\": \"endpoint_add_udp \\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n            \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.SERVER_HOSTNAME}}\\\"\",\r\n            \"set sv_licenseKey\": \"set sv_licenseKey {{server.build.env.FIVEM_LICENSE}}\",\r\n            \"set steam_webApiKey\": \"set steam_webApiKey {{server.build.env.STEAM_WEBAPIKEY}}\",\r\n            \"sv_maxclients\": \"sv_maxclients {{server.build.env.MAX_PLAYERS}}\"\r\n        }\r\n    }\r\n}","startup":"{\r\n    \"done\": \"succeeded. Welcome!\"\r\n}","logs":"{}","stop":"quit"},"scripts":{"installation":{"script":"#!/bin/bash\r\n# FiveM Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p /mnt/server/resources\r\n\r\ncd /mnt/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https://github.com/citizenfx/cfx-server-data.git /tmp\r\ncp -Rf /tmp/resources/* resources/\r\n\r\nRELEASE_PAGE=$(curl -sSL https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/)\r\nCHANGELOGS_PAGE=$(curl -sSL https://changelogs-live.fivem.net/api/changelog/versions/linux/server)\r\n\r\nif [[ \"${FIVEM_VERSION}\" == \"recommended\" ]] || [[ -z ${FIVEM_VERSION} ]]; then\r\n  DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${FIVEM_VERSION}\" == \"latest\" ]]; then\r\n  DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n  VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*/*.tar.xz\"' | grep -Eo '\".*/*.tar.xz\"' | sed 's/\\\"//g'  | sed 's/\\.\\///1' | grep -i \"${FIVEM_VERSION}\" | grep -o =.* |  tr -d '=')\r\n  if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n    echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n    DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n  else\r\n    DOWNLOAD_LINK=$(echo https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/${VERSION_LINK})\r\n  fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n  if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n    echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n    DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n  else\r\n    echo -e \"link is invalid closing out\"\r\n    exit 2\r\n  fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*/}\r\n\r\necho \"Extracting fivem files\"\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n  tar xzvf ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n  unzip ${DOWNLOAD_LINK##*/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n  tar xvf ${DOWNLOAD_LINK##*/}\r\nelse\r\n  echo -e \"unknown filetype. Exiting\"\r\n  exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n  echo \"Skipping downloading default server config file as one already exists\"\r\nelse\r\n  echo \"Downloading default fivem config\"\r\n  curl https://raw.githubusercontent.com/ptero-eggs/game-eggs/main/gta/fivem/server.cfg >>server.cfg\r\nfi\r\n\r\n# Map GAME_NAME to GAME_TYPE before writing to server.cfg\r\nif [ \"${TXHOST_GAME_NAME}\" == \"fivem\" ]; then\r\n    GAME_TYPE=\"gta5\"\r\nelif [ \"${TXHOST_GAME_NAME}\" == \"redm\" ]; then\r\n    GAME_TYPE=\"rdr3\"\r\nelse\r\n    echo \"Invalid GAME_NAME specified: ${TXHOST_GAME_NAME}\"\r\n    exit 1\r\nfi    \r\n\r\nCFG_FILE=\"server.cfg\"\r\n\r\n# Only proceed if server.cfg exists\r\nif [ -f \"$CFG_FILE\" ]; then\r\n    # Remove old gamename block: comment and actual line\r\n    sed -i '/^# set gamename/,+1d' \"$CFG_FILE\"\r\n\r\n    # Append clean new block\r\n    {\r\n        echo \"# set gamename\"\r\n        echo \"set gamename \\\"${GAME_TYPE}\\\"\"\r\n    } >> \"$CFG_FILE\"\r\nelse\r\n    echo \"Warning: $CFG_FILE not found. Skipping gamename insertion.\"\r\nfi\r\n\r\nmkdir -p logs/\r\n\r\necho \"install complete\"","container":"ghcr.io/ptero-eggs/installers:debian","entrypoint":"bash"}},"variables":[{"name":"fivem license","description":"Required to start the service. Get your keys at https://portal.cfx.re/","env_variable":"FIVEM_LICENSE","default_value":"","user_viewable":true,"user_editable":true,"rules":"required|string|max:33","field_type":"text"},{"name":"Max Players","description":"Set the fivem max play count","env_variable":"MAX_PLAYERS","default_value":"48","user_viewable":true,"user_editable":true,"rules":"required|integer|between:1,48","field_type":"text"},{"name":"Server Hostname","description":"The name that shows up in the server browser","env_variable":"SERVER_HOSTNAME","default_value":"My new FXServer!","user_viewable":true,"user_editable":true,"rules":"required|string","field_type":"text"},{"name":"fivem version","description":"The fivem version that is to be installed. Invalid versions will default to recommended.\r\n\r\nAn example is `6013-d8ae399d15680da569022f57ab7f2474d307c821`\r\n\r\nYou can get the latest version from here - https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/","env_variable":"FIVEM_VERSION","default_value":"recommended","user_viewable":true,"user_editable":true,"rules":"required|string|max:50","field_type":"text"},{"name":"Download Link","description":"This is the link to download fivem from. This is only used in the install script.\r\n\r\nThe file you link to needs to be an fx.tar.zx file.\r\n\r\nExample:\r\nhttps://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/6013-d8ae399d15680da569022f57ab7f2474d307c821/fx.tar.xz","env_variable":"DOWNLOAD_URL","default_value":"","user_viewable":false,"user_editable":false,"rules":"string|nullable","field_type":"text"},{"name":"Steam Web Api Key","description":"Use your Steam WebApiKey or set to 'none'. Get your key at https://steamcommunity.com/dev/apikey/","env_variable":"STEAM_WEBAPIKEY","default_value":"none","user_viewable":true,"user_editable":true,"rules":"required|string","field_type":"text"},{"name":"txAdmin Port","description":"The port for the txAdmin panel","env_variable":"TXHOST_TXA_PORT","default_value":"40120","user_viewable":true,"user_editable":false,"rules":"required|string|max:20","field_type":"text"},{"name":"Enable txadmin","description":"Enables txadmin.\r\n\r\nset to 1 to enable. (default is 0 for false)","env_variable":"TXADMIN_ENABLE","default_value":"0","user_viewable":true,"user_editable":true,"rules":"required|boolean","field_type":"text"},{"name":"Game Name","description":"Restricts to only running either FiveM or RedM servers.\r\nThe setup page will only show recipes for the game specified below !\r\nOptions are : fivem or redm","env_variable":"TXHOST_GAME_NAME","default_value":"fivem","user_viewable":true,"user_editable":true,"rules":"required|in:fivem,redm","field_type":"text"},{"name":"Game type","description":"Value to be used : gta5 for FiveM and rdr3 for RedM\r\n! Dont fill in any value it reads the game name variable and set the correct value for it !","env_variable":"GAME_TYPE","default_value":"","user_viewable":false,"user_editable":false,"rules":"string|nullable","field_type":"text"},{"name":"TXHOST DATA PATH","description":"Location for TX Admin","env_variable":"TXHOST_DATA_PATH","default_value":"/home/container/txData","user_viewable":false,"user_editable":false,"rules":"required|string","field_type":"text"}]},"readme":"# FiveM\n\n## Supported architecture\n\nFiveM **ONLY** supports **amd64**. **arm64** is **NOT** supported (like Oracle free cloud)\n\n\n## Note on FiveM support from Pteroadactyl\n\nPterodactyl will not be providing support for FiveM. You are free to run a FiveM server but no support will be provided in the Pterodactyl Discord, check the discord annoucement below for details.\n\nWorth a read if you plan on running a FiveM server\n[Pterodactyl Discord Announcement](https://discord.com/channels/122900397965705216/124919575534895105/869733533495746560)\n\n## From the [FiveM](https://fivem.net/) Site\n\nFiveM is a modification for Grand Theft Auto V enabling you to play multiplayer on customized dedicated servers.\n\n## Notice\n\nCurrently the script can get versions from the builds site.\n\nThe `FIVEM_VERSION` variable.\n\n* Defaults to `latest` which is the latest recommended\n* Can be set to a specific version Ex. `2431-350dd7bd5c0176216c38625ad5b1108ead44674d`.\n\nThe `DOWNLOAD_URL` only needs to be used if they turn on ddos protection. The variable needs to point to a `fx.tar.xz` file as I am too lazy to update the entire script.\n\n## txAdmin\n\ntxAdmin is now supported and disabled by default. You set `TXADMIN_ENABLED` to `1` to enable it.\n\nThe last update to the egg changes the server to use txadmin to run. On first startup it will print a key to use to sign into the txadmin panel.\n> [!WARNING]\n> ### Your server will not go online until it's started from txadmin\n\nWith latest update see [txAdmin Github](https://github.com/citizenfx/txAdmin/blob/master/docs/env-config.md) some things changed.\nFor now this is added:\n- TXHOST_TXA_PORT (Value can be changed by Admin)\n- TXHOST_GAME_NAME (Value can be changed by Admin)\n- TXHOST_DATA_PATH (hardcoded to /home/container/txData)\n> [!NOTE]\n> This Egg can also be used for REDM (Same Framework/Artifact builds/TxAdmin).\n>  \n> When using this egg for REDM change value of Game name : to redm.\n> [!WARNING]\n> Reinstall is needed to write the correct values to files for correct functioning\n> \n> (if you change Game Name, fivem <-> redm after first install ! )\n\n## Server Ports\n\nPorts required to run the server in a table format.\n\n| Port    | default |\n|---------|---------|\n| Game    | 30110   |\n| Game+1  | 30120   |\n| txAdmin | 40120   |\n"}