{"meta":{"slug":"pterodactyl-venice-unleashed","name":"Pterodactyl Venice Unleashed","category":"venice_unleashed","source":"pelican","owner":"pelican-eggs","repo":"games-standalone","branch":"main","path":"venice_unleashed/egg-pterodactyl-venice-unleashed.json","rawUrl":"https://raw.githubusercontent.com/pelican-eggs/games-standalone/main/venice_unleashed/egg-pterodactyl-venice-unleashed.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":"2026-05-09T05:07:31+00:00","name":"Venice Unleashed","author":"red_thirten@yahoo.com","description":"Venice Unleashed (VU) is a community-oriented Battlefield 3 custom server & modding platform that gives you back control of your gaming experience. This Egg requires a valid VU `server.key` file, and requires Battlefield 3 client files (from a legal copy of the game) to be internally mounted to `/bf3`.","features":[],"docker_images":{"Wine Latest (Recommended)":"ghcr.io/parkervcp/yolks:wine_latest","Wine Staging":"ghcr.io/parkervcp/yolks:wine_staging"},"file_denylist":[],"startup":"[ -f /bf3/bf3.exe ] || { echo \"BF3 is not mounted properly! Exiting.\"; exit 1; }; [ -f ./vu/instance/server.key ] || { echo \"Missing 'vu/instance/server.key'! Exiting.\"; exit 1; }; tok=\"$LIC_PATH\"/token.txt; [ \"$(cat \"$tok\" 2>/dev/null)\" != \"$EA_TOKEN\" ] && { rm -f \"$LIC_PATH\"/*.dlf; echo \"$EA_TOKEN\" > \"$tok\"; }; if ! compgen -G \"$LIC_PATH\"/*.dlf >/dev/null; then wine ./vu/client/vu.com -gamepath /bf3 -activate -ea_token \"$EA_TOKEN\"; fi; wine ./vu/client/vu.com -gamepath /bf3 -serverInstancePath \"$(winepath -w ~/vu/instance)\" -server -dedicated -headless $( [ {{AUTO_UPDATE}} = 0 ] && echo -noUpdate ) -{{SERVER_FREQUENCY}} -maxPlayers {{MAX_PLAYERS}} -listen 0.0.0.0:{{SERVER_PORT}} -mHarmonyPort {{HARMONY_PORT}} ${RCON_PORT:+-RemoteAdminPort 0.0.0.0:{{RCON_PORT}}} ${JOIN_HOST:+-joinhost {{JOIN_HOST}}} $( [ {{UNLISTED}} = 1 ] && echo -unlisted ) $( [ {{HIGH_RES_TERRAIN}} = 1 ] && echo -highResTerrain ) $( [ {{DISABLE_TERRAIN_INTERP}} = 1 ] && echo -disableTerrainInterp ) $( [ {{SKIP_CHECKSUM}} = 1 ] && echo -skipChecksum )","config":{"files":"{\n    \"vu/instance/Admin/Startup.txt\": {\n        \"parser\": \"file\",\n        \"find\": {\n            \"admin.password\": \"admin.password \\\"{{server.build.env.RCON_PASSWORD}}\\\"\",\n            \"vars.serverName\": \"vars.serverName \\\"{{server.build.env.SERVER_NAME}}\\\"\",\n            \"vars.gamePassword\": \"vars.gamePassword \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\"\n        }\n    }\n}","startup":"{\n    \"_comment\": \"'now accepting connections' with required Wine control characters\",\n    \"done\": \"n\\u001b[?25h\\u001b[?25lo\\u001b[?25h\\u001b[?25lw\\u001b[?25h\\u001b[?25l\\u001b[K\\u001b[1C\\u001b[?25h\\u001b[?25la\\u001b[?25h\\u001b[?25lc\\u001b[?25h\\u001b[?25lc\\u001b[?25h\\u001b[?25le\\u001b[?25h\\u001b[?25lp\\u001b[?25h\\u001b[?25lt\\u001b[?25h\\u001b[?25li\\u001b[?25h\\u001b[?25ln\\u001b[?25h\\u001b[?25lg\\u001b[?25h\\u001b[?25l\\u001b[K\\u001b[1C\\u001b[?25h\\u001b[?25lc\\u001b[?25h\\u001b[?25lo\\u001b[?25h\\u001b[?25ln\\u001b[?25h\\u001b[?25ln\\u001b[?25h\\u001b[?25le\\u001b[?25h\\u001b[?25lc\\u001b[?25h\\u001b[?25lt\\u001b[?25h\\u001b[?25li\\u001b[?25h\\u001b[?25lo\\u001b[?25h\\u001b[?25ln\\u001b[?25h\\u001b[?25ls\"\n}","logs":"{}","stop":"^C"},"scripts":{"installation":{"script":"#!/bin/bash\n\n# File: Pterodactyl Venice Unleashed Egg - egg-pterodactyl-venice-unleashed.json\n# Authors: Red-Thirten\n# Date: 2026/05/08\n# License: MIT License\n\nexport HOME=/mnt/server\n\n[ ! -d $HOME ] && mkdir $HOME\ncd $HOME\n\n# Remove old installation if present (except for VU instance folder to keep configs)\n[ -d .cache ] && rm -rf .cache\n[ -d .config ] && rm -rf .config\n[ -d .local ] && rm -rf .local\n[ -d .wine ] && rm -rf .wine\n[ -f .wget-hsts ] && rm .wget-hsts\n[ -d vu/client ] && rm -rf vu/client\n\n# Make VU required directories\nmkdir -p vu/{client,instance}\nmkdir -p \"${LIC_PATH}\"\n\n# Validate VU download URL\nif ! curl --silent --head --fail ${DOWNLOAD_URL} > /dev/null; then\n    echo -e \"\\nThe VU Server Download URL is unreachable: ${DOWNLOAD_URL}\\n\"\n    exit 1\nfi\n\n# Download, unzip, and verify VU server files\ncd $HOME/vu/client\necho -e \"Downloading VU server files...\"\ncurl -L ${DOWNLOAD_URL} -o ${DOWNLOAD_URL##*/}\necho -e \"Unzipping VU server files...\"\nunzip ${DOWNLOAD_URL##*/}\nif [ ! -f vu.com ]; then\n    echo -e \"\\nFailed to download/install VU server files from: ${DOWNLOAD_URL}\\n\"\n    exit 1\nelse\n    rm ${DOWNLOAD_URL##*/}\nfi\n\n# Create default config files if they are missing\ncd $HOME/vu/instance\nmkdir -p Admin/Mods\ncd Admin\n[ ! -f BanList.txt ] && touch BanList.txt\n[ ! -f ModList.txt ] && touch ModList.txt\nif [[ ! -f MapList.txt ]]; then\n    cat > MapList.txt <<EOF\n# -------------------------------------------------------------------------------------------------------------------------\n# This file defines the map rotation of the server. This means that it tells the server which map to load first and\n# on which gamemode, how many rounds to run, and what's the next map to load once the game ends.\n# \n# Every map is specified in a new line in the following format:\n# MapID GamemodeID Rounds\n# \n# Full list of the map and gamemode IDs:\n# https://docs.veniceunleashed.net/hosting/maps\n# -------------------------------------------------------------------------------------------------------------------------\n\nMP_Subway ConquestLarge0 1\nMP_013 TeamDeathMatch0 1\nEOF\nfi\nif [[ ! -f Startup.txt ]]; then\n    cat > Startup.txt <<EOF\n# -------------------------------------------------------------------------------------------------------------------------\n# This file is used to configure to the server upon startup. This is done by using specific configuration variables\n# followed by a relevant value. Each variable is specified in a new line.\n# \n# Full list of configuration variables and commands:\n# https://docs.veniceunleashed.net/hosting/commands\n# https://github.com/dcodeIO/BattleCon/blob/master/eadocs/BF3/BF3%20PC%20Server%20Remote%20Administration%20Protocol.pdf\n# -------------------------------------------------------------------------------------------------------------------------\n\n# These variables are managed by the panel. Do not change or remove them!\nadmin.password \"${RCON_PASSWORD}\"\nvars.serverName \"${SERVER_NAME}\"\nvars.gamePassword \"${SERVER_PASSWORD}\"\n\n# Add additional variables below if desired\n\nEOF\nfi\n\n\necho -e \"\\nVU Successfully Installed!\"","container":"ghcr.io/parkervcp/installers:debian","entrypoint":"/bin/bash"}},"variables":[{"name":"[Host] Harmony Port","description":"Required port the VU server should listen for Monitored Harmony connections on.","env_variable":"HARMONY_PORT","default_value":"","user_viewable":true,"user_editable":false,"rules":"required|integer|between:1024,65536","field_type":"text"},{"name":"[Host] Join Host","description":"Specifies a hostname clients will use to connect to this server (advertised by the Zeus master server). Useful for hosts utilizing DDNS, and/or for LAN clients connecting via DNS redirection (only way to connect locally). Hostname should NOT include \"http[s]://\" prefix. Leave blank to use public IP instead.","env_variable":"JOIN_HOST","default_value":"","user_viewable":true,"user_editable":false,"rules":"nullable|string","field_type":"text"},{"name":"EA Auth Token","description":"Can be obtained on your local Windows computer that has: EA App / Origin installed & running, BF3 installed, VU installed and VU account linked to EA/Origin account. Run the \"Activate BF3\" shortcut in the Start Menu, or run `vu.exe -activate -lsx` in a Command Prompt (current working directory must be the VU client folder). Copy the displayed token and paste it here. NOTE: This token will occasionally expire, causing the server to crash on startup. If this happens, simply regenerate a new token and paste it here.","env_variable":"EA_TOKEN","default_value":"","user_viewable":true,"user_editable":true,"rules":"required|string","field_type":"text"},{"name":"Automatic Updates","description":"Enables VU automatic updater. (Use with caution; there have been reports of this sometimes crashing the server on startup if there is an update)","env_variable":"AUTO_UPDATE","default_value":"1","user_viewable":true,"user_editable":true,"rules":"boolean","field_type":"text"},{"name":"Server Name","description":"Name of the server, as it will appear in the master server list.","env_variable":"SERVER_NAME","default_value":"My incredible VU server","user_viewable":true,"user_editable":true,"rules":"required|string|max:63","field_type":"text"},{"name":"Server Password","description":"Password clients must enter to join the server. Leave blank to have no password.","env_variable":"SERVER_PASSWORD","default_value":"","user_viewable":true,"user_editable":true,"rules":"nullable|string|max:16","field_type":"text"},{"name":"Maximum Player Count","description":"Sets the maximum players that are allowed to set with vars.maxPlayers & vars.maxSpectators combined.","env_variable":"MAX_PLAYERS","default_value":"64","user_viewable":true,"user_editable":true,"rules":"required|integer|min:1","field_type":"text"},{"name":"Server Frequency","description":"'30' = 30Hz (Default) | 'high60' = 60Hz High frequency mode | 'high120' = 120Hz High frequency mode","env_variable":"SERVER_FREQUENCY","default_value":"30","user_viewable":true,"user_editable":true,"rules":"required|string|in:30,high60,high120","field_type":"text"},{"name":"[RCON] RCON Port","description":"Optional port used to connect to the server via RCON (recommended client is Procon). Leave blank to disable RCON.","env_variable":"RCON_PORT","default_value":"","user_viewable":true,"user_editable":false,"rules":"nullable|integer|between:1024,65536","field_type":"text"},{"name":"[RCON] RCON Password","description":"Password used to authenticate with RCON. (No username is required and can be left blank when connecting with a client).","env_variable":"RCON_PASSWORD","default_value":"","user_viewable":true,"user_editable":true,"rules":"nullable|string|max:16","field_type":"text"},{"name":"[Advanced] Disable Server Listing","description":"Makes the server not show up in the master server list. Unlisted servers can only be joined by the `connect` console command or via the `vu://join/server-id` URL scheme, which can also be added as a launch argument to vu.exe to auto-join as soon as the client loads.","env_variable":"UNLISTED","default_value":"0","user_viewable":true,"user_editable":true,"rules":"boolean","field_type":"text"},{"name":"[Advanced] Enable High Resolution Terrain","description":"Useful for extending maps beyond their original play area.","env_variable":"HIGH_RES_TERRAIN","default_value":"0","user_viewable":true,"user_editable":true,"rules":"boolean","field_type":"text"},{"name":"[Advanced] Disable Terrain Interpolation","description":"Disables interpolation between different terrain LODs.","env_variable":"DISABLE_TERRAIN_INTERP","default_value":"0","user_viewable":true,"user_editable":true,"rules":"boolean","field_type":"text"},{"name":"[Advanced] Skip Checksum","description":"Disables level checksum validation on client connection.","env_variable":"SKIP_CHECKSUM","default_value":"0","user_viewable":true,"user_editable":true,"rules":"boolean","field_type":"text"},{"name":"[System] VU Server Download URL","description":"Official URL provided by VU to download zipped server files. (Should not be changed unless you know what you are doing)","env_variable":"DOWNLOAD_URL","default_value":"https://veniceunleashed.net/files/vu.zip","user_viewable":false,"user_editable":false,"rules":"required|string","field_type":"text"},{"name":"[System] EA License Path","description":"Path to where EA `.dlf` license files are stored for use in VU server activation. Should not be changed.","env_variable":"LIC_PATH","default_value":"./.wine/drive_c/ProgramData/Electronic Arts/EA Services/License","user_viewable":false,"user_editable":false,"rules":"required|string|in:./.wine/drive_c/ProgramData/Electronic Arts/EA Services/License","field_type":"text"},{"name":"[System] WINEDEBUG","description":"Sets the Wine debug level. Rarely needs to be changed.","env_variable":"WINEDEBUG","default_value":"-all","user_viewable":false,"user_editable":false,"rules":"nullable|string","field_type":"text"},{"name":"[System] WINETRICKS_RUN","description":"Installs the required Visual C++ 2008 runtime via winetricks. Should not be changed.","env_variable":"WINETRICKS_RUN","default_value":"vcrun2008","user_viewable":false,"user_editable":false,"rules":"required|string|in:vcrun2008","field_type":"text"},{"name":"[System] WINEARCH","description":"Sets the Wine prefix to use WoW64 (Windows 32-bit on Windows 64-bit), which is required by VU. Should not be changed.","env_variable":"WINEARCH","default_value":"wow64","user_viewable":false,"user_editable":false,"rules":"required|string|in:wow64","field_type":"text"}]},"readme":"# Venice Unleashed\n\n### Authors / Contributors\n\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n    <tr>\n        <td align=\"center\">\n            <a href=\"https://github.com/redthirten\">\n                <img src=\"https://avatars.githubusercontent.com/u/4533989\" width=\"50px;\" alt=\"\"/><br /><sub><b>Red-Thirten</b></sub>\n            </a>\n            <br />\n            <a href=\"https://github.com/pelican-eggs/games-standalone/commits?author=redthirten\" title=\"Codes\">💻</a>\n            <a href=\"https://github.com/pelican-eggs/games-standalone/commits?author=redthirten\" title=\"Maintains\">🔨</a>\n        </td>\n    </tr>\n</table>\n<!-- markdownlint-enable -->\n<!-- prettier-ignore-end -->\n\n___\n\n### Game Description\n\nFrom the Venice Unleashed [Website](https://veniceunleashed.net/):\n> Venice Unleashed (VU) is a community-oriented Battlefield 3 custom server & modding platform that gives you back control of your gaming experience.\n\n___\n\n### Installation/System Requirements\n\n> [!IMPORTANT]\n> This Egg requires the use of the panel's ***Mounts*** system to mount a ***legal*** copy of Battlefield 3's client files into the server. This reduces the need to store a copy of BF3 per server instance. Instructions are provided under [Server Setup](#server-setup).\n\n|  | Bare Minimum | Recommended |\n|---------|---------|---------|\n| Processor | Dual Core x86 @ 3GHz or better | Favours higher single-core performance over multiple cores, because the executable is limited to a single thread. |\n| RAM | 1024 MiB | 4096 MiB (VU will never use more than 4 GiB because it is a 32-bit application) |\n| Storage | 1536 MiB per server & ~35 GiB on the host node to store one copy of BF3 client files for mounting. | More may be required if using a lot of mods. |\n| Network | 5 Mbit/s | 30 Mbit/s |\n| Host OS | Most stable Linux OS branches should work. | Using the latest kernel version for your installed OS can prevent some edge-case installation/boot issues. |\n| Game Ownership | Vanilla Battlefield 3 (only vanilla maps/gear will work) attached to an EA Account (Steam is OK if linked). | Battlefield 3 Premium (all DLC maps/gear will be available) attached to an EA Account (Steam is OK if linked). |\n| Accounts / Keys | A Venice Unleashed Account is required and must be linked to EA/Origin Account. Also, a server key must be generated & downloaded from Venice Unleashed [key management portal](https://veniceunleashed.net/keys). | --- |\n\n> [!WARNING]\n> If you wish to have the server publicly accessible ***and*** accessible via LAN ***and*** your server is on a different subnet from your LAN client (eg. a VLAN setup), you must own a domain name that points to your public IP address. See [Joining the Server](#joining-the-server) for more info.\n\n___\n\n### Server Ports\n\n| Port | Default | Protocol | Required |\n|---------|---------|---------|---------|\n| **Frostbite networking layer (Primary)** | 25200 | UDP | **Yes** |\n| Monitored Harmony, the VU networking layer | 7948 | UDP | **Yes** |\n| RCON | 47200 | TCP | No |\n\n___\n\n### Server Setup\n\nIt is recommended to do the following steps in order:\n\n#### 1. Obtain your EA Auth Token\n\nHosting a VU server requires authorization with your EA login token to authenticate that you own a legal copy of BF3. The easiest way to obtain this token is to:\n1. Install and launch the EA App on your personal computer.\n2. Install the VU client.\n3. Search for the \"Activate BF3\" shortcut in your Windows Start Menu (added by VU; see [the docs](https://docs.veniceunleashed.net/hosting/setup-win/#activating-the-game) for alternative method if shortcut is missing).\n4. Run this shortcut and copy the long token value it provides.\n5. Paste the token into the \"EA Auth Token\" Startup Variable of the server.\n\n> [!NOTE]\n> Tokens will occasionally expire after about a week, causing the server to crash on startup. If this happens, simply regenerate a new token using the steps above.\n\nUnfortunately, at this time, it is impossible to automatically detect if a token has expired or regenerate a new one server-side due to VU and EA limitations. Updating it manually will occasionally be required if the server is regularly restarted (eg. restart schedule).\n\n> [!CAUTION]\n> EA Auth Tokens can be used to freely access the corresponding EA account, bypassing passwords and 2FA! This token is required by the Egg and stored as a Startup Variable in **plain text**. Be mindful of associated security concerns regarding this.\n\n#### 2. Setup BF3 Mount\n\n> [!NOTE]\n> Screenshots are of the Pterodactyl panel, but the setup should be identical for Pelican.\n\n1. Ensure you have an allowed mount directory configured for (and accessible by) your Wings node(s). This can be done by adding something like the following to your Wings `config.yml` and rebooting Wings:\n```yml\nallowed_mounts:\n  - /var/lib/<pelican\\pterodactyl>/mounts\n```\n2. Download a legal copy of Battlefield 3 on your personal computer and open up its installation location (eg. via EA App: `C:\\Program Files\\EA Games\\Battlefield 3`).\n3. Copy all of the files/folders in this directory (the one containing `bf3.exe`) to any host nodes you would like to host this Egg on. It should be copied to a new folder named `bf3` in your allowed mount directory (eg. `/var/lib/<pelican\\pterodactyl>/mounts/bf3`).\n4. In the admin panel, navigate to the \"Mounts\" tab and create a new mount like the following:\n![Mount Config](images/mount_config.jpg)\n    Be sure to:\n    1. Set the \"Target\" to `/bf3`.\n    2. Add the Venice Unleashed Egg to the mount.\n    3. Add any associated Nodes that you copied the files to.\n\n    This mount can now be used for any new VU servers on those nodes.\n5. Create a new VU server instance on your panel and *do not* have it automatically start after installation. After installation completes, navigate to the \"Mounts\" tab in the admin view of the server. Add the mount to the server like this:\n![Server Mount Config](images/server_mount_config.jpg)\n\n#### 3. Obtain/Install your VU `server.key` file\n\n1. Obtain and download a key file from Venice Unleashed [key management portal](https://veniceunleashed.net/keys).\n2. Upload this file to your VU server instance at `~/vu/instance/server.key`\n\n#### 4. Authenticate server with EA\n\nStart the server. Assuming you followed steps 1-3 correctly, the server should automatically authenticate itself with EA on the first boot.\n\nAssuming it authenticated successfully, the server should start normally! 😃\n\n> [!NOTE]\n> It can take some time for the server to start while it works to connect to the Zeus backend for server listing.\n\n___\n\n### Joining the Server\n\nIn most cases, joining the server is as easy as finding it in the server list and clicking connect.\n\nHowever, **if you are connecting to a server on your LAN from a different subnet**, the server browser will try to connect you to your public IP address, which will not work. Unfortunately, VU does not support directly connecting to an IP address; you must connect through their backend via the server's GUID. The following is a workaround for this issue:\n\n1. Configure the \"[Host] Join Host\" Startup Variable. The domain you set will be what the VU server list provides as the connection address to clients. If you only want LAN connections, a fake domain like `myvuserver.com` is fine.\n2. Do ***one*** of the following:\n    1. Configure the hosts file on your client machine to redirect your configured domain to the local IP of the server.\n    2. Configure your router's DNS Resolver to redirect your configured domain to the local IP of the server.\n\n___\n\n### Console Commands\n\nUnfortunately, because the server executable must be wrapped in Wine, entering commands via the Panel do nothing.\n\nInstead, it is recommended to use [Procon](https://myrcon.net/files/file/29-procon-client/) and connect via the RCON port. Vanilla BF3 commands can be found [here](https://github.com/dcodeIO/BattleCon/blob/master/eadocs/BF3/BF3%20PC%20Server%20Remote%20Administration%20Protocol.pdf), and VU-specific commands can be found [here](https://docs.veniceunleashed.net/hosting/commands/).\n\n> [!WARNING]\n> Procon was written for vanilla BF3 servers and not VU. Therefore, some of it's features/settings will not work with VU (namely Punkbuster settings/actions because it is disabled, and reserved slots).\n\n___\n\n### Known Errors/Warnings\n\nThe following error you see in the console can safely be ignored (memory addresses may be different):\n\n```log\nwine: Unhandled page fault on read access to 000000B8 at address 1000653A (thread 01e8), starting debugger...\n```\n"}