Creează GitHub App
Acest ghid îți arată cum să îi dai serverului tău propria identitate GitHub. Durează aproximativ două minute, doar proprietarul serverului îl face și trebuie făcut o singură dată per server.
Pentru a-ți conecta propriul cont ulterior, vezi Configurează integrarea GitHub.
De ce serverul tău are nevoie de propria aplicație
Secțiune intitulată „De ce serverul tău are nevoie de propria aplicație”Dintr-o singură înregistrare ies două lucruri diferite, iar aplicația este cea care le face pe amândouă oneste:
| Sarcină | Ce răspunde la ea | De ce contează |
|---|---|---|
| O persoană se autentifică | Id-ul client al aplicației, prin fluxul de dispozitiv | Obții un credențial care este al tău, pe server, pe fiecare dispozitiv — fără niciun token de lipit sau de rotit |
| Serverul acționează | Id-ul aplicației + cheia privată → token de instalare | Webhook-urile, interogarea periodică a PR-urilor și sincronizarea tichetelor nu mai depind de faptul că tokenul unui singur om mai este valid |
Observă ce nu apare în acel tabel: un client secret. Fluxul de dispozitiv al GitHub se autentifică doar cu id-ul client — atât cererea de cod de dispozitiv, cât și interogarea tokenului — așa că nu există niciun secret de păstrat pentru autentificare.
Fără o aplicație proprie, primul funcționează totuși prin id-ul client livrat de construcție; al doilea revine la credențialul proprietarului serverului, așa că munca din fundal se sprijină pe cine a făcut prima configurare.
Cerințe prealabile
Secțiune intitulată „Cerințe prealabile”- Ești proprietarul serverului — operațiunile
providerApps.*sunt restricționate la el, iar cardul este invizibil pentru toți ceilalți - Un cont GitHub, sau o organizație în care poți crea aplicații
- Nimic accesibil public: autentificarea este un flux de dispozitiv, deci serverul nu are nevoie de niciun port de intrare, tunel, URL de callback sau domeniu
Înregistrează aplicația
Secțiune intitulată „Înregistrează aplicația”- Mergi la github.com/settings/apps/new (pentru o organizație: Settings → Developer settings → GitHub Apps → New GitHub App)
- GitHub App name — orice;
Control Center (yourname)este în regulă. Apare pe commit-urile și comentariile pe care le face serverul - Homepage URL — orice, de ex.
https://github.com/your-name - Callback URL — lasă-l gol. Fluxul de dispozitiv nu are niciunul
- Bifează Enable Device Flow. Aceasta este singura setare fără de care autentificarea nu poate funcționa
- Debifează Webhook → Active dacă nu conectezi webhook-urile separat
- La Repository permissions, acordă cel puțin:
- Contents: Read and write
- Metadata: Read-only (obligatoriu)
- Pull requests: Read and write
- Issues: Read and write, dacă folosești GitHub Issues pentru tichete, și pentru căutarea de comentarii din conversațiile PR ale botului (vezi Vorbește cu Control Center dintr-un PR GitHub)
- Checks: Read-only, pentru starea CI din pagina PR-ului
- La Where can this GitHub App be installed?, alege ce ți se potrivește — „Only on this account” este potrivit pentru un server personal
- Apasă Create GitHub App
Colectează cele trei valori
Secțiune intitulată „Colectează cele trei valori”Pe pagina aplicației, imediat după creare:
| Valoare | Unde |
|---|---|
| App ID | Fila General, aproape de sus |
| Client ID | Fila General, sub „Client secrets” |
| Private key | Generate a private key — se descarcă un .pem |
Fișierul cu cheia privată se descarcă o singură dată, iar GitHub nu îl mai afișează niciodată. Păstrează-l până îl lipești; poți oricând genera altul.
Un client secret este opțional și îți cumpără exact un lucru: dacă lași „Expire user authorization tokens” activat, el este cel care reînnoiește silențios tokenul cuiva, în loc să îi ceară să se autentifice din nou la fiecare opt ore. Autentificarea în sine nu îl folosește niciodată.
Configurarea mai simplă este să dezactivezi acea expirare, iar atunci nu mai este nevoie de niciun secret nicăieri. Dacă o păstrezi activată, generează un secret și lipește-l în Setări → Server → Autentificare unică (cardul Aplicații provider) — nu există nicio variabilă de mediu pentru el, și niciuna nu este inclusă în construcție, așa că rămâne pe serverul tău.
Instalează-o pe contul tău
Secțiune intitulată „Instalează-o pe contul tău”O aplicație înregistrată, dar neinstalată, poate autentifica oameni și nu poate citi nimic.
- Pe pagina aplicației, deschide Install App
- Instalează-o pe contul sau organizația ta
- Alege All repositories sau selectează depozitele pe care acest server ar trebui să le vadă
Lipește-o în Control Center
Secțiune intitulată „Lipește-o în Control Center”- Mergi la Setări → Server → Autentificare unică și derulează până la cardul Aplicații provider
- În blocul GitHub, setează fiecare câmp:
- App id — ID-ul numeric al aplicației
- Cheie privată — lipește tot fișierul
.pem, inclusiv liniileBEGINșiEND - Client id — de pe aceeași pagină
- Client secret — doar dacă ai generat unul (pentru reînnoirea tokenului)
- Apasă Test
Cheia este analizată în momentul în care este salvată, așa că o lipire trunchiată sau cu format greșit este respinsă pe loc, în loc să eșueze într-o cerere din fundal ore mai târziu. Test merge mai departe și îl întreabă pe GitHub pe ce conturi este instalată aplicația — „salvat” și „funcționează” sunt afirmații diferite, iar doar a doua înseamnă că ceva va rula.
Punct de verificare: blocul GitHub afișează „Serverul poate acționa ca el însuși, iar oamenii se pot autentifica”, iar rândul GitHub din Setări → Spațiu de lucru → Profil și identitate → Găzduire de cod oferă acum Autentifică-te cu GitHub.
Configurează-o în schimb cu variabile de mediu
Secțiune intitulată „Configurează-o în schimb cu variabile de mediu”Pentru o instalare headless sau scriptată, serverul inițializează fiecare câmp din mediul înconjurător prima dată când nu are o valoare stocată:
GITHUB_APP_ID=123456GITHUB_APP_PRIVATE_KEY="$(cat control-center.private-key.pem)"GITHUB_CLIENT_ID=Iv1.0123456789abcdefNu există opțiuni de linie de comandă pentru acestea — un secret de pe linia de
comandă este citibil de orice proces de pe gazdă prin ps. Mediul înconjurător
este singurul loc unde le poți configura, și are prioritate față de ce livrează
construcția. .env.template este lista completă.
Pentru dezvoltarea locală, .env din rădăcina depozitului conține aceleași
valori, iar aplicația desktop le transmite serverului pe care îl pornește. Pune
cheia pe o singură linie acolo: o valoare din .env este o singură linie,
iar \n dintre ghilimele duble se decodează într-o linie nouă.
GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEow…\n-----END RSA PRIVATE KEY-----"GITHUB_APP_ID și GITHUB_APP_PRIVATE_KEY sunt aceleași nume pe care le citește
deja brokerul de tokenuri al sandbox-ului, așa că o gazdă care a configurat
tokenuri de agent cu granulație fină primește gratuit calea de autentificare.
Inițializarea se face o singură dată per câmp — după aceea câștigă valoarea
stocată, așa că editarea din Setări nu este anulată la următoarea repornire.
Fă același lucru pentru Linear
Secțiune intitulată „Fă același lucru pentru Linear”Linear nu are flux de dispozitiv, așa că autentificarea sa este un tur dus-întors prin browser și chiar are nevoie de un URL de callback — cardul Aplicații provider îți arată exact ce URL să înregistrezi.
- Creează o aplicație OAuth la linear.app/settings/api/applications/new
- Setează Callback URL la URL-ul pe care îl arată cardul, întocmai
- Lipește Client ID și Client secret în blocul Linear
- Opțional, adaugă o cheie API de spațiu de lucru — acesta este credențialul pe care serverul îl folosește pentru a sincroniza tichete când nu a cerut niciun om
Depanare
Secțiune intitulată „Depanare”Dialogul de autentificare spune că furnizorul nu a returnat niciun cod de dispozitiv
Secțiune intitulată „Dialogul de autentificare spune că furnizorul nu a returnat niciun cod de dispozitiv”Enable Device Flow este dezactivat în aplicație. Activează-l la General și încearcă din nou.
Testul spune că datele de autentificare funcționează, dar aplicația nu este instalată nicăieri
Secțiune intitulată „Testul spune că datele de autentificare funcționează, dar aplicația nu este instalată nicăieri”Înregistrarea și instalarea sunt pași separați. Deschide Install App pe pagina aplicației și instalează-o.
Testul spune că cheia privată nu a putut fi citită
Secțiune intitulată „Testul spune că cheia privată nu a putut fi citită”Lipește tot fișierul .pem, inclusiv liniile -----BEGIN și -----END. O cheie
ed25519 sau EC nu poate fi folosită — GitHub Apps semnează cu RSA.
Un membru s-a autentificat, dar nu vede niciun depozit
Secțiune intitulată „Un membru s-a autentificat, dar nu vede niciun depozit”Aplicația nu este instalată pe contul care le deține, sau instalarea ei selectează alte depozite. Autentificarea proprie a membrului acordă doar ce are voie să vadă aplicația.