GitLab CE - pradžios vadovas
GitLab CE yra savarankiškai talpinama DevOps platforma su Git saugyklomis, CI/CD pipeline, užduočių sekimu, wiki, konteinerių registru ir kt. – atvirojo kodo GitHub alternatyva, kurią visiškai valdote jūs. Šiame serveryje GitLab CE visiškai įdiegtas ir sukonfigūruotas su administratoriaus slaptažodžiu, kurį nurodėte užsakydami. GitLab paruoštas naudoti po trumpos pradinės sąrankos (2-4 minutės per pirmąjį paleidimą).
1 žingsnis – Patikrinkite, ar GitLab veikia
Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. GitLab pasiekiamas baigus pradinę sąranką (2-4 minutės po serverio sukūrimo). Atidarykite http://your.server.ip naršyklėje ir patikrinkite, ar veikia. Jei matote klaidą 502, palaukite kelias minutes ir atnaujinkite – GitLab dar paleidžiamas.
Prisijungimas prie GitLab:
- Naudotojo vardas:
root - Slaptažodis: GitLab Root Password, kurį įvedėte užsakydami
Iš pradžių GitLab veikia per HTTP. Norėdami įjungti HTTPS su nemokamu Let’s Encrypt sertifikatu, pirmiausia nustatykite domeną (žr. 3 žingsnį).
Jei serverį patalpinote už VyOS maršrutizatoriaus privačiame tinkle, arba sukonfigūruokite prievadų peradresavimą (22, 80 ir 443), kad GitLab būtų pasiekiamas iš interneto, arba prisijunkite per VPN ir pasiekite GitLab privačiu serverio IP.
2 žingsnis – Pirmojo projekto kūrimas
Spustelėkite New project skydelyje, pasirinkite Create blank project, įveskite pavadinimą ir spustelėkite Create project.
Klonuokite saugyklą per HTTPS arba SSH:
# HTTPS
git clone http://your.server.ip/root/my-project.git
# SSH (add your public key in Preferences > SSH Keys first)
git clone git@your.server.ip:root/my-project.git
3 žingsnis – Savo domeno ir HTTPS nustatymas
GitLab turi integruotą Let’s Encrypt palaikymą. Kaip įjungti HTTPS su savo domenu:
- Sukurkite DNS A įrašą, nukreipiantį domeną į serverio IP:
Tipas Pavadinimas Reikšmė A gitlab your.server.ip - Prisijunkite prie serverio per SSH ir redaguokite
/etc/gitlab/gitlab.rb:
Pakeiskite eilutęnano /etc/gitlab/gitlab.rbexternal_url, kad ji naudotų HTTPS su jūsų domenu:external_url 'https://gitlab.yourdomain.com' - Pritaikykite konfigūraciją:
GitLab automatiškai gaus ir sukonfigūruos Let’s Encrypt sertifikatą. Sertifikatas atnaujinamas automatiškai.gitlab-ctl reconfigure
Prieš paleisdami reconfigure įsitikinkite, kad domeno A įrašas išplito. DNS pakeitimai paprastai įsigalioja per kelias minutes, bet gali užtrukti iki 24 valandų. Patikrinkite dnschecker.org.
4 žingsnis – CI/CD pipeline
GitLab turi integruotą CI/CD. Norėdami sukurti pipeline, į saugyklos šaknį įdėkite failą .gitlab-ci.yml :
stages:
- build
- test
build-job:
stage: build
script:
- echo "Building the project..."
test-job:
stage: test
script:
- echo "Running tests..."
Pipeline paleidžiami automatiškai po kiekvieno push. Rezultatus matysite projekte skiltyje Build > Pipelines.
Pastaba: Pipeline vykdyti reikia užregistruoti GitLab Runner. Vadovaukitės GitLab Runner diegimo vadovu ir nustatykite runner šiame serveryje arba atskirame kompiuteryje.
Po įdiegimo
Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų
Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH nuo slaptažodžių spėjimo atakų.
| Taisyklė | Maks. bandymų | Blokavimo trukmė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 1 valanda |
Naudingos komandos:
# Check banned IPs
fail2ban-client status sshd
# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4
GitLab taip pat turi savo apsaugą nuo slaptažodžių spėjimo prisijungiant per žiniatinklį. Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.
Atnaujinimai
Svarbu: GitLab CE neatnaujinamas automatiškai (neįtrauktas į automatinius atnaujinimus). GitLab reikia atnaujinti per konkrečias tarpines versijas – praleidus versijas egzempliorius gali sugesti.
Visada patikrinkite oficialų atnaujinimo kelią . Kaip atnaujinti:
# Check current version
gitlab-rake gitlab:env:info | grep "GitLab"
# Update to a specific version (follow the upgrade path!)
apt update
apt install gitlab-ce=X.Y.Z-ce.0
# Apply changes
gitlab-ctl reconfigure
OS atnaujinimus galima atlikti per SSH:
apt update && apt upgrade -y
Serverio prisijungimo duomenys
GitLab administratoriaus prisijungimo duomenys saugomi /root/.gitlab_credentials. Juos taip pat matysite prisijungę per SSH (rodomi pasisveikinimo pranešime).
Paslaugų valdymas
GitLab Omnibus visas paslaugas (Nginx, PostgreSQL, Redis, Puma, Sidekiq) apjungia po komanda gitlab-ctl :
# Service management
gitlab-ctl status # check all services
gitlab-ctl restart # restart all services
gitlab-ctl start # start all services
gitlab-ctl stop # stop all services
# Configuration
gitlab-ctl reconfigure # apply changes from gitlab.rb
# Logs
gitlab-ctl tail # live log output (all services)
gitlab-ctl tail nginx # Nginx logs only
gitlab-ctl tail puma # application server logs
# Backups
gitlab-backup create # create data backup
gitlab-ctl backup-etc # backup configuration files
# Reset root password
gitlab-rails console -e production
# Then in console:
# user = User.find_by_username('root')
# user.password = 'newpassword'
# user.password_confirmation = 'newpassword'
# user.save!
Įdiegta programinė įranga
| Komponentas | Išsami informacija |
|---|---|
| Ubuntu | 24.04 LTS |
| GitLab CE | Omnibus (Nginx, PostgreSQL, Redis, Puma, Sidekiq) |
| CI/CD | Integruoti GitLab CI/CD pipeline |
| Postfix | Vietinis MTA el. pašto pranešimams |
| Let’s Encrypt | Integruotas SSL sertifikatų valdymas |
| Fail2Ban | SSH apsauga nuo slaptažodžių spėjimo atakų |
Trikčių šalinimas
| Problema | Sprendimas |
|---|---|
| Klaida 502 iškart po sukūrimo | GitLab dar paleidžiamas (pirmasis paleidimas trunka 2-4 minutes). Palaukite ir atnaujinkite puslapį. Eigą patikrinsite: gitlab-ctl status |
| Nepavyksta pasiekti GitLab žiniatinklio sąsajos | Paslaugų tikrinimas: gitlab-ctl status. Jei paslaugos neveikia, pabandykite gitlab-ctl restart |
| Let’s Encrypt sertifikato gauti nepavyko | Įsitikinkite, kad DNS A įrašas nukreiptas į serverio IP. Patikrinkite dnschecker.org. Peržiūrėkite klaidas: gitlab-ctl tail nginx |
| Git push/pull per SSH nepavyksta | Pridėkite viešąjį SSH raktą GitLab (Preferences > SSH Keys). Naudokite git@ klonavimo URL |
| Pamiršote administratoriaus slaptažodį | Prisijunkite per SSH ir patikrinkite /root/.gitlab_credentialsarba atkurkite per gitlab-rails console (žr. Paslaugų valdymas) |
| Didelis atminties naudojimas | Su pritaikytomis optimizacijomis GitLab naudoja ~2,5-3 GB RAM. Minimali rekomendacija: 4 GB RAM. Jei atminties trūksta, apsvarstykite didesnį serverio planą |
| Užblokavo Fail2Ban | Atblokuokite savo IP per VNC konsolę kliento skydelyje: fail2ban-client set sshd unbanip 1.2.3.4 |
| Reconfigure trunka per ilgai | Tai normalu – reconfigure gali trukti 1-3 minutes. Stebėkite su gitlab-ctl tail |
| Pamiršote root slaptažodį | Atkurkite jį per VNC konsolę kliento skydelyje |