ServerAvatarDocs
Integrations

Git accounts

Connect GitHub, GitLab or Bitbucket with an access token so applications can clone your repositories and deploy on push.

An application that deploys from a repository needs to read that repository. Rather than asking for a token every time you create one, OSS Panel stores the token once as a Git account and lets you pick it by name afterwards.

Until an account is connected, Integrations → Git is an empty screen with a three-step summary of what is about to happen.

The Git page with no accounts connected, offering GitHub, GitLab and Bitbucket

A public repository needs no account at all — the create form accepts a public clone URL directly. Connect an account for private repositories, and for Deploy on push, which needs permission to add a webhook.

What the panel does with the token

It reads, and it manages one webhook. Specifically:

  • lists your repositories and their branches, so the create form can offer them;
  • clones the repository and fetches it again on every deploy;
  • adds the deploy webhook when you turn on Deploy on push, and removes it again when you turn it off.

It never pushes code, never creates or deletes repositories, and never touches anything outside the repository you choose.

Supported providers

ProviderHosted atExtra field
GitHubgithub.com—
GitLabgitlab.com, or your own serverSelf-hosted URL (optional)
Bitbucketbitbucket.orgWorkspace (required)

Those three are the whole list in v1.0.14. Other Git hosts — Gitea, Forgejo, Codeberg, a bare SSH remote — are not selectable here.

Gitea is a different feature

Gitea and Forgejo appear in OSS Panel as application types you can host on your own server. That is unrelated to this screen: you can run Gitea, but you cannot yet deploy from it through a connected account.

Connect an account

Open Integrations → Git and press Connect account. The dialog asks which provider first — the form that follows differs per provider, so this choice comes before anything else.

The Connect a Git account dialog listing GitHub, GitLab and Bitbucket

Create a token at the provider, with the scopes the dialog names. Each form spells out exactly which boxes to tick and links straight to the right page at the provider.

For GitHub, that is repo and admin:repo_hook. The second is what lets the panel add the deploy webhook for you.

The Connect GitHub form with Name and Access token fields

For GitLab, tick api and read_repository, and choose Legacy token. The form explains why api is needed — it is the only GitLab permission that can create a webhook — and offers the lower-access alternative: read_repository plus read_api, with you adding the webhook by hand.

Leave Self-hosted URL empty for gitlab.com. For your own GitLab, give the address you sign in at (https://gitlab.example.com), not the address of a project.

The Connect GitLab form, with the optional self-hosted URL field and the api scope explanation

For Bitbucket, tick read:repository:bitbucket, read:webhook:bitbucket, write:webhook:bitbucket and delete:webhook:bitbucket. Workspace is required and is the ID from your Bitbucket address — bitbucket.org/<workspace>/<repository> — not your display name.

The Connect Bitbucket form with the required Workspace field

Give the account a name and paste the token, then press Connect. The name is only for you; it is how the account appears in the application create form, so "Work GitHub" beats "token 2".

The panel checks the token with the provider before saving it. Nothing is stored if the provider says no.

The GitHub form showing the rejection message after a bad token was submitted

A rejection almost always means one of three things: the token was truncated on the way over, it is missing a scope from the step above, or it has expired.

Pick the account when you create an application. That is the whole point of the screen — see Deploy from Git.

Token health

Connected accounts are not assumed to keep working. The panel re-checks them and shows one of four states on the account card:

StateMeans
WorkingThe provider accepted the token just now.
Not workingThe provider rejected it — revoked, deleted or expired.
Could not checkThe provider did not answer. Nothing is wrong with your token.
Not checked yetConnected, not yet verified.

GitLab is the only provider that reports an expiry date, so a GitLab account can warn you before it breaks ("Expires in 7 days"). GitHub and Bitbucket tokens simply stop working on the day they lapse.

Check all accounts again on the card header re-runs every check at once.

Account actions

The … menu on an account:

  • Check connection — ask the provider about this token now.
  • Check repository access — go further and list repositories. This catches a token that is valid but can't see anything, which is the usual result of a GitHub fine-grained token with no repositories selected.
  • Edit — rename the account, or correct the workspace or self-hosted URL. The token is not touched.
  • Replace token — paste a new token. The new one is verified first; if it is rejected, the old one keeps working.
  • Disconnect — remove the account from this server.

Disconnecting does not revoke

Removing an account deletes the panel's copy of the token. The token itself stays valid at GitHub, GitLab or Bitbucket until you delete it there — the dialog links you to the right page. Applications that deployed from the account are not deleted, but they can no longer fetch code until you give them another one.

Limits and caveats

  • One token per account. There is no OAuth sign-in flow; everything is a personal access token (or a Bitbucket API token) you create yourself.
  • A self-hosted GitLab must be reachable over HTTPS and must not resolve to loopback or to a cloud metadata address. A private LAN address is accepted — a GitLab on the same network is a normal setup.
  • Bitbucket is addressed per workspace. An account connected to one workspace cannot see repositories in another; connect a second account for that.
  • Account names are unique on a server.
  • Everything on this screen needs Git · Manage. With view-only, you can see the accounts and their health but no buttons.

On this page