A GitLab Community Edition (CE) önállóan üzemeltethető Git-alapú verziókezelő és CI/CD platform. Az alábbiakban a telepítés, a meglévő Apache szerver mögé illesztés és a leggyakoribb hibák megoldása szerepel.
Telepítés / frissítés adott verzióra
Csomaglista: https://packages.gitlab.com/app/gitlab/gitlab-ce
sudo apt-get install gitlab-ce=[kivant_verzio]-ce.0
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
nano /etc/apt/sources.list
# hozzáadandó:
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ xenial main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ xenial main
apt-get update
apt-get install gitlab-ce
gitlab-ctl reconfigure
Megjegyzés: Cseréld az 'xenial'-t a saját Ubuntu/Debian verziódnak megfelelő kódnévre.
Alap konfiguráció (/etc/gitlab/gitlab.rb)
Forrás a portütközés megoldásához: http://stackoverflow.com/questions/33698346/gitlab-apache-ubuntu-14-04
external_url 'http://gitlab.[sajat-domain]'
nginx['listen_port'] = [egyedi_belso_port] # pl. 8929, ütközésmentes port
git_data_dirs({
"default" => {
"path" => "/mnt/[gyors_tarhely]/Gitlab",
'gitaly_address' => 'unix:/var/opt/gitlab/gitaly/gitaly.socket'
}
})
### Advanced settings
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = [egyedi_belso_port_2]
gitlab-ctl reconfigure
gitlab-ctl restart
# Élő logok követése hibakereséshez
sudo gitlab-ctl tail
Apache reverse proxy a GitLab elé
sudo a2enmod proxy_http
nano /etc/apache2/sites-available/gitlab.conf
<VirtualHost *:80>
ServerName gitlab.[sajat-domain]
# GitLab passthrough
ProxyPass / http://localhost:[egyedi_belso_port]/
ProxyPassReverse / http://localhost:[egyedi_belso_port]/
</VirtualHost>
a2ensite gitlab.conf
nano /etc/hosts
# tartalmazza:
127.0.0.1 localhost
127.0.1.1 localhost
reboot
Megjegyzés: Indítási szolgáltatás eltávolítása autostart-ból, ha nem szükséges: sudo systemctl disable gitlab-runsvdir.service
Alternatíva: GitLab Nginx mögé téve (Apache helyett)
Ha a szerveren Nginx fut webszerverként Apache helyett, a GitLab ugyanúgy reverse proxy mögé tehető. A GitLab beépített, csomagolt Nginx-ét ilyenkor érdemes kikapcsolni, és a rendszer saját Nginx-ét használni a proxyzáshoz — így egy helyen kezelhető az összes virtual host és az SSL is.
# /etc/gitlab/gitlab.rb — a beépített Nginx kikapcsolása,
# mert a rendszer saját Nginx-e fogja kiszolgálni a forgalmat
nginx['enable'] = false
gitlab_rails['gitlab_shell_ssh_port'] = 22
gitlab-ctl reconfigure
sudo nano /etc/nginx/sites-available/gitlab.<sajat-domain>.conf
server {
listen 80;
server_name gitlab.[sajat-domain];
location / {
proxy_pass http://localhost:[gitlab_belso_port];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 250m; # nagyobb git push-okhoz / fájlfeltöltésekhez
}
}
sudo ln -s /etc/nginx/sites-available/gitlab.[sajat-domain].conf /etc/nginx/sites-enabled/
sudo nginx -t # konfiguráció szintaktikai ellenőrzése
sudo systemctl reload nginx
Megjegyzés: A 'client_max_body_size' beállítás kulcsfontosságú GitLabnál: enélkül nagyobb git push-ok vagy fájl-feltöltések 413-as hibával elszállhatnak, mert az Nginx alapértelmezetten kis méretre korlátozza a kérés törzsét.
GitLab e-mail (SMTP) beállítása
# /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[sajat_email_cim]"
gitlab_rails['smtp_password'] = "[email_jelszo_vagy_app_jelszo]"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
Megjegyzés: Gmail SMTP-hez ma már alkalmazás-jelszó (App Password) szükséges, sima fiókjelszóval nem fog működni, ha kétlépcsős azonosítás van bekapcsolva.
Rate limiting és brute-force védelem
gitlab_rails['rack_attack_git_basic_auth'] = {
'enabled' => true,
'ip_whitelist' => ["127.0.0.1", "[sajat_publikus_ip]"],
'maxretry' => 10,
'findtime' => 60,
'bantime' => 3600
}
gitlab_rails['rack_attack_protected_paths'] = [
'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users',
'/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token'
]
gitlab_rails['rate_limit_requests_per_period'] = 60
gitlab_rails['rate_limit_period'] = 60
gitlab-ctl reconfigure
Teszt e-mail küldése konzolból
sudo gitlab-rails console
Notify.test_email('[cel_email_cim]', 'Message Subject', 'Message Body').deliver_now
Hiba: GitLab 'Forbidden' válasz
# 1. megoldás: Redis cache törlése
/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket
FLUSHALL
# VAGY 2. megoldás:
/opt/gitlab/bin/gitlab-rake cache:clear
Hiba: frissítés után reconfigure hibát dob (audit_events timestamp bug)
gitlab-rails dbconsole
SELECT * FROM audit_events WHERE created_at > current_timestamp;
DELETE FROM audit_events WHERE created_at > current_timestamp;
exit
GitLab Runner telepítése
Útmutató: https://docs.gitlab.com/runner/install/linux-manually.html
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
mv /usr/local/bin/gitlab-runner /usr/bin
sudo chmod +x /usr/bin/gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/mnt/[gyors_tarhely]/gitlab-runner
sudo gitlab-runner start
gitlab-runner register
GitLab Runner frissítése
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
gitlab-runner start