Kako instalirati GitLab na namjenski poslužitelj
GitLab je platforma za Git repozitorije, pregled koda, praćenje zadataka i CI/CD koju možete pokrenuti na vlastitom poslužitelju. Samostalno hostirana instanca drži vaš izvorni kod pod vašom kontrolom, a njezin kapacitet ovisi samo o resursima poslužitelja i GitLab značajkama koje koristite.
Namjenski poslužitelj dobro odgovara GitLabu. Pohrana repozitorija jako opterećuje diskove, a baza podataka i pozadinske usluge trebaju stalnu količinu RAM-a. Na namjenskom hardveru ti se resursi ne dijele ni s kim, pa GitLab ostaje responzivan tijekom velikih push operacija i CI izvođenja.
Zašto pokrenuti vlastiti GitLab
GitLab.com je praktičan za početak, ali kako tim raste, samostalno hostirana instanca često postaje bolji izbor:
- Kod ostaje na vašem poslužitelju. Izvorni kod, zadaci i CI/CD tajne pohranjeni su na hardveru koji vi kontrolirate, na lokaciji podatkovnog centra koju odaberete. To je važno za projekte sa zahtjevima NDA-a ili lokacije podataka.
- Bez ograničenja paketa za korisnike, pohranu i CI/CD minute. Besplatna razina GitLab.com ih ograničava, dok na vlastitom poslužitelju ograničenja određuju samo njegovi resursi.
- Vlastiti CI/CD runneri. Buildovi se izvode na vašim poslužiteljima bez plaćanja računskih minuta i mogu doseći interne usluge zatvorene prema internetu.
- Potpuna kontrola nad ažuriranjima i postavkama. Vi odlučujete kada nadograditi, koje integracije uključiti i kako izraditi sigurnosne kopije podataka.
Ako već koristite GitLab.com, prvo instalirajte vlastitu instancu, a zatim u nju prenesite grupe i projekte.
Ove upute pokazuju kako instalirati GitLab iz službenog paketa na Ubuntuu ili Debianu, dobiti besplatni Let's Encrypt certifikat i pripremiti instancu za svoj tim.
Što trebate prije instalacije
Namjenski poslužitelj s najmanje 8 vCPU (CPU niti) i 16 GB RAM-a. Procesor s 4 jezgre i Hyper-Threadingom ili SMT-om već daje 8 niti. GitLab može krenuti s 8 GB RAM-a, ali troši gotovo sve i bit će spor pod opterećenjem. Koristite SSD ili NVMe diskove s najmanje 40 GB slobodnog prostora za sustav i GitLab te dovoljno prostora za sve repozitorije i sigurnosne kopije.
Na poslužitelju instaliran Ubuntu 26.04 LTS, Ubuntu 24.04 LTS ili Debian 13. Naredbe u ovim uputama iste su za sva tri sustava; gdje se Debian razlikuje, to je navedeno.
Domena ili poddomena za GitLab, na primjer gitlab.example.com.
DNS A zapis koji usmjerava tu domenu na javnu IPv4 adresu poslužitelja.
Ako dodate i AAAA zapis, IPv6 već mora raditi na poslužitelju. Let's Encrypt preferira IPv6 kada postoji AAAA zapis, a ako poslužitelj nije dostupan putem IPv6, certifikat se ne izdaje. Ako niste sigurni, dodajte samo A zapis.
Root pristup ili korisnik s sudo pravima. Naredbe u ovim uputama izvode se kao root; ako koristite korisnika sa sudo, dodajte sudo ispred njih. U naredbi koja dodaje GitLab repozitorij stavite sudo ispred bash: curl ... | sudo bash.
Portovi 22 (SSH), 80 (HTTP) i 443 (HTTPS) otvoreni prema internetu. Port 80 potreban je čak i ako planirate koristiti samo HTTPS, jer Let's Encrypt provjerava domenu putem HTTP-a.
U ovim uputama svugdje zamijenite gitlab.example.com vlastitom domenom, a 203.0.113.10 IP adresom svojeg poslužitelja.
Povezivanje s poslužiteljem
S računala se s poslužiteljem povežite putem SSH-a:
Provjerite verziju operacijskog sustava:
cat /etc/os-release
Primjer izlaza:
PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" ...
Izlaz mora prikazivati Ubuntu 26.04, Ubuntu 24.04 ili Debian 13. Zatim provjerite broj CPU jezgri, količinu RAM-a i slobodan prostor na disku:
nproc free -h df -h /
Provjerite da domena već pokazuje na poslužitelj. Pokrenite ovu naredbu na lokalnom računalu (radi na Windowsu, macOS-u i Linuxu):
nslookup gitlab.example.com
A zapis mora vratiti javnu IPv4 adresu poslužitelja. Ako koristite i AAAA zapis, provjerite je li poslužitelj dostupan putem IPv6. Ako se adrese ne podudaraju, ispravite DNS zapise i pričekajte da promjena stupi na snagu. Ne nastavljajte dok se domena ne razriješi ispravno, jer GitLab traži Let's Encrypt certifikat tijekom početne konfiguracije.
Ažuriranje poslužitelja i instalacija ovisnosti
Ažurirajte popise paketa i instalirane pakete:
apt update && apt upgrade -y
Postavite ime hosta poslužitelja na GitLab domenu. GitLab to ne zahtijeva, ali tako je naziv sustava usklađen s GitLab adresom u zapisnicima i odlaznoj e-pošti:
hostnamectl set-hostname gitlab.example.com
Instalirajte pakete koje GitLab treba:
apt install -y curl openssh-server ca-certificates perl tzdata locales
GitLab treba i UTF-8 lokalizaciju: bez nje se priložena PostgreSQL baza podataka možda neće inicijalizirati tijekom instalacije. Omogućite en_US.UTF-8 na popisu lokalizacija i generirajte je (na Ubuntuu 26.04 već je omogućena i prva naredba ništa ne mijenja):
sed -i 's/^# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen locale-gen
Konfiguracija vatrozida
Ove upute koriste UFW vatrozid. Uključen je u Ubuntu, ali je prema zadanim postavkama isključen; na Debianu ga prvo instalirajte:
apt install -y ufw
Ako je UFW na vašem poslužitelju već uključen, prvo provjerite njegova trenutna pravila naredbom ufw status. Dopustite SSH, HTTP i HTTPS, a tek zatim uključite vatrozid, kako se vaša SSH sesija ne bi prekinula:
ufw allow ssh ufw allow http ufw allow https ufw enable
Kada se zatraži potvrda, odgovorite y. Provjerite pravila:
ufw status
Primjer izlaza:
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Ako vaš SSH poslužitelj koristi port različit od 22, dopustite taj port prije ufw enable, na primjer naredbom ufw allow 2222/tcp. Inače ćete izgubiti vezu.
Dodavanje GitLab repozitorija
GitLab se distribuira u dva izdanja:
- GitLab Enterprise Edition (
gitlab-ee). Uključuje sve besplatne značajke i omogućuje kasnije aktiviranje plaćenih značajki bez ponovne instalacije. - GitLab Community Edition (
gitlab-ce). Potpuno otvorena (open source) verzija s besplatnim GitLab značajkama.
Ove upute koriste gitlab-ee. Ako više volite Community Edition, zamijenite gitlab-ee s gitlab-ce u svim naredbama.
Dodajte službeni GitLab repozitorij:
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash
Skripta dodaje repozitorij i njegov potpisni ključ te osvježava popis paketa.
Instalacija GitLaba
Instalirajte paket i adresu svoje instance proslijedite u EXTERNAL_URL. U adresi koristite https://: tada GitLab traži Let's Encrypt certifikat i automatski postavlja preusmjeravanje s HTTP-a na HTTPS.
EXTERNAL_URL='https://gitlab.example.com' apt install -y gitlab-ee
Tijekom instalacije GitLab raspakirava svoje komponente (web poslužitelj, PostgreSQL bazu podataka, Redis, Git pohranu i pozadinske usluge), zapisuje konfiguraciju u /etc/gitlab/gitlab.rb, traži certifikat i pokreće sve usluge. To traje od 5 do 10 minuta. Kada završi, izlaz završava porukom „Thank you for installing GitLab!".
Primjer izlaza:
Thank you for installing GitLab! GitLab should be available at https://gitlab.example.com
GitLab generira nasumičnu lozinku za račun root i sprema je u datoteku. Prikažite je:
cat /etc/gitlab/initial_root_password
Kopirajte lozinku. Datoteka se automatski briše 24 sata nakon instalacije, pa se prije toga prijavite i postavite vlastitu lozinku.
Root lozinku možete sami postaviti tijekom instalacije dodavanjem GITLAB_ROOT_PASSWORD='your-password' ispred EXTERNAL_URL u naredbi za instalaciju. Koristite jednostruke navodnike kako ljuska ne bi mijenjala znakove poput $ ili !. Ako je lozinka kraća od 8 znakova, GitLab je ne koristi i generira nasumičnu lozinku.
Otvaranje GitLaba i provjera HTTPS-a
U pregledniku otvorite https://gitlab.example.com. Stranica se mora otvoriti bez sigurnosnog upozorenja, a preglednik mora prikazati valjan certifikat koji je izdao Let's Encrypt.
Ako stranica prikazuje pogrešku 502, GitLab još pokreće svoje usluge. Pričekajte minutu ili dvije i ponovno učitajte stranicu.
Prijavite se s korisničkim imenom root i lozinkom iz initial_root_password.
Odmah promijenite lozinku. Odaberite svoj avatar, zatim Edit profile. U izborniku lijevo proširite Access, odaberite Password and authentication, zatim Change password. Unesite trenutnu i novu lozinku te odaberite Save password. GitLab odbija slabe lozinke, uključujući one koje sadrže riječ „gitlab" ili vaše korisničko ime.
Ako se stranica ne otvara putem HTTPS-a, certifikat najvjerojatnije nije izdan. U tom slučaju izlaz instalacije sadrži Let's Encrypt pogrešku. Provjerite razrješava li se domena na IP adresu poslužitelja, je li port 80 otvoren i postoji li AAAA zapis bez funkcionalnog IPv6. Nakon što ispravite uzrok, ponovno zatražite certifikat:
gitlab-ctl reconfigure
Let's Encrypt ograničava broj neuspjelih pokušaja po satu, pa prije ponovnog pokušaja ispravite uzrok.
Osnovna konfiguracija GitLaba
Isključivanje javne registracije. Ako je instanca samo za vaš tim, isključite izradu računa sa stranice za registraciju. Prema zadanim postavkama svatko tko otvori vašu GitLab stranicu može se registrirati, a novi račun tada čeka odobrenje administratora. Najbrži način je gumb Deactivate u banneru na GitLab početnoj stranici. Možete i odabrati Admin u gornjem desnom kutu, otići na Settings > General i proširiti New user account restrictions. Poništite potvrdni okvir Allow new user accounts i odaberite Save changes. Nove račune tada će izrađivati samo administratori.

Izrada korisničkih računa. Idite na Admin > Instance overview > Users i odaberite New user, ispunite ime, korisničko ime i e-adresu te odaberite Create user. Za svakodnevni rad koristite osobni račun s administratorskim pravima, a račun root samo kada je potrebno.
Izrada grupe. Grupe objedinjuju projekte i članove tima. U gornjoj traci odaberite Create new (ikona plusa), zatim New group > Create group, unesite naziv i odaberite Create group. Kolege dodajte u grupu u Manage > Members.



Dodavanje SSH ključa. Za rad s repozitorijima putem SSH-a svaki korisnik dodaje svoj javni ključ u Edit profile > Access > SSH keys: odaberite Add new key, zalijepite ključ i odaberite Add key.
GitLab šalje e-poštu za resetiranje lozinki, potvrdu računa i otključavanje nakon neuspjelih pokušaja prijave. Dok se odlazna e-pošta ne konfigurira (pogledajte „Što konfigurirati dalje"), te funkcije ne rade i administratori moraju ručno resetirati lozinke.
Provjera instalacije
Provjerite rade li sve GitLab usluge:
gitlab-ctl status
Primjer izlaza:
run: gitaly: (pid 2981) 512s; run: log: (pid 2975) 512s run: gitlab-workhorse: (pid 3412) 498s; run: log: (pid 3401) 498s run: nginx: (pid 3530) 495s; run: log: (pid 3522) 495s run: postgresql: (pid 3105) 507s; run: log: (pid 3098) 507s run: puma: (pid 3288) 501s; run: log: (pid 3280) 501s run: redis: (pid 2950) 514s; run: log: (pid 2944) 514s run: sidekiq: (pid 3350) 499s; run: log: (pid 3342) 499s ...
Svaki redak mora počinjati s run:.
Pokrenite ugrađenu provjeru konfiguracije i usluga:
gitlab-rake gitlab:check SANITIZE=true
Izradite testni repozitorij. U web sučelju odaberite Create new > New project/repository > Create blank project, unesite naziv test, odaberite svoju grupu i ostavite označenu opciju Initialize repository with a README. Odaberite Create project.


Provjerite pristup putem SSH-a sa svojeg računala:
ssh -T [email protected]
Primjer izlaza:
Welcome to GitLab, @username!
Ispravna postavka odgovara pozdravnom porukom koja sadrži vaše korisničko ime. Zatim klonirajte testni repozitorij:
git clone [email protected]:group/test.git
Zamijenite group putanjom svoje grupe. Ako se repozitorij klonira i sadrži README.md, GitLab je instaliran i radi.
Što konfigurirati dalje
Sigurnosne kopije. Naredba gitlab-backup create izrađuje sigurnosnu kopiju aplikacije s GitLab bazom podataka, repozitorijima i drugim podacima aplikacije u /var/opt/gitlab/backups. Konfiguracijske datoteke /etc/gitlab/gitlab.rb i /etc/gitlab/gitlab-secrets.json nisu uključene i moraju se kopirati zasebno, na primjer naredbom gitlab-ctl backup-etc. Bez gitlab-secrets.json obnovljena instanca ne može dešifrirati 2FA postavke i CI/CD varijable. Redovito izrađujte sigurnosne kopije aplikacije i konfiguracije te ih kopirajte u pohranu izvan GitLab poslužitelja, na primjer u INTROSERV Cloud Storage: pogledajte Povezivanje INTROSERV Cloud Storagea s poslužiteljem.
Odlazna e-pošta. Konfigurirajte SMTP poslužitelj u /etc/gitlab/gitlab.rb kako bi GitLab mogao slati obavijesti, resetiranja lozinki i potvrde računa. Pogledajte SMTP postavke u GitLab dokumentaciji.
GitLab Runner. Runner izvodi CI/CD pipeline. Buildovi troše mnogo CPU-a i RAM-a, pa je bolje instalirati Runner na zaseban VPS ili namjenski poslužitelj nego na sam GitLab poslužitelj.
Ažuriranja. GitLab svaki mjesec objavljuje novu verziju, a sigurnosne ispravke češće. Prije nadogradnje preko više verzija provjerite službeni put nadogradnje: GitLab mora proći kroz određene međuverzije. Izradite sigurnosnu kopiju, a zatim ažurirajte naredbom apt update && apt install -y gitlab-ee.
Nadzor. GitLab uključuje Prometheus i izvozi vlastite metrike. Zdravlje instance može se provjeriti u Admin > Monitoring > Health check, a tamo navedeni endpointi mogu se povezati s vašim vanjskim sustavom za nadzor.

Za odabir poslužitelja za svoju GitLab instancu pogledajte stranicu Namjenski poslužitelji.