Deploy from GitHub
Wire a GitHub (or GitLab / Gitea) push to an automatic, health-gated deploy in a few minutes β generate a deploy key, add the webhook, push.
This guide connects a push to a repository to an automatic deploy of a site, with the same cutover and rollback as a manual deploy. It uses GitHub; GitLab and Gitea work the same way (the signature header differs, noted below).
1. Connect the repository
On the site's Deploys tab:
- Paste the repository SSH URL (
git@github.com:owner/repo.git) and the branch to track. - Click Generate deploy key. Copy the public key shown.
2. Add the deploy key on GitHub
In the repo: Settings β Deploy keys β Add deploy key. Paste the public key, give it a title, leave Allow write access unchecked (deploys only read). Save.
A deploy key, not a personal account key
This key is scoped to this one repository and this one site. It cannot read any other repos, and it is not a personal SSH key. The private half stays encrypted in the panel.
3. Add the webhook
Back on the Deploys tab, click Enable webhook and copy the generated secret. Then in the repo: Settings β Webhooks β Add webhook:
- Payload URL β
https://<panel-host>/api/v1/sites/<site-id>/webhook(shown on the tab). - Content type β
application/json. - Secret β paste the secret from the panel.
- Events β Just the push event.
GitHub signs each delivery with X-Hub-Signature-256. The panel verifies it against the stored secret;
an unsigned or wrong-signature delivery is rejected (401) and logged. For Gitea the header is
the same (X-Hub-Signature-256); for GitLab set a Secret token instead (sent as
X-Gitlab-Token).
4. Push
git commit --allow-empty -m "trigger deploy" && git pushThe push fires the webhook β the panel verifies it β a deploy runs (fetch β build β smoke β cutover). Watch it on the Deploys tab. A failed build never affects the running site; Roll back is one click.
Pushes during a deploy
Webhook deploys are serialized per site: two quick pushes, or a push while a deploy is running, leave the panel queuing exactly one follow-up β it never piles up, and the final state is always the latest commit.
Manual deploy
The Deploy now button on the tab runs the same pipeline without a push β handy for a first deploy or a re-run.
Test before relying on it
Deploy now handles a first deploy; a small push afterward confirms the webhook fires and the deploy runs end to end. Once one push-triggered deploy has succeeded, every later push works the same way.
Git deploys
Deploy a site from git β scoped deploy keys, the fetchβbuildβrelease pipeline, zero-downtime cutover, one-click rollback, and push-triggered redeploys.
Git accounts
Connect a provider account once (Forgejo, Codeberg, Gitea, GitLab, GitHub, or Bitbucket) to browse repos and branches and register deploy keys β without that token ever reaching a node.