GuidesAddons5 min read

Better Console

Installer

Better Console V-A.1.0.0 is installed in two layers. The panel package provides the interface, translations, and build assets. Patched Wings provides image-pull progress, permission-aware install output, and the optional SSH console. Install the panel package first, then choose one daemon method.

Back up a modified Wings source tree before applying scripts or patches. The automated tools stop when they cannot find a safe source anchor instead of guessing.

Run the installer from the Pterodactyl panel root—the directory containing yarn.lock:

bash
ainx install betterconsole.ainx

There are no legacy Better Console panel edits to remove for a normal package installation.

Optional translations

The bundle includes the canonical English catalog at translations/en/betterconsole.php. Better Console works without this file and falls back to its built-in English strings. No Better Console controller, endpoint, route, or middleware is required for translations.

To expose the optional betterconsole namespace through a compatible panel theme, copy the catalog and clear Laravel's caches:

bash
sudo install -D -m 0644 \
  translations/en/betterconsole.php \
  resources/lang/en/betterconsole.php

php artisan optimize:clear

For another locale, place the translated catalog at resources/lang/<locale>/betterconsole.php. Preserve the complete key tree and Laravel placeholders such as :name, :count, and :path.

The install, update, and remove scripts deliberately leave resources/lang untouched. Removing Better Console will not remove a catalog installed manually by a customer.

Panel and daemon responsibilities

Ainx and Blueprint install the panel-side addon files and build steps. They do not replace Wings. Without the daemon update, Better Console can load in the panel, but image-pull progress, protected install-output events, and the SSH console remain unavailable.

Install C-Wings

Choose a C-Wings installation method

Wings modifications

The prebuilt binary is the lowest-conflict option. For a source build, use the smart script. Use a patch when you need a reviewable Git change, and use manual recovery only when another addon conflicts with the patch.

Download the build that matches the host architecture, inspect it, install it, and restart Wings:

bash
sudo mkdir -p /etc/pterodactyl
ARCH="$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
curl -fL --retry 3 -o /tmp/wings \
  "https://github.com/Tomaxikz/daemon/releases/download/dev-latest/wings_linux_${ARCH}"
file /tmp/wings
sudo install -m 0755 /tmp/wings /usr/local/bin/wings
sudo systemctl restart wings

Release page: Tomaxikz/daemon dev-latest.

Build and verify

Format the touched files, run the package tests, build, and install the binary:

bash
gofmt -w config/config.go \
  environment/docker/betterconsole_pull_progress.go \
  environment/docker/betterconsole_pull_progress_test.go environment/docker/container.go \
  server/betterconsole_events.go server/betterconsole_pull_progress.go \
  server/betterconsole_pull_progress_test.go server/install.go server/listeners.go \
  router/websocket/betterconsole_events.go router/websocket/listeners.go \
  router/websocket/listeners_test.go router/websocket/websocket.go \
  sftp/betterconsole_shell.go sftp/server.go sftp/server_security_test.go
go test ./environment/docker ./server ./router/websocket ./sftp
go build
sudo systemctl stop wings
sudo install -m 0755 wings /usr/local/bin/wings
sudo systemctl start wings
sudo systemctl is-active wings

Open a server console and pull an image to confirm progress events appear. If the service fails to start, inspect the latest logs:

bash
sudo journalctl -u wings -n 100 --no-pager