Skip to content

[Install Bug]: Foundry VTT #572

Description

@Mirasii

Panel Version

1.11.11

Wings Version

1.11.13

Service

FoundryVTT

Modified

Yes, I modified the egg (will provide details below)

Expected Behavior

When Reinstalling Foundry VTT, the module should update the files with overwrite behaviour and complete correctly.

Updated script (Note, in addition to adding the -o parameter to the unzip command, we updated to nodejs 24 - this is a hard requirement of Foundry v14):

{
    "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
    "meta": {
        "version": "PTDL_v2",
        "update_url": null
    },
    "exported_at": "2025-05-02T12:50:37+00:00",
    "name": "Foundry VTT",
    "author": "pterodactyl@demi.cloud",
    "description": "Foundry VTT is a standalone application built for experiencing multiplayer tabletop RPGs using a feature-rich and modern self-hosted application where your players connect directly through the browser.",
    "features": null,
    "docker_images": {
        "ghcr.io\/ptero-eggs\/yolks:nodejs_24": "ghcr.io\/ptero-eggs\/yolks:nodejs_24"
    },
    "file_denylist": [],
    "startup": "node .\/app\/main.js --dataPath=\"\/home\/container\/data\"",
    "config": {
        "files": "{\r\n    \"data\/Config\/options.json\": {\r\n        \"parser\": \"json\",\r\n        \"find\": {\r\n            \"port\": \"{{server.build.default.port}}\",\r\n            \"language\": \"{{server.build.env.FOUNDRY_LANGUAGE}}\",\r\n            \"updateChannel\": \"{{server.build.env.UPDATE_CHANNEL}}\"\r\n        }\r\n    }\r\n}",
        "startup": "{\r\n    \"done\": \"Server started and listening on port\"\r\n}",
        "logs": "{}",
        "stop": "^C"
    },
    "scripts": {
        "installation": {
            "script": "#!\/bin\/bash\r\n# FoundryVTT install script\r\n#\r\n# Server Files: \/mnt\/server\r\ndeclare -r DIR_ROOT=\"\/mnt\/server\"\r\ndeclare -r DIR_APP=\"${DIR_ROOT}\/app\"\r\ndeclare -r DIR_DATA=\"${DIR_ROOT}\/data\"\r\ndeclare -r ZIP_FILE_NAME=\"foundryvtt.zip\"\r\n\r\nmain() {\r\n  apt update\r\n  apt install -y unzip\r\n\r\n  printf \"\\nBuilding directory structure...\\n\"\r\n  mkdir -p \"${DIR_ROOT}\/data\/Config\"\r\n  mkdir -p \"${DIR_ROOT}\/app\"\r\n  # shellcheck disable=SC2164\r\n  cd \"${DIR_APP}\"\r\n  printf \"\\nDownloading FoundryVTT files...\\n\"\r\n  wget \"${TIMED_URL}\" -O \"${ZIP_FILE_NAME}\"\r\n  printf \"\\nunzipping FoundryVTT files...\\n\"\r\n  unzip -o \"${ZIP_FILE_NAME}\" -d \"${DIR_APP}\"\r\n  #rm \"${ZIP_FILE_NAME}\"\r\n\r\n  printf \"\\nGenerating default configuration...\\n\"\r\n  cat <<EOF >\"${DIR_DATA}\/Config\/options.json\"\r\n{\r\n  \"port\": 30000,\r\n  \"upnp\": false,\r\n  \"fullscreen\": false,\r\n  \"hostname\": null,\r\n  \"localHostname\": null,\r\n  \"routePrefix\": null,\r\n  \"sslCert\": null,\r\n  \"sslKey\": null,\r\n  \"awsConfig\": null,\r\n  \"dataPath\": \"\/home\/container\/data\",\r\n  \"passwordSalt\": null,\r\n  \"proxySSL\": false,\r\n  \"proxyPort\": null,\r\n  \"minifyStaticFiles\": true,\r\n  \"updateChannel\": \"release\",\r\n  \"language\": \"en.core\",\r\n  \"upnpLeaseDuration\": null,\r\n  \"world\": null\r\n} \r\nEOF\r\n  printf \"Installation Done.\\n\"\r\n}\r\nmain \"@\"",
            "container": "ghcr.io\/ptero-eggs\/installers:debian",
            "entrypoint": "bash"
        }
    },
    "variables": [
        {
            "name": "Timed URL",
            "description": "This is required to download the foundry files. Available in your https:\/\/foundryvtt.com\/ profile after you've purchased a license. This link generally lasts for about 5 minutes.",
            "env_variable": "TIMED_URL",
            "default_value": "",
            "user_viewable": true,
            "user_editable": true,
            "rules": "required|url",
            "field_type": "text"
        },
        {
            "name": "Language",
            "description": "As may be expected, this setting configures the localization of the program and can be leveraged by localization modules to ensure that the interface is translated to the language of your choosing wherever possible.",
            "env_variable": "FOUNDRY_LANGUAGE",
            "default_value": "en.core",
            "user_viewable": true,
            "user_editable": true,
            "rules": "string|max:20",
            "field_type": "text"
        },
        {
            "name": "Update Channel",
            "description": "Select what channel you want to use for automatic updates",
            "env_variable": "UPDATE_CHANNEL",
            "default_value": "release",
            "user_viewable": true,
            "user_editable": true,
            "rules": "string|max:256",
            "field_type": "text"
        }
    ]
}

Actual Behavior

Install script hangs, unable to overwrite existing files on the unzip command

Steps To Reproduce

Step 1. Install Foundry VTT
Step 2. Re-install Foundry VTT with a different version (in our case, we were updating from v13 to v14)

An alternative workaround for the script update is to delete the app folder in the container - however for v14 we also need to use node24, which is the latest LTS anyway.

Install logs

was unable to access logs - ls: cannot access '/var/log/pterodactyl/install/*.log': Permission denied - server owner doesn't have an ssh client installed

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions