📍 Infrastructure as Code
GitLab CE (Community Edition) to otwarto-źródłowa wersja GitLaba – kompletnej platformy DevOps, która łączy w sobie repozytoria Git, zarządzanie projektami, CI/CD oraz narzędzia do monitoringu i bezpieczeństwa. W przeciwieństwie do wersji komercyjnych GitLab EE, edycja CE jest w pełni darmowa i rozwijana we współpracy ze społecznością.
Dzięki GitLab CE możesz w jednym miejscu:
- hostować własne repozytoria Git,
- planować zadania i zarządzać issue,
- budować, testować i wdrażać aplikacje przez wbudowane CI/CD,
- pracować w modelu DevOps bez dodatkowych narzędzi.
To świetny wybór dla firm i zespołów, które chcą pełną kontrolę nad swoim środowiskiem, bezpieczeństwem i procesami — bez licencji i vendor lock-in.
✅ 1. Wgraj swój certyfikat i klucz do GitLaba
GitLab (omnibus) oczekuje certów w:
/etc/gitlab/ssl/
Utwórz katalog i wrzuć tam swoje pliki:
sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl
Załóżmy, że masz:
- certyfikat:
gitlab.rachuna-net.pl.crt - klucz prywatny:
gitlab.rachuna-net.pl.key - (opcjonalnie) certyfikat CA:
ca.crt
Skopiuj je:
sudo cp gitlab.rachuna-net.pl.crt /etc/gitlab/ssl/
sudo cp gitlab.rachuna-net.pl.key /etc/gitlab/ssl/
sudo cp ca.crt /etc/gitlab/ssl/ # jeśli potrzebne
⚠️ Nazwy plików muszą odpowiadać domenie z external_url! Czyli jeśli używasz:
external_url "https://gitlab.rachuna-net.pl"
to pliki muszą mieć nazwę:
/etc/gitlab/ssl/gitlab.rachuna-net.pl.crt
/etc/gitlab/ssl/gitlab.rachuna-net.pl.key
Daj im właściwe prawa:
sudo chmod 600 /etc/gitlab/ssl/*
✅ 2. Edytuj /etc/gitlab/gitlab.rb
Otwórz:
sudo nano /etc/gitlab/gitlab.rb
Ustaw:
external_url "https://gitlab.rachuna-net.pl"
nginx['enable'] = true
# nginx['client_max_body_size'] = '0'
nginx['redirect_http_to_https'] = true
# nginx['redirect_http_to_https_port'] = 80
##! Most root CA's are included by default
nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/ca.crt"
##! enable/disable 2-way SSL client authentication
# nginx['ssl_verify_client'] = "off"
##! if ssl_verify_client on, verification depth in the client certificates chain
# nginx['ssl_verify_depth'] = "1"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.rachuna-net.pl.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.rachuna-net.pl.key"
WAŻNE:
- Jeśli certyfikat zawiera pełny chain (cert + intermediate), nie musisz używać
ssl_certificate_chain. - Jeśli masz oddzielne pliki, musisz go podać.
✅ 3. Przeładuj konfigurację GitLaba
sudo gitlab-ctl reconfigure
Sprawdź status:
sudo gitlab-ctl status
✅ 4. Jeżeli masz własne CA — dodaj CA do systemu
Jeżeli certyfikat jest podpisany przez Twoje prywatne CA (Vault/MikroTik/Proxmox/etc.), to na serwerze oraz komputerach klientów musisz dodać CA.
Na samym GitLabie:
sudo cp ca.crt /usr/local/share/ca-certificates/my-ca.crt
sudo update-ca-certificates
🔍 5. Test z poziomu kontenera
curl -I https://gitlab.rachuna-net.pl
Jeśli dostaniesz 200/302 i brak błędów certyfikatu → cert działa.
🟢 6. Gotowe — GitLab działa po HTTPS z Twoim certem
Możesz wejść w:
https://gitlab.rachuna-net.pl
Jeśli chcesz, mogę:
✓ sprawdzić Twoje pliki certów (jak je wgrałeś),
✓ przygotować pełny gitlab.rb pod Twoją infrastrukturę,
✓ pomóc skonfigurować ingress/reverse proxy albo HSTS.
Daj znać, co chcesz zrobić dalej.