PawTrash needs to touch Wings' code because that's where the actual delete operation lives. That's why this addon ships as source code for you to compile, never as a pre-built binary - so you can audit exactly what changes before running it on your nodes.

Repeat these steps on every node where you want the trash to work.

1. Clone the official Wings source

Use the same version you're already running:

bash
git clone https://github.com/pterodactyl/wings.git
cd wings
git checkout <your-current-version>

2. Copy the new files in

  • wings/new-files/router/router_trash.go → router/router_trash.go
  • wings/new-files/server/filesystem/trash.go → server/filesystem/trash.go

3. Apply the fragments to existing files

Same as on the panel side, each fragment names the real file and the exact method it replaces:

  • wings/injected-code/router__router.go → adds the /trash route group in router/router.go, as a sibling to the existing files and backup groups.
  • wings/injected-code/server_filesystem__filesystem.go → replaces the bodies of Delete() and Rename() in server/filesystem/filesystem.go with a call into the new logic (two lines total).

4. Build

From the root of your Wings clone:

ini
GOOS=linux GOARCH=amd64 go build -o wings .

If you're building directly on the Linux node you'll run it on, plain go build -o wings . (no GOOS/GOARCH) is enough.

5. Replace the binary and restart the service

swift
systemctl stop wings
cp /usr/local/bin/wings /usr/local/bin/wings.bak
cp wings /usr/local/bin/wings
chmod +x /usr/local/bin/wings
systemctl start wings

Servers that were already running on that node aren't affected by restarting Wings - it reattaches to whatever containers were already active.

Previous: Panel Installation · Next: Node Configuration