EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Jak zainstalować GitLab na serwerze dedykowanym

GitLab to platforma do repozytoriów Git, przeglądu kodu, śledzenia zgłoszeń i CI/CD, którą możesz uruchomić na własnym serwerze. Instancja self-hosted pozostawia Twój kod źródłowy pod Twoją kontrolą, a jej wydajność zależy wyłącznie od zasobów serwera i używanych funkcji GitLab.

Serwer dedykowany dobrze nadaje się do GitLab. Przechowywanie repozytoriów mocno obciąża dyski, a baza danych i usługi działające w tle potrzebują stałej ilości pamięci RAM. Na dedykowanym sprzęcie te zasoby nie są z nikim dzielone, dzięki czemu GitLab pozostaje responsywny podczas dużych operacji push i uruchomień CI.

Dlaczego warto uruchomić własny GitLab

GitLab.com jest wygodny na początek, ale gdy zespół rośnie, instancja self-hosted często staje się lepszym wyborem:

  • Kod pozostaje na Twoim serwerze. Kod źródłowy, zgłoszenia i sekrety CI/CD są przechowywane na sprzęcie, który kontrolujesz, w wybranej przez Ciebie lokalizacji centrum danych. Ma to znaczenie dla projektów z wymaganiami NDA lub dotyczącymi lokalizacji danych.
  • Brak limitów planu dla użytkowników, miejsca i minut CI/CD. Darmowy poziom GitLab.com je ogranicza, a na własnym serwerze limity wyznaczają tylko jego zasoby.
  • Własne runnery CI/CD. Buildy działają na Twoich serwerach bez opłat za minuty obliczeń i mają dostęp do usług wewnętrznych zamkniętych przed internetem.
  • Pełna kontrola nad aktualizacjami i ustawieniami. Sam decydujesz, kiedy aktualizować, które integracje włączyć i jak wykonywać kopie zapasowe.

Jeśli już korzystasz z GitLab.com, najpierw zainstaluj własną instancję, a potem przenieś do niej grupy i projekty.

Ta instrukcja pokazuje, jak zainstalować GitLab z oficjalnego pakietu w Ubuntu lub Debianie, uzyskać darmowy certyfikat Let's Encrypt i przygotować instancję dla zespołu.

Czego potrzebujesz przed instalacją

Serwer dedykowany z co najmniej 8 vCPU (wątkami procesora) i 16 GB RAM. Procesor 4-rdzeniowy z Hyper-Threading lub SMT daje już 8 wątków. GitLab może wystartować z 8 GB RAM, ale wykorzystuje prawie całą pamięć i pod obciążeniem będzie wolny. Użyj dysków SSD lub NVMe z co najmniej 40 GB wolnego miejsca na system i GitLab oraz z wystarczającą ilością miejsca na wszystkie repozytoria i kopie zapasowe.

Na serwerze zainstalowany Ubuntu 26.04 LTS, Ubuntu 24.04 LTS lub Debian 13. Polecenia w tej instrukcji są takie same dla wszystkich trzech systemów; różnice dla Debiana są zaznaczone.

Domena lub subdomena dla GitLab, na przykład gitlab.example.com.

Rekord DNS A wskazujący tę domenę na publiczny adres IPv4 serwera.

Warning

Jeśli dodasz też rekord AAAA, IPv6 musi już działać na serwerze. Let's Encrypt preferuje IPv6, gdy istnieje rekord AAAA, a jeśli serwer nie jest dostępny przez IPv6, certyfikat nie zostanie wystawiony. Jeśli nie masz pewności, dodaj tylko rekord A.

Dostęp root lub użytkownik z uprawnieniami sudo. Polecenia w tej instrukcji są wykonywane jako root; jeśli używasz użytkownika z sudo, dodaj przed nimi sudo. W poleceniu dodającym repozytorium GitLab umieść sudo przed bash: curl ... | sudo bash.

Porty 22 (SSH), 80 (HTTP) i 443 (HTTPS) otwarte dla internetu. Port 80 jest wymagany nawet wtedy, gdy planujesz używać tylko HTTPS, ponieważ Let's Encrypt sprawdza domenę przez HTTP.

Info

W całej instrukcji zamień gitlab.example.com na własną domenę, a 203.0.113.10 na adres IP swojego serwera.

Połączenie z serwerem

Połącz się z serwerem przez SSH ze swojego komputera:

ssh [email protected]

Sprawdź wersję systemu operacyjnego:

cat /etc/os-release

Przykładowy wynik:

PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" ...

Wynik musi pokazywać Ubuntu 26.04, Ubuntu 24.04 lub Debian 13. Następnie sprawdź liczbę rdzeni procesora, ilość RAM i wolne miejsce na dysku:

nproc free -h df -h /

Upewnij się, że domena już wskazuje na serwer. Uruchom to polecenie na swoim lokalnym komputerze (działa w Windows, macOS i Linux):

nslookup gitlab.example.com

Rekord A musi zwrócić publiczny adres IPv4 serwera. Jeśli używasz też rekordu AAAA, upewnij się, że serwer jest dostępny przez IPv6. Jeśli adresy się nie zgadzają, popraw rekordy DNS i poczekaj, aż zmiana zacznie obowiązywać. Nie kontynuuj, dopóki domena nie będzie poprawnie rozwiązywana, ponieważ GitLab żąda certyfikatu Let's Encrypt podczas pierwszej konfiguracji.

Aktualizacja serwera i instalacja zależności

Zaktualizuj listy pakietów i zainstalowane pakiety:

apt update && apt upgrade -y

Ustaw nazwę hosta serwera na domenę GitLab. GitLab tego nie wymaga, ale dzięki temu nazwa systemu jest spójna z adresem GitLab w logach i wychodzących wiadomościach e-mail:

hostnamectl set-hostname gitlab.example.com

Zainstaluj pakiety potrzebne GitLab:

apt install -y curl openssh-server ca-certificates perl tzdata locales

GitLab wymaga też ustawień regionalnych UTF-8: bez nich dołączona baza danych PostgreSQL może się nie zainicjować podczas instalacji. Włącz en_US.UTF-8 na liście ustawień regionalnych i wygeneruj je (w Ubuntu 26.04 jest już włączone, a pierwsze polecenie nic nie zmienia):

sed -i 's/^# *en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen locale-gen

Konfiguracja zapory sieciowej

W tej instrukcji używana jest zapora UFW. Jest dołączona do Ubuntu, ale domyślnie wyłączona; w Debianie najpierw ją zainstaluj:

apt install -y ufw

Jeśli UFW jest już włączona na Twoim serwerze, najpierw sprawdź jej bieżące reguły poleceniem ufw status. Zezwól na SSH, HTTP i HTTPS, a dopiero potem włącz zaporę, aby nie przerwać sesji SSH:

ufw allow ssh ufw allow http ufw allow https ufw enable

Gdy pojawi się prośba o potwierdzenie, odpowiedz y. Sprawdź reguły:

ufw status

Przykładowy wynik:

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)

Warning

Jeśli Twój serwer SSH używa portu innego niż 22, zezwól na ten port przed ufw enable, na przykład poleceniem ufw allow 2222/tcp. W przeciwnym razie utracisz połączenie.

Dodanie repozytorium GitLab

GitLab jest dystrybuowany w dwóch edycjach:

  • GitLab Enterprise Edition (gitlab-ee). Zawiera wszystkie darmowe funkcje i pozwala później aktywować funkcje płatne bez ponownej instalacji.
  • GitLab Community Edition (gitlab-ce). W pełni otwartoźródłowa wersja z darmowymi funkcjami GitLab.

W tej instrukcji używana jest wersja gitlab-ee. Jeśli wolisz Community Edition, zamień gitlab-ee na gitlab-ce we wszystkich poleceniach.

Dodaj oficjalne repozytorium GitLab:

curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | bash

Skrypt dodaje repozytorium i jego klucz podpisu oraz odświeża listę pakietów.

Instalacja GitLab

Zainstaluj pakiet i przekaż adres swojej instancji w EXTERNAL_URL. Użyj https:// w adresie: wtedy GitLab zażąda certyfikatu Let's Encrypt i automatycznie skonfiguruje przekierowanie z HTTP na HTTPS.

EXTERNAL_URL='https://gitlab.example.com' apt install -y gitlab-ee

Podczas instalacji GitLab rozpakowuje swoje komponenty (serwer WWW, bazę danych PostgreSQL, Redis, magazyn Git i usługi w tle), zapisuje konfigurację w /etc/gitlab/gitlab.rb, żąda certyfikatu i uruchamia wszystkie usługi. Trwa to od 5 do 10 minut. Po zakończeniu wynik kończy się komunikatem „Thank you for installing GitLab!".

Przykładowy wynik:

Thank you for installing GitLab! GitLab should be available at https://gitlab.example.com

GitLab generuje losowe hasło dla konta root i zapisuje je w pliku. Wyświetl je:

cat /etc/gitlab/initial_root_password

Skopiuj hasło. Plik jest usuwany automatycznie 24 godziny po instalacji, więc zaloguj się i ustaw własne hasło przed upływem tego czasu.

Info

Hasło root możesz ustawić samodzielnie podczas instalacji, dodając GITLAB_ROOT_PASSWORD='your-password' przed EXTERNAL_URL w poleceniu instalacji. Użyj pojedynczych cudzysłowów, aby powłoka nie zmieniała znaków takich jak $ czy !. Jeśli hasło ma mniej niż 8 znaków, GitLab go nie użyje i wygeneruje losowe.

Otwarcie GitLab i sprawdzenie HTTPS

Otwórz https://gitlab.example.com w przeglądarce. Strona musi się otworzyć bez ostrzeżenia o bezpieczeństwie, a przeglądarka musi pokazywać ważny certyfikat wystawiony przez Let's Encrypt.

Info

Jeśli strona pokazuje błąd 502, GitLab nadal uruchamia swoje usługi. Poczekaj minutę lub dwie i odśwież stronę.

Zaloguj się, używając nazwy użytkownika root i hasła z initial_root_password.

Od razu zmień hasło. Wybierz swój awatar, a następnie Edit profile. W menu po lewej rozwiń Access, wybierz Password and authentication, a potem Change password. Wpisz obecne hasło i nowe, a następnie wybierz Save password. GitLab odrzuca słabe hasła, w tym takie, które zawierają słowo „gitlab" lub Twoją nazwę użytkownika.

Jeśli strona nie otwiera się przez HTTPS, najpewniej certyfikat nie został wystawiony. W takim przypadku wynik instalacji zawiera błąd Let's Encrypt. Sprawdź, czy domena wskazuje na adres IP serwera, czy port 80 jest otwarty i czy nie ma rekordu AAAA bez działającego IPv6. Po usunięciu przyczyny zażądaj certyfikatu ponownie:

gitlab-ctl reconfigure

Let's Encrypt ogranicza liczbę nieudanych prób na godzinę, więc usuń przyczynę przed ponowną próbą.

Podstawowa konfiguracja GitLab

Wyłączenie publicznej rejestracji. Jeśli instancja jest tylko dla Twojego zespołu, wyłącz tworzenie kont ze strony rejestracji. Domyślnie każdy, kto otworzy Twoją stronę GitLab, może się zarejestrować, a nowe konto czeka na zatwierdzenie przez administratora. Najszybciej zrobisz to przyciskiem Deactivate w banerze na stronie głównej GitLab. Możesz też wybrać Admin w prawym górnym rogu, przejść do Settings > General i rozwinąć New user account restrictions. Odznacz pole Allow new user accounts i wybierz Save changes. Nowe konta będą wtedy tworzone tylko przez administratorów.

Tworzenie kont użytkowników. Przejdź do Admin > Instance overview > Users i wybierz New user, wpisz imię i nazwisko, nazwę użytkownika oraz adres e-mail, a następnie wybierz Create user. Do codziennej pracy używaj konta osobistego z uprawnieniami administratora, a konta root tylko w razie potrzeby.

Tworzenie grupy. Grupy łączą projekty i członków zespołu. Wybierz Create new (ikona plusa) na górnym pasku, następnie New group > Create group, wpisz nazwę i wybierz Create group. Dodaj współpracowników do grupy w Manage > Members.

Dodawanie klucza SSH. Aby pracować z repozytoriami przez SSH, każdy użytkownik dodaje swój klucz publiczny w Edit profile > Access > SSH keys: wybierz Add new key, wklej klucz i wybierz Add key.

Info

GitLab wysyła wiadomości e-mail do resetowania haseł, potwierdzania kont i odblokowywania ich po nieudanych próbach logowania. Dopóki poczta wychodząca nie zostanie skonfigurowana (zobacz „Co skonfigurować dalej"), te funkcje nie działają, a administratorzy muszą resetować hasła ręcznie.

Weryfikacja instalacji

Sprawdź, czy wszystkie usługi GitLab działają:

gitlab-ctl status

Przykładowy wynik:

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 ...

Każdy wiersz musi zaczynać się od run:.

Uruchom wbudowaną kontrolę konfiguracji i usług:

gitlab-rake gitlab:check SANITIZE=true

Utwórz testowe repozytorium. W interfejsie webowym wybierz Create new > New project/repository > Create blank project, wpisz nazwę test, wybierz swoją grupę i pozostaw zaznaczoną opcję Initialize repository with a README. Wybierz Create project.

Sprawdź dostęp przez SSH ze swojego komputera:

ssh -T [email protected]

Przykładowy wynik:

Welcome to GitLab, @username!

Prawidłowo działająca konfiguracja odpowiada komunikatem powitalnym zawierającym Twoją nazwę użytkownika. Następnie sklonuj testowe repozytorium:

git clone [email protected]:group/test.git

Zamień group na ścieżkę swojej grupy. Jeśli repozytorium zostanie sklonowane i zawiera README.md, GitLab jest zainstalowany i działa.

Co skonfigurować dalej

Kopie zapasowe. Polecenie gitlab-backup create tworzy kopię zapasową aplikacji z bazą danych GitLab, repozytoriami i innymi danymi aplikacji w /var/opt/gitlab/backups. Pliki konfiguracyjne /etc/gitlab/gitlab.rb i /etc/gitlab/gitlab-secrets.json nie są uwzględnione i trzeba je kopiować osobno, na przykład poleceniem gitlab-ctl backup-etc. Bez gitlab-secrets.json przywrócona instancja nie odszyfruje ustawień 2FA ani zmiennych CI/CD. Regularnie wykonuj kopie aplikacji i konfiguracji i kopiuj je do magazynu poza serwerem GitLab, na przykład do INTROSERV Cloud Storage: zobacz Podłączanie INTROSERV Cloud Storage do serwera.

Poczta wychodząca. Skonfiguruj serwer SMTP w /etc/gitlab/gitlab.rb, aby GitLab mógł wysyłać powiadomienia, resetowanie haseł i potwierdzenia kont. Zobacz Ustawienia SMTP w dokumentacji GitLab.

GitLab Runner. Runner uruchamia pipeline'y CI/CD. Buildy zużywają dużo CPU i RAM, dlatego lepiej zainstalować Runner na osobnym VPS lub serwerze dedykowanym niż na samym serwerze GitLab.

Aktualizacje. GitLab wydaje nową wersję co miesiąc, a poprawki bezpieczeństwa częściej. Przed aktualizacją przez kilka wersji sprawdź oficjalną ścieżkę aktualizacji: GitLab musi przejść przez określone wersje pośrednie. Wykonaj kopię zapasową, a następnie zaktualizuj poleceniem apt update && apt install -y gitlab-ee.

Monitoring. GitLab zawiera Prometheus i eksportuje własne metryki. Stan instancji można sprawdzić w Admin > Monitoring > Health check, a wymienione tam endpointy można podłączyć do zewnętrznego systemu monitoringu.

Aby wybrać serwer dla swojej instancji GitLab, zobacz stronę Serwery dedykowane.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA