Table of Contents

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:

  1. Sukurkite DNS A įrašą, nukreipiantį domeną į serverio IP:
    Tipas Pavadinimas Reikšmė
    Agitlabyour.server.ip
  2. Prisijunkite prie serverio per SSH ir redaguokite /etc/gitlab/gitlab.rb:
    nano /etc/gitlab/gitlab.rb
    Pakeiskite eilutę external_url , kad ji naudotų HTTPS su jūsų domenu:
    external_url 'https://gitlab.yourdomain.com'
  3. Pritaikykite konfigūraciją:
    gitlab-ctl reconfigure
    GitLab automatiškai gaus ir sukonfigūruos Let’s Encrypt sertifikatą. Sertifikatas atnaujinamas automatiškai.

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ė
SSH5 nesėkmingi prisijungimai1 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
Ubuntu24.04 LTS
GitLab CEOmnibus (Nginx, PostgreSQL, Redis, Puma, Sidekiq)
CI/CDIntegruoti GitLab CI/CD pipeline
PostfixVietinis MTA el. pašto pranešimams
Let’s EncryptIntegruotas SSL sertifikatų valdymas
Fail2BanSSH 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