Gå til innholdet

Opprett GitHub App

Denne veiledningen viser deg hvordan du gir serveren din sin egen GitHub-identitet. Det tar omtrent to minutter, bare servereieren gjør det, og det må bare gjøres én gang per server.

For å koble til din egen konto etterpå, se Sett opp GitHub-integrasjon.

To forskjellige oppgaver kommer ut av én registrering, og appen er det som gjør begge troverdige:

Oppgave Hva som svarer Hvorfor det betyr noe
En person logger inn Appens client id, via enhetsflyten Du får påloggingsinformasjon som er din, på serveren, på hver enhet — uten et token å lime inn eller rotere
Serveren opptrer Appens id + private key → installasjonstoken Webhooks, PR-polling og sakssynkronisering slutter å avhenge av at én persons token fortsatt er gyldig

Legg merke til hva som ikke står i den tabellen: en client secret. GitHubs enhetsflyt autentiserer med client id-en alene — både forespørselen om enhetskode og token-pollingen — så det finnes ingen secret å ta vare på for pålogging.

Uten din egen app fungerer det første fortsatt gjennom client id-en bygget leverer; det andre faller tilbake til servereierens påloggingsinformasjon, så bakgrunnsarbeid hviler på den som satte opp serveren først.

  • Du er servereier — providerApps.*-operasjonene er forbeholdt denne rollen, og kortet er usynlig for alle andre
  • En GitHub-konto, eller en organisasjon der du kan opprette apper
  • Ingenting offentlig tilgjengelig: påloggingen er en enhetsflyt, så serveren trenger ingen inngående port, tunnel, callback-URL eller domene
  1. Gå til github.com/settings/apps/new (for en organisasjon: Settings → Developer settings → GitHub Apps → New GitHub App)
  2. GitHub App name — hva som helst; Control Center (yourname) går fint. Navnet vises på commits og kommentarer serveren legger inn
  3. Homepage URL — hva som helst, f.eks. https://github.com/your-name
  4. Callback URL — la den stå tom. Enhetsflyten bruker ingen
  5. Hak av for Enable Device Flow. Dette er den ene innstillingen påloggingen ikke kan fungere uten
  6. Fjern haken for Webhook → Active med mindre du setter opp webhooks separat
  7. Under Repository permissions gir du minst:
    • Contents: Read and write
    • Metadata: Read-only (mandatory)
    • Pull requests: Read and write
    • Issues: Read and write, hvis du bruker GitHub Issues som saker, og for botens kommentarsøk i PR-samtaler (se Snakk med Control Center fra en GitHub-PR)
    • Checks: Read-only, for CI-status på PR-siden
  8. Under Where can this GitHub App be installed? velger du det som passer — «Only on this account» er riktig for en personlig server
  9. Klikk Create GitHub App

På appens side, rett etter at den er opprettet:

Verdi Hvor
App ID General-fanen, nær toppen
Client ID General-fanen, under «Client secrets»
Privat nøkkel Generate a private key — en .pem lastes ned

Filen med den private nøkkelen lastes ned én gang, og GitHub viser den aldri igjen. Ta vare på den til du har limt den inn; du kan alltids generere en ny.

En client secret er valgfri og gir deg nøyaktig én ting: hvis du lar «Expire user authorization tokens» stå PÅ, er det denne som fornyer noens token i det stille i stedet for å be dem logge inn på nytt hver åttende time. Selve påloggingen bruker den aldri.

Det enkleste oppsettet er å slå den utløpsinnstillingen AV, og da trengs ingen secret noe sted. Hvis du beholder den på, genererer du en secret og limer den inn i Innstillinger → Server → Enkel pålogging (kortet Leverandørapper) — det finnes ingen miljøvariabel for den, og ingen er bakt inn i et bygg, så den blir værende på serveren din.

En app som er registrert, men ikke installert, kan autentisere folk, men ikke lese noe.

  1. På appens side åpner du Install App
  2. Installer den på kontoen eller organisasjonen din
  3. Velg All repositories, eller velg de repoene denne serveren skal se
  1. Gå til Innstillinger → Server → Enkel pålogging og rull ned til kortet Leverandørapper
  2. I GitHub-blokken fyller du ut hvert felt:
    • App-id — det numeriske App ID
    • Privat nøkkel — lim inn hele .pem-en, inkludert BEGIN- og END-linjene
    • Client id — fra samme side
    • Client secret — bare hvis du genererte en (for tokenfornying)
  3. Klikk Test

Nøkkelen analyseres idet den lagres, så en avkuttet eller feilformatert innliming avvises der og da i stedet for å feile på en bakgrunnsforespørsel flere timer senere. Test går lenger og spør GitHub hvilke kontoer appen er installert på — «lagret» og «virker» er forskjellige påstander, og bare den andre betyr at noe faktisk vil kjøre.

Sjekkpunkt: GitHub-blokken viser «Serveren kan opptre som seg selv, og folk kan logge inn», og GitHub-raden under Innstillinger → Arbeidsområde → Profil og identitet → Kodehosting tilbyr nå Logg inn med GitHub.

For en headless- eller skriptbasert installasjon fyller serveren hvert felt fra miljøet første gang det ikke har en lagret verdi:

Terminalvindu
GITHUB_APP_ID=123456
GITHUB_APP_PRIVATE_KEY="$(cat control-center.private-key.pem)"
GITHUB_CLIENT_ID=Iv1.0123456789abcdef

Det finnes ingen kommandolinjeflagg for disse — en secret på en kommandolinje kan leses av alle prosesser på verten gjennom ps. Miljøet er det eneste stedet å konfigurere dem, og det overstyrer det bygget måtte levere. .env.template er den komplette listen.

For lokal utvikling har .env i repo-roten de samme verdiene, og skrivebordsappen sender dem videre til serveren den starter. Legg nøkkelen på én linje der: en .env-verdi er én linje, og \n inne i doble anførselstegn dekodes til et linjeskift.

GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEow…\n-----END RSA PRIVATE KEY-----"

GITHUB_APP_ID og GITHUB_APP_PRIVATE_KEY er de samme navnene som sandkassens tokenmegler allerede leser, så en vert som har konfigurert finkornede agenttokens, får påloggingsbanen gratis. Fylling fra miljøet skjer én gang per felt — etter det vinner den lagrede verdien, så redigeringer i Innstillinger blir ikke overskrevet ved neste omstart.

Linear har ingen enhetsflyt, så påloggingen der er en runde i nettleseren, og den trenger en callback-URL — kortet Leverandørapper viser deg nøyaktig hvilken du skal registrere.

  1. Opprett en OAuth-applikasjon på linear.app/settings/api/applications/new
  2. Sett Callback URL til URL-en kortet viser, ordrett
  3. Lim inn Client ID og Client secret i Linear-blokken
  4. Legg eventuelt til en API-nøkkel for arbeidsområdet — det er påloggingsinformasjonen serveren bruker til å synkronisere saker når ingen har bedt om det

Påloggingsdialogen sier at leverandøren ikke returnerte noen enhetskode

Seksjon med tittelen «Påloggingsdialogen sier at leverandøren ikke returnerte noen enhetskode»

Enable Device Flow er slått av for appen. Slå den på under General og prøv igjen.

Test sier at påloggingsinformasjonen virker, men at appen ikke er installert noe sted

Seksjon med tittelen «Test sier at påloggingsinformasjonen virker, men at appen ikke er installert noe sted»

Registrering og installasjon er to separate steg. Åpne Install App på appens side og installer den.

Test sier at den private nøkkelen ikke kunne leses

Seksjon med tittelen «Test sier at den private nøkkelen ikke kunne leses»

Lim inn hele .pem-filen, inkludert linjene -----BEGIN og -----END. En ed25519- eller EC-nøkkel kan ikke brukes — GitHub Apps signerer med RSA.

Appen er ikke installert på kontoen som eier dem, eller installasjonen omfatter andre repoer. Medlemmets egen pålogging gir bare tilgang til det appen har lov til å se.