We kept losing save files. So we fixed it.

Pink Narwhal started as a janky Node script on a VPS because Pterodactyl backups kept failing silently. Then life happened. Then we came back.

The problems

Panel backups have real issues

Silent failures

Backups that fail without any error if a file changes mid-archive or the server is too large.

Storage you cannot control

S3 configuration locked behind panel admin access that most users do not have.

All-or-nothing restores

No way to grab a single config file. Restoring means overwriting your entire server directory.

Host-imposed limits

Backup slots set to 0, 2, or 3 by hosting providers. Hit the limit and new backups just fail.

No real scheduling

Per-server user-configured schedules with timezone bugs that create duplicate backups.

Broken rotation

Rotation that deletes the wrong backup, or removes the panel record but leaves orphaned files on S3.

Our story

From cron job to product

The problem

Backups that backed up nothing

We were running game servers on Pterodactyl. The built-in backup system looked fine on paper. In practice, backups would silently fail if a file changed mid-archive. Large servers would just spin forever with no error. Rotation would sometimes delete the newest backup instead of the oldest. And if our host felt like setting the backup limit to zero, the whole feature vanished. We were not the only ones. GitHub issues #2068, #2330, and #2800 have been open for years. This was not an edge case. It was the default experience.

The script

A Node script on a VPS

So we wrote something. A scrappy Node.js script running on a $5 VPS that connected through the Pterodactyl client API, pulled the files we actually cared about, and stored them somewhere else. It was not pretty. It had no UI, no scheduling beyond a cron job, and the error handling was best described as optimistic. But it worked. Our save files were safe, our configs were backed up, and we stopped losing sleep over whether the panel's backup button would do its job today.

The ambition

This has legs

We looked at the Pterodactyl community and saw thousands of people dealing with the same problems. S3 configuration that required panel admin access most users did not have. All-or-nothing restores that overwrote everything when you just wanted one config file back. No game-aware file selection, so every backup included gigabytes of engine binaries and cache files nobody would ever need to restore. We thought: this could be a real product. So we started building one. It was called CrateCache.

The pause

Life got in the way

CrateCache was close to launch. Then careers happened. Other side projects happened. The kind of real life that does not care about your product roadmap. We hit pause. The code sat in a repo gathering dust. The VPS script kept running (it was still backing up our own servers, because we are not animals), but the product ambitions went on hold.

The return

Pink Narwhal

Recently, we found some free time and the itch came back. The Pterodactyl backup problems had not gone away. If anything, they had gotten worse as the project shifted to maintenance mode and the community fragmented between Pterodactyl and Pelican. The need was still there. So we dusted off the codebase, threw away the CrateCache name (we were never attached to it), and rebuilt the whole thing properly. Game-aware profiles, scheduled runs, Cloudflare R2 storage, selective file restore, and a UI that does not make you want to close the tab. Pink Narwhal.

Key terms

If you landed here from a search engine and some of these words mean nothing to you, here is the short version.

Pterodactyl
An open-source game server management panel. It runs game servers inside Docker containers and provides a web UI for managing them. Most game hosting companies use it or something built on top of it.
Pelican
A community fork of Pterodactyl with continued active development. As Pterodactyl shifted to maintenance mode, Pelican picked up where it left off. Pink Narwhal works with both.
Wings
The server-side daemon that Pterodactyl and Pelican use to manage containers and handle file operations. Pink Narwhal works through the client API, not Wings directly, which is why you do not need admin access.
Client API key
Your personal API key from the Pterodactyl or Pelican panel. Every user who can see their servers already has one. It does not require admin privileges. This is the only credential Pink Narwhal needs.
SFTP
Secure File Transfer Protocol. A way to connect to a server and transfer files over an encrypted connection. Pink Narwhal can connect to any server via SFTP, which means you do not need Pterodactyl or Pelican to use the service.
Cloudflare R2
S3-compatible object storage by Cloudflare. Where Pink Narwhal stores your compressed backups. Your data is independent of your game hosting provider, so switching hosts does not mean losing backups.
Smart Profile
A built-in backup profile that auto-detects your game and knows which files matter. Supported for Rust, Hytale, and more. Skips engine binaries and Steam files you can reinstall.
Custom Profile
A user-configured backup profile for anything not auto-detected. You browse your server's file system, pick the folders that matter, name the profile, and backups run on the same schedule as everything else.
Selective Restore
The ability to restore individual files from a backup instead of the whole thing. Browse the backup like a file tree, pick what you need, and leave everything else untouched.

That is the whole story

We are not a VC-backed startup with a 50-person team. We are a small group of people who got tired of losing game server data and decided to fix it. Payments go through Stripe. Backups land on Cloudflare R2. The codebase is ours, the infrastructure is ours, and there are no investors asking us to pivot. Just backups that work.