Setting egg configuration files to empty array bricks wings #400

Closed
opened 2026-02-05 17:33:02 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @notAreYouScared on GitHub (Aug 12, 2025).

Originally assigned to: @notAreYouScared on GitHub.

Setting an egg's Configuration Files to [] results in that node that has that server bricking itself. and failing to start.

Create an egg with Configuration Files set to [],
Create a server with the newly created egg,
Restart wings with debug enabled

INFO: [Aug 11 23:29:41.221] fetching list of servers from API
DEBUG: [Aug 11 23:29:41.221] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET
......
DEBUG: [Aug 11 23:29:57.020] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET
DEBUG: [Aug 11 23:30:06.753] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET
FATAL: [Aug 11 23:30:07.298] failed to load server configurations error=manager: failed to retrieve server configurations: Error response from Panel: TypeError: App\Services\Eggs\EggConfigurationService::replacePlaceholders(): Argument #2 ($configs) must be of type object, array given, called in C:\Users\music\Documents\GitHub\pelican-panel\app\Services\Eggs\EggConfigurationService.php on line 27 (HTTP/500)

Stacktrace:
Error response from Panel: TypeError: App\Services\Eggs\EggConfigurationService::replacePlaceholders(): Argument #2 ($configs) must be of type object, array given, called in C:\Users\music\Documents\GitHub\pelican-panel\app\Services\Eggs\EggConfigurationService.php on line 27 (HTTP/500)
github.com/pelican-dev/wings/remote.(*client).request.func1
        github.com/pelican-dev/wings/remote/http.go:164
github.com/cenkalti/backoff/v4.RetryNotifyWithTimer.Operation.withEmptyData.func1
        github.com/cenkalti/backoff/v4@v4.3.0/retry.go:18
github.com/cenkalti/backoff/v4.doRetryNotify[...]
        github.com/cenkalti/backoff/v4@v4.3.0/retry.go:88
github.com/cenkalti/backoff/v4.RetryNotifyWithTimer
        github.com/cenkalti/backoff/v4@v4.3.0/retry.go:61
github.com/cenkalti/backoff/v4.RetryNotify
        github.com/cenkalti/backoff/v4@v4.3.0/retry.go:49
github.com/cenkalti/backoff/v4.Retry
        github.com/cenkalti/backoff/v4@v4.3.0/retry.go:38
github.com/pelican-dev/wings/remote.(*client).request
        github.com/pelican-dev/wings/remote/http.go:137
github.com/pelican-dev/wings/remote.(*client).Get
        github.com/pelican-dev/wings/remote/http.go:82
github.com/pelican-dev/wings/remote.(*client).getServersPaged
        github.com/pelican-dev/wings/remote/servers.go:201
github.com/pelican-dev/wings/remote.(*client).GetServers
        github.com/pelican-dev/wings/remote/servers.go:26
github.com/pelican-dev/wings/server.(*Manager).init
        github.com/pelican-dev/wings/server/manager.go:238
github.com/pelican-dev/wings/server.NewManager
        github.com/pelican-dev/wings/server/manager.go:36
github.com/pelican-dev/wings/cmd.rootCmdRun
        github.com/pelican-dev/wings/cmd/root.go:166
github.com/spf13/cobra.(*Command).execute
        github.com/spf13/cobra@v1.9.1/command.go:1019
github.com/spf13/cobra.(*Command).ExecuteC
        github.com/spf13/cobra@v1.9.1/command.go:1148
github.com/spf13/cobra.(*Command).Execute
        github.com/spf13/cobra@v1.9.1/command.go:1071
github.com/pelican-dev/wings/cmd.Execute
        github.com/pelican-dev/wings/cmd/root.go:72
main.main
        github.com/pelican-dev/wings/wings.go:17
runtime.main
        runtime/proc.go:272
runtime.goexit
        runtime/asm_amd64.s:1700

manager: failed to retrieve server configurations

Test Egg:

_comment: 'DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL'
meta:
  version: PLCN_v2
  update_url: null
exported_at: '2025-08-11T23:33:36+00:00'
name: 'TEST_FABRIC_EGG'
author: notCharles@pelican.dev
uuid: f12e34b1-2cde-4702-92c4-5fcf12e13aa3
description: 'Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.'
tags: {  }
features:
  - eula
  - java_version
  - pid_limit
docker_images:
  'Java 21': 'ghcr.io/pterodactyl/yolks:java_21'
file_denylist: {  }
startup: 'java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}'
config:
  files: {  }
  startup:
    done: ')! For help, type '
  logs: {  }
  stop: stop
scripts:
  installation:
    script: |-
      #!/bin/bash
      # Fabric MC Installation Script
      #
      # Server Files: /mnt/server
      apt update
      apt install -y curl jq unzip dos2unix wget
      mkdir -p /mnt/server
      cd /mnt/server

      # Enable snapshots
      if [ -z "$MC_VERSION" ] || [ "$MC_VERSION" == "latest" ]; then
        MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)
      elif [ "$MC_VERSION" == "snapshot" ]; then
        MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)
      fi

      if [ -z "$FABRIC_VERSION" ] || [ "$FABRIC_VERSION" == "latest" ]; then
        FABRIC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/installer | jq -r '.[0].version')
      fi

      if [ -z "$LOADER_VERSION" ] || [ "$LOADER_VERSION" == "latest" ]; then
        LOADER_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)
      elif [ "$LOADER_VERSION" == "snapshot" ]; then
        LOADER_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)
      fi

      wget -O fabric-installer.jar https://maven.fabricmc.net/net/fabricmc/fabric-installer/$FABRIC_VERSION/fabric-installer-$FABRIC_VERSION.jar
      java -jar fabric-installer.jar server -mcversion $MC_VERSION -loader $LOADER_VERSION -downloadMinecraft
      mv server.jar minecraft-server.jar
      mv fabric-server-launch.jar server.jar
      echo "serverJar=minecraft-server.jar" > fabric-server-launcher.properties
      echo -e "Install Complete"
    container: 'openjdk:11-jdk-slim'
    entrypoint: bash
variables:
  -
    name: 'Fabric Loader Version'
    description: 'The version of Fabric Loader to install.'
    env_variable: LOADER_VERSION
    default_value: latest
    user_viewable: true
    user_editable: true
    rules:
      - required
      - string
      - 'between:3,15'
    sort: 4
  -
    name: 'Fabric Version'
    description: 'The version of Fabric to install.'
    env_variable: FABRIC_VERSION
    default_value: latest
    user_viewable: true
    user_editable: true
    rules:
      - required
      - string
      - 'between:3,15'
    sort: 3
  -
    name: 'Minecraft Version'
    description: |-
      The version of Minecraft to install. Use "latest" to install the latest version, or use "snapshot"
      to install the latest snapshot.
    env_variable: MC_VERSION
    default_value: latest
    user_viewable: true
    user_editable: true
    rules:
      - required
      - string
      - 'between:3,15'
    sort: 2
  -
    name: 'Server Jar File'
    description: 'The name of the server jarfile to run the server with.'
    env_variable: SERVER_JARFILE
    default_value: server.jar
    user_viewable: true
    user_editable: true
    rules:
      - required
      - 'regex:/^([\w\d._-]+)(\.jar)$/'
    sort: 1
Originally created by @notAreYouScared on GitHub (Aug 12, 2025). Originally assigned to: @notAreYouScared on GitHub. Setting an egg's `Configuration Files` to `[]` results in that node that has that server bricking itself. and failing to start. Create an egg with `Configuration Files` set to `[]`, Create a server with the newly created egg, Restart wings with debug enabled ``` INFO: [Aug 11 23:29:41.221] fetching list of servers from API DEBUG: [Aug 11 23:29:41.221] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET ...... DEBUG: [Aug 11 23:29:57.020] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET DEBUG: [Aug 11 23:30:06.753] making request to external HTTP endpoint endpoint=http://pelican-panel.test:85/api/remote/servers?page=0&per_page=50 headers=map[Accept:[application/json] Authorization:[(redacted)] Content-Type:[application/json] User-Agent:[Pelican Wings/v1.0.0-beta16 (id:d1UqLLp9JdXXeYhi)]] method=GET FATAL: [Aug 11 23:30:07.298] failed to load server configurations error=manager: failed to retrieve server configurations: Error response from Panel: TypeError: App\Services\Eggs\EggConfigurationService::replacePlaceholders(): Argument #2 ($configs) must be of type object, array given, called in C:\Users\music\Documents\GitHub\pelican-panel\app\Services\Eggs\EggConfigurationService.php on line 27 (HTTP/500) Stacktrace: Error response from Panel: TypeError: App\Services\Eggs\EggConfigurationService::replacePlaceholders(): Argument #2 ($configs) must be of type object, array given, called in C:\Users\music\Documents\GitHub\pelican-panel\app\Services\Eggs\EggConfigurationService.php on line 27 (HTTP/500) github.com/pelican-dev/wings/remote.(*client).request.func1 github.com/pelican-dev/wings/remote/http.go:164 github.com/cenkalti/backoff/v4.RetryNotifyWithTimer.Operation.withEmptyData.func1 github.com/cenkalti/backoff/v4@v4.3.0/retry.go:18 github.com/cenkalti/backoff/v4.doRetryNotify[...] github.com/cenkalti/backoff/v4@v4.3.0/retry.go:88 github.com/cenkalti/backoff/v4.RetryNotifyWithTimer github.com/cenkalti/backoff/v4@v4.3.0/retry.go:61 github.com/cenkalti/backoff/v4.RetryNotify github.com/cenkalti/backoff/v4@v4.3.0/retry.go:49 github.com/cenkalti/backoff/v4.Retry github.com/cenkalti/backoff/v4@v4.3.0/retry.go:38 github.com/pelican-dev/wings/remote.(*client).request github.com/pelican-dev/wings/remote/http.go:137 github.com/pelican-dev/wings/remote.(*client).Get github.com/pelican-dev/wings/remote/http.go:82 github.com/pelican-dev/wings/remote.(*client).getServersPaged github.com/pelican-dev/wings/remote/servers.go:201 github.com/pelican-dev/wings/remote.(*client).GetServers github.com/pelican-dev/wings/remote/servers.go:26 github.com/pelican-dev/wings/server.(*Manager).init github.com/pelican-dev/wings/server/manager.go:238 github.com/pelican-dev/wings/server.NewManager github.com/pelican-dev/wings/server/manager.go:36 github.com/pelican-dev/wings/cmd.rootCmdRun github.com/pelican-dev/wings/cmd/root.go:166 github.com/spf13/cobra.(*Command).execute github.com/spf13/cobra@v1.9.1/command.go:1019 github.com/spf13/cobra.(*Command).ExecuteC github.com/spf13/cobra@v1.9.1/command.go:1148 github.com/spf13/cobra.(*Command).Execute github.com/spf13/cobra@v1.9.1/command.go:1071 github.com/pelican-dev/wings/cmd.Execute github.com/pelican-dev/wings/cmd/root.go:72 main.main github.com/pelican-dev/wings/wings.go:17 runtime.main runtime/proc.go:272 runtime.goexit runtime/asm_amd64.s:1700 manager: failed to retrieve server configurations ``` Test Egg: ```yaml _comment: 'DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL' meta: version: PLCN_v2 update_url: null exported_at: '2025-08-11T23:33:36+00:00' name: 'TEST_FABRIC_EGG' author: notCharles@pelican.dev uuid: f12e34b1-2cde-4702-92c4-5fcf12e13aa3 description: 'Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.' tags: { } features: - eula - java_version - pid_limit docker_images: 'Java 21': 'ghcr.io/pterodactyl/yolks:java_21' file_denylist: { } startup: 'java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}' config: files: { } startup: done: ')! For help, type ' logs: { } stop: stop scripts: installation: script: |- #!/bin/bash # Fabric MC Installation Script # # Server Files: /mnt/server apt update apt install -y curl jq unzip dos2unix wget mkdir -p /mnt/server cd /mnt/server # Enable snapshots if [ -z "$MC_VERSION" ] || [ "$MC_VERSION" == "latest" ]; then MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== true )|.version' | head -n1) elif [ "$MC_VERSION" == "snapshot" ]; then MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== false )|.version' | head -n1) fi if [ -z "$FABRIC_VERSION" ] || [ "$FABRIC_VERSION" == "latest" ]; then FABRIC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/installer | jq -r '.[0].version') fi if [ -z "$LOADER_VERSION" ] || [ "$LOADER_VERSION" == "latest" ]; then LOADER_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1) elif [ "$LOADER_VERSION" == "snapshot" ]; then LOADER_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1) fi wget -O fabric-installer.jar https://maven.fabricmc.net/net/fabricmc/fabric-installer/$FABRIC_VERSION/fabric-installer-$FABRIC_VERSION.jar java -jar fabric-installer.jar server -mcversion $MC_VERSION -loader $LOADER_VERSION -downloadMinecraft mv server.jar minecraft-server.jar mv fabric-server-launch.jar server.jar echo "serverJar=minecraft-server.jar" > fabric-server-launcher.properties echo -e "Install Complete" container: 'openjdk:11-jdk-slim' entrypoint: bash variables: - name: 'Fabric Loader Version' description: 'The version of Fabric Loader to install.' env_variable: LOADER_VERSION default_value: latest user_viewable: true user_editable: true rules: - required - string - 'between:3,15' sort: 4 - name: 'Fabric Version' description: 'The version of Fabric to install.' env_variable: FABRIC_VERSION default_value: latest user_viewable: true user_editable: true rules: - required - string - 'between:3,15' sort: 3 - name: 'Minecraft Version' description: |- The version of Minecraft to install. Use "latest" to install the latest version, or use "snapshot" to install the latest snapshot. env_variable: MC_VERSION default_value: latest user_viewable: true user_editable: true rules: - required - string - 'between:3,15' sort: 2 - name: 'Server Jar File' description: 'The name of the server jarfile to run the server with.' env_variable: SERVER_JARFILE default_value: server.jar user_viewable: true user_editable: true rules: - required - 'regex:/^([\w\d._-]+)(\.jar)$/' sort: 1 ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/panel-pelican-dev#400