CDN Sources and Push Tokens

Create a manual CDN source for your game files and issue the push token that the pingctl CLI uses to upload builds.

A CDN source is a versioned store of game server files on the PingCore CDN. Deployments pull their game files from a source, and the pingctl CLI uploads builds into one.

In the sidebar, open Games > CDN Sources. Viewing requires the cdn-sources.view permission.

Create a manual source

Sources are grouped into categories. Create a category first with Add Category, then open it and use Add Source. Creating either requires the cdn-sources.add permission.

On the add form:

  • Name: a display name for the source.

  • Folder Name: the directory path on the CDN. Lowercase letters, numbers, and hyphens only. It is suggested from the name automatically.

  • Download Method: set this to Manual. Manual is the method for files you upload yourself; the other methods (SteamCMD and Pipeline) fetch content automatically and do not accept pushes.

With the manual method, the CDN never downloads anything on its own. It only snapshots the files you upload, and a snapshot is taken only when you publish (a pingctl push, or the Force Update button on the source page).

Issue a push token

A push token is the single credential pingctl needs. It starts with cdnpush_ and resolves to exactly one manual source, so it both authenticates and targets the push. There is no source ID to configure, and a token leaked from a CI pipeline can push builds to that one source and do nothing else.

To issue one:

  1. Open the source page under Games > CDN Sources.

  2. In the Push Token (pingctl) card, click Issue Push Token. This requires the cdn-sources.edit permission.

  3. Copy the token immediately. Only a SHA-256 hash is stored server-side, so the token is shown exactly once and cannot be recovered later.

Store the token in your CI secret store, or run pingctl token set on a developer machine. Never commit it to a repository.

Regenerate or revoke

The Push Token (pingctl) card on the source page also manages the token's lifecycle:

  • Regenerate issues a new token and invalidates the current one immediately. Any pipeline still using the old token fails on its next push until it is updated.

  • Revoke disables pushing entirely until a new token is issued.

If a token is lost, regenerate it. There is no way to view an existing token again.

Versions and publishing

Each publish creates an immutable snapshot version and distributes it to all CDN nodes. Uploaded files sit in a staging area until a publish runs, so a slow or interrupted upload can never go live half-finished. The source page shows the current version and the CDN status.

Permissions

  • cdn-sources.view: view categories, sources, versions, and CDN status.

  • cdn-sources.add: create categories and sources.

  • cdn-sources.edit: edit sources and issue, regenerate, or revoke push tokens.

  • cdn-sources.delete: delete categories and sources.

  • cdn-sources.force-update: use Force Update on the source page to trigger a publish without a push.

Next steps