Ubuntu veya Debian'a yerleşik Let's Encrypt ile GitLab CE nasıl kurulur
GitLab Community Edition'ı GitLab'in resmi paket deposundan Let's Encrypt HTTPS ile kurun; ardından kayıtları kısıtlayın, yedekleyin ve güvenle yükseltin.
- Orta
- 45 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — Güvenlik duvarını açın
- Adım 2 — GitLab'in paket deposunu ekleyin
- Adım 3 — GitLab CE'yi HTTPS ile kurun
- Adım 4 — root olarak giriş yapın
- Adım 5 — Kayıtları kısıtlayın ve sertifika iletişim adresini ayarlayın
- Adım 6 — GitLab'i daha küçük bir sunucu için ayarlayın (isteğe bağlı)
- Yedekleme ve geri yükleme
- GitLab yükseltme
- Sorun giderme
- Kurulum, yeniden başlatma veya yükseltmeden hemen sonra 502 hatası
- Let's Encrypt reconfigure sırasında başarısız oluyor
- Errno::ENOMEM: Cannot allocate memory during backup or upgrade
- PostgreSQL could not create shared memory segment hatası veriyor
- reconfigure undefined method for nil:NilClass hatasıyla duruyor
- İlk root parolası çalışmıyor veya dosya silinmiş
- Sonraki adımlar
GitLab Community Edition (CE); Git depolarını, merge request'leri, issue'ları, CI/CD hatlarını ve konteyner ile paket kayıtlarını kendi yönettiğiniz tek bir uygulamada bir araya getirir. Resmi Linux paketi GitLab'i PostgreSQL, Redis, Gitaly, Puma, Sidekiq ve NGINX ile birlikte getirir; hepsini tek bir dosya olan /etc/gitlab/gitlab.rb üzerinden yapılandırırsınız.
Bu rehber GitLab CE'yi Ubuntu veya Debian'a GitLab'in kendi paket deposundan kurar, Let's Encrypt sertifikasını GitLab'in kendisine aldırır, root hesabını ve kayıtları güvenceye alır; ardından yedeklemeyi, GitLab'in zorunlu yükseltme duraklarına uygun yükseltmeleri ve tek bir sunucuda en sık karşılaşacağınız sorunları ele alır.
Ön koşullar
GitLab'in desteklediği bir sürümü çalıştıran bir sunucuya ihtiyacınız var. GitLab 19.4'ün güncel olduğu Ekim 2026 itibarıyla GitLab'in desteklenen platformlar tablosu şunu gösterir:
| İşletim sistemi | GitLab'in desteklenen platformlar tablosundaki durumu |
|---|---|
| Ubuntu 26.04 LTS | GitLab 19.3.0'dan itibaren destekleniyor |
| Ubuntu 24.04 LTS | Destekleniyor |
| Debian 13 | GitLab 18.5.0'dan itibaren destekleniyor |
| Debian 12 | Önerilen son desteklenen GitLab sürümü 19.3.0; bu yüzden yeni kurulumlar için önerilmez |
GitLab amd64 ve arm64 için paket derler ve ARM'da bilinen sorunlar olduğunu belirtir. Ubuntu kurulum sayfası hâlâ yalnızca 22.04 ve 24.04'ü listeler; Ubuntu 26.04 desteği desteklenen platformlar tablosundan gelir. Ayrıca şunlar gerekir:
sudoyetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı; Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın rehberlerindeki gibi. GitLab, SSH üzerinden Git için sunucunun kendi OpenSSH'sinigitkullanıcısıyla kullanır; girişleriAllowUsersveyaAllowGroupsile kısıtladıysanızgitkullanıcısını da ekleyin.- Sunucuyu gösteren bir A (ve AAAA) kaydına sahip
gitlab.example.comgibi bir alan adı. Let's Encrypt gelen HTTP ve HTTPS erişimine ve geçerli bir ana makine adına ihtiyaç duyar. - Boş 80 ve 443 portları: GitLab'in paketle gelen NGINX'i bu portlarda dinler; bu yüzden bu makinede başka bir web sunucusu çalıştırmayın.
- Giden trafiği filtreleyen bir güvenlik duvarı varsa
https://packages.gitlab.com/vehttps://storage.googleapis.com/packages-ops/adreslerine giden erişim.
| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Tek düğüm için 8 vCPU temel değer | 8 vCPU |
| Bellek | 16 GB temel değer; kısıtlı bellek ayarlarıyla en az 8 GB | 16 GB |
| Disk | Uygulama için 40 GB, artı tüm depolar, artı PostgreSQL için 5–12 GB | Depolarınız ve CI çıktılarınızla büyüyen 100 GB SSD |
En düşük değerler sütunu GitLab'in kurulum gereksinimlerinden alınmıştır. Önerilen sütun temkinli bir başlangıç noktasıdır; resmi veya ölçülmüş bir değer değildir. GitLab gereksinimleri ayrıca mümkünse swap'ın kapatılmasını ya da GitLab'in swap'a hiç ihtiyaç duymayacağı kadar bellek sağlanmasını ister.
Adım 1 — Güvenlik duvarını açın
GitLab'in kurulum sayfaları SSH'yi etkinleştirir ve ufw'de SSH, HTTP ve HTTPS'i açar. 22 portu SSH üzerinden Git trafiğini de taşır:
sudo systemctl enable --now ssh
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseDocker tabanlı uygulamaların aksine GitLab'in NGINX'i doğrudan ana makinede çalışır; bu yüzden ufw kuralları ona normal şekilde uygulanır. SSH servisiniz başka bir portta dinliyorsa ufw'yi etkinleştirmeden önce 22 yerine o porta izin verin.
Adım 2 — GitLab'in paket deposunu ekleyin
GitLab, apt deposunu yapılandıran bir betik sunar. curl kurun, betiği indirin, okuyun ve çalıştırın:
sudo apt update
sudo apt install -y curl
curl --location "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh" -o gitlab-ce-repo.sh
less gitlab-ce-repo.sh
sudo bash gitlab-ce-repo.shBetik şunları yapar:
- dağıtımınızı ve kod adını
/etc/os-releasedosyasından algılar; apt-transport-httpspaketini,gpgyoksagnupgpaketini, Debian'da dadebian-archive-keyringpaketini kurar;- sürümünüze ait depo tanımını
/etc/apt/sources.list.d/gitlab_gitlab-ce.listdosyasına indirir; - GitLab'in imza anahtarını indirir, dönüştürür ve
/etc/apt/keyrings/gitlab_gitlab-ce-archive-keyring.gpgolarak kaydeder; apt-get updateçalıştırır ve başarısız olursa hata vererek durur.
apt'nin GitLab CE'yi artık GitLab deposundan sunduğunu kontrol edin:
apt-cache policy gitlab-ceCandidate satırı en yeni sürümü gösterir; kaynak packages.gitlab.com olmalıdır.
Adım 3 — GitLab CE'yi HTTPS ile kurun
Genel adresinizi EXTERNAL_URL ile verin. Adres https:// ile başladığı için GitLab ilk yapılandırma sırasında bir Let's Encrypt sertifikası ister:
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ceKurulum ve ilk gitlab-ctl reconfigure çalıştırması birkaç dakika sürer. GitLab aynı komut satırında GITLAB_ROOT_EMAIL ve GITLAB_ROOT_PASSWORD (en az 8 karakter) değerlerini de kabul eder; ancak yalnızca ilk kurulumda ve bu durumda parola kabuk geçmişinize düşer. Adım 4'teki üretilmiş parola bunu önler. GitLab geçerli bir ana makine adı algılayamazsa reconfigure kendiliğinden çalışmaz; bu durumda aynı değişkenleri sudo gitlab-ctl reconfigure komutuna verin.
Servisleri ve siteyi kontrol edin:
sudo gitlab-ctl status
curl -I https://gitlab.example.comHer servis satırı run: ile başlar. curl geçerli bir sertifika üzerinden giriş sayfasına yönlendirme döndürür. Puma başlarken ilk bir iki dakika 502 sayfası görmek normaldir.
Adım 4 — root olarak giriş yapın
GitLab rastgele bir root parolası üretir ve 24 saat boyunca saklar:
sudo cat /etc/gitlab/initial_root_passwordhttps://gitlab.example.com adresini açın, bu parolayla root olarak giriş yapın ve hemen:
- Kullanıcı ayarlarınızda Password bölümünden yeni ve uzun bir parola belirleyin.
- root hesabının e-posta adresini okuduğunuz bir adresle değiştirin.
- Hesap için iki adımlı doğrulamayı açın.
GitLab 24 saat sonra dosyayı kendiliğinden siler. Parolayı kaybederseniz sorun giderme bölümü nasıl sıfırlayacağınızı gösterir.
Adım 5 — Kayıtları kısıtlayın ve sertifika iletişim adresini ayarlayın
Varsayılan olarak GitLab'inize ulaşabilen herkes hesap isteyebilir; yeni instance'lar bu kayıtlar için yönetici onayı ister. Yalnızca davet ettiğiniz kişilerin hesabı olacaksa kaydı kapatın:
- Sağ üst köşede Admin seçin.
- Sol kenar çubuğunda Settings ve ardından General seçin.
- New user account restrictions bölümünü genişletin.
- Allow new user accounts kutusunun işaretini kaldırın ve Save changes seçin.
Bundan sonra hesapları Admin, Users altından kendiniz oluşturun.
Ardından Let's Encrypt'e süre bitimi uyarılarını nereye göndereceğini bildirin. Yapılandırma dosyasını açın:
sudo nano /etc/gitlab/gitlab.rbŞu satırı ekleyin veya düzenleyin:
letsencrypt['contact_emails'] = ['[email protected]']Değişikliği uygulayın:
sudo gitlab-ctl reconfigureGitLab sertifikayı kendi zamanlamasıyla yeniler (varsayılan olarak her ayın 4'ünde gece yarısından sonra); Certbot çalıştırmanız gerekmez.
GitLab hesap onaylarını, parola sıfırlamalarını, davetleri ve bildirimleri e-postayla gönderir; bunları relay'iniz üzerinden göndermek için aynı gitlab.rb dosyasında GitLab'in SMTP ayarları sayfasında gösterildiği gibi gitlab_rails['smtp_enable'] = true, smtp_address (smtp.example.com), smtp_port (587), smtp_user_name, smtp_password ve smtp_enable_starttls_auto = true değerlerini ayarlayın, ardından sudo gitlab-ctl reconfigure çalıştırın.
Adım 6 — GitLab'i daha küçük bir sunucu için ayarlayın (isteğe bağlı)
Sunucunuzda 16 GB'lık temel değerden az bellek varsa GitLab, kısıtlı bellek ortamları için ayarlar belgeler. En etkili olanlar /etc/gitlab/gitlab.rb dosyasına girer:
puma['worker_processes'] = 0
sidekiq['concurrency'] = 10
prometheus_monitoring['enable'] = falseArdından sudo gitlab-ctl reconfigure çalıştırın. Bu ayarlarla ilk çalıştırma biraz sürebilir. Daha ileri gitmeniz gerekirse GitLab'in kısıtlı bellek ortamları sayfası Gitaly eşzamanlılık sınırlarını ve bellek ayırıcı ayarlarını da anlatır.
Yedekleme ve geri yükleme
Bir GitLab yedeği iki parçadan oluşur. gitlab-backup aracı veritabanını, depoları ve yüklenen dosyaları /var/opt/gitlab/backups içinde bir .tar dosyasına arşivler. /etc/gitlab içindeki yapılandırmayı ve özellikle veritabanında saklanan değerleri çözen anahtarları tutan gitlab-secrets.json dosyasını içermez. İkisini de yedekleyin:
sudo gitlab-backup create
sudo ls -lh /var/opt/gitlab/backups
sudo mkdir -p /opt/backups
sudo tar czf /opt/backups/gitlab-etc-$(date +%F).tar.gz /etc/gitlabYapılandırma arşivini veri yedeklerinden farklı bir yerde saklayın; ikisi birlikte verilerinize tam erişim sağlar. Yoğun instance'larda yedek file changed as we read it hatası verirse, aynı miktarda ek disk alanına kadar ihtiyaç duyan sudo gitlab-backup create STRATEGY=copy komutunu kullanın.
Her gece 02:00'de yedek almak için sudo crontab -e ile root'un crontab'ına şu satırı ekleyin:
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1Yerel arşivlerin ne kadar tutulacağını gitlab.rb içinde gitlab_rails['backup_keep_time'] = 604800 (yedi gün) ile sınırlayın. GitLab ayrıca backup_upload_connection ayarlarıyla her arşivi S3 uyumlu depolamaya yükleyebilir. Her durumda yedekleri sunucunun dışına kopyalayın.
Geri yükleme. Yalnızca aynı gitlab-ce paketinden kurulmuş, tam olarak aynı GitLab sürümüne geri yükleme yapabilirsiniz. O sürümü kurun, kayıtlı /etc/gitlab/gitlab-secrets.json ve gitlab.rb dosyalarınızı yerlerine koyun ve sudo gitlab-ctl reconfigure çalıştırın. Ardından arşivi yedek klasörüne kopyalayın ve Puma ile Sidekiq durdurulmuşken geri yükleyin. Kendi arşiv adınızı kullanın; BACKUP değeri, _gitlab_backup.tar olmadan addır.
sudo cp 1791500000_2026_10_09_19.4.1-ce_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/1791500000_2026_10_09_19.4.1-ce_gitlab_backup.tar
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl status
sudo gitlab-backup restore BACKUP=1791500000_2026_10_09_19.4.1-ce
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
sudo gitlab-rake gitlab:check SANITIZE=true
sudo gitlab-rake gitlab:doctor:secretsSon komut, geri yüklenen secrets dosyasının veritabanındaki değerleri çözebildiğini doğrular.
GitLab yükseltme
GitLab her ay yeni bir ara sürüm yayınlar ve bazı sürümler, ilerlemeden önce kurmanız gereken zorunlu yükseltme duraklarıdır: GitLab 18'de 18.2, 18.5, 18.8 ve 18.11; GitLab 19'da 19.2, 19.5, 19.8 ve 19.11 (sonraki duraklar henüz yayınlanmamış olabilir). GitLab'in Upgrade Path aracı, başlangıç noktanıza göre tam sürümleri listeler. Her durakta devam etmeden önce arka plan geçişlerinin bitmesini bekleyin.
Paket yükseltmeden önce otomatik bir veritabanı yedeği alır; ancak GitLab yine de kendi tam ve güncel yedeğinizi tutmanızı ister. Belirli bir sürüme tipik bir yükseltme şöyledir:
sudo gitlab-backup create
sudo apt update
apt-cache madison gitlab-ce
sudo apt install gitlab-ce=19.4.1-ce.0
sudo gitlab-rake gitlab:background_migrations:listapt-cache madison depodaki sürümleri listeler; 19.4.1-ce.0 yerine hedef sürümünüzü yazın. Son komut (GitLab 18.9 ve sonrası) bekleyen arka plan geçişlerini gösterir; bunları Admin, Monitoring, Background migrations altından da kontrol edebilirsiniz. Yükseltme sürerken tek düğümlü bir sunucu bir dağıtım mesajı veya 502 sayfası gösterir.
Sorun giderme
Kurulum, yeniden başlatma veya yükseltmeden hemen sonra 502 hatası
Puma hâlâ başlıyor; küçük bir sunucuda bu bir dakika veya daha uzun sürebilir. sudo gitlab-ctl status ile kontrol edin ve logları sudo gitlab-ctl tail puma ile izleyin. 502 sürerse belleği free -h ile kontrol edin. GitLab Workhorse, tek bir istek bir dakikadan uzun sürdüğünde de 502 döndürür; çok yavaş sayfalar için gitlab.rb içinde gitlab_workhorse['proxy_headers_timeout'] değerini artırabilirsiniz.
Let's Encrypt reconfigure sırasında başarısız oluyor
Let's Encrypt sunucuya EXTERNAL_URL içindeki adla 80 ve 443 portlarından ulaşmalıdır. DNS kaydını kontrol edin, iki portu da ufw'de ve varsa sağlayıcı güvenlik duvarında açın, ardından sudo gitlab-ctl reconfigure komutunu yeniden çalıştırın. Daha sonra yenilemeyi sudo gitlab-ctl renew-le-certs ile zorlayabilirsiniz.
Errno::ENOMEM: Cannot allocate memory during backup or upgrade
GitLab bu işler için yaklaşık 2 GB boş belleğe ihtiyaç duyar. Sunucu normal çalışırken zaten swap kullanıyorsa bellek ekleyin; kullanmıyorsa swap eklemek yedeği veya yükseltmeyi tamamlamak için yeterli olabilir.
PostgreSQL could not create shared memory segment hatası veriyor
Paketle gelen PostgreSQL sunucu belleğinin %25'ini ayırmaya çalışır. gitlab.rb içinde postgresql['shared_buffers'] = "100MB" ayarlayın ve sudo gitlab-ctl reconfigure çalıştırın.
reconfigure undefined method for nil:NilClass hatasıyla duruyor
gitlab.rb dosyası, genellikle bir yükseltmeden sonra, geçersiz veya artık kullanılmayan bir ayar içeriyor. Dosyanızı güncel şablonla sudo gitlab-ctl diff-config ile karşılaştırın, ayarı düzeltin ve reconfigure komutunu yeniden çalıştırın.
İlk root parolası çalışmıyor veya dosya silinmiş
Dosya 24 saat sonra silinir. root parolasını GitLab'in Rake göreviyle sıfırlayın ve yeni parolayı iki kez girin:
sudo gitlab-rake "gitlab:password:reset[root]"Sonraki adımlar
- Daha hafif bir Git sunucusu için Forgejo veya Gitea ile karşılaştırın.
- Uygulamaları depolarınızdan Coolify veya Dokploy ile dağıtın.
- GitLab için boyutlandırılmış sunuculara GitLab hosting sayfasında göz atın.
- Runner'lar, e-posta gönderimi ve konteyner kaydı için resmi GitLab belgelerini okuyun.
Sık sorulan sorular
GitLab hangi Ubuntu ve Debian sürümlerini destekler?
Ekim 2026 itibarıyla GitLab'in desteklenen platformlar tablosu Ubuntu 22.04, 24.04 ve 26.04'ü (26.04, GitLab 19.3'ten itibaren) ve Debian 11, 12 ve 13'ü listeler. Debian 11 ve 12 için önerilen son GitLab sürümü 19.3'tür; bu yüzden yeni bir sunucuda Ubuntu 24.04, Ubuntu 26.04 veya Debian 13 kullanın.
GitLab CE ne kadar belleğe ihtiyaç duyar?
GitLab gereksinimleri tek düğümlü bir kurulum için temel değer olarak 8 vCPU ve 16 GB bellek verir. Kısıtlı bellek ortamları için önerilen ayarlarla tek bir düğüm en az 8 GB ile çalışabilir.
Kurulumdan sonra GitLab root parolasını nerede bulurum?
Kurulumda bir parola belirlemediyseniz GitLab rastgele bir parolayı /etc/gitlab/initial_root_password dosyasına yazar. Dosya 24 saat sonra kendiliğinden silinir; bu yüzden hemen root olarak giriş yapıp parolayı değiştirin.
gitlab-backup GitLab yapılandırmasını da içerir mi?
Hayır. Yedek arşivi /etc/gitlab klasörünü içermez. /etc/gitlab/gitlab-secrets.json ve /etc/gitlab/gitlab.rb dosyalarını ayrıca yedekleyin; geri yükleme, veritabanında saklanan değerleri çözmek için aynı secrets dosyasına ihtiyaç duyar.
GitLab'i doğrudan en yeni sürüme yükseltebilir miyim?
Yalnızca mevcut sürümünüzle hedef sürüm arasında zorunlu bir yükseltme durağı yoksa. GitLab 19'da duraklar 19.2, 19.5, 19.8 ve 19.11'dir; her durağın tam paket sürümünü kurun ve devam etmeden önce arka plan geçişlerinin bitmesini bekleyin.
Kaynaklar
- docs.gitlab.com/install/package/ubuntu
- docs.gitlab.com/install/package/debian
- docs.gitlab.com/install/package
- docs.gitlab.com/install/requirements
- packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.de…
- docs.gitlab.com/omnibus/settings/ssl
- docs.gitlab.com/omnibus/settings/memory_constrained_envs
- docs.gitlab.com/administration/settings/sign_up_restrictions
- docs.gitlab.com/administration/backup_restore/backup_gitlab
- docs.gitlab.com/administration/backup_restore/restore_gitlab
- docs.gitlab.com/update/upgrade_paths
- docs.gitlab.com/update/package