Cara Menginstal GitLab di Ubuntu: Panduan Lengkap Langkah demi Langkah
GitLab adalah salah satu platform DevOps open-source paling powerful yang tersedia saat ini, menawarkan suite lengkap tools termasuk version control berbasis Git, continuous integration/continuous delivery (CI/CD) pipelines, issue tracking, dan fitur kolaborasi tim — semuanya dalam satu tempat. Baik Anda mengelola tim development kecil atau menjalankan proyek software skala enterprise, self-hosting GitLab di Ubuntu memberikan Anda kontrol penuh atas data, workflows, dan infrastruktur Anda.
Panduan ini memandu Anda melalui setiap langkah instalasi dan konfigurasi GitLab Community Edition (CE) di server Ubuntu, dari persiapan sistem awal hingga mengaktifkan HTTPS dan mengelola services.
Prasyarat
Sebelum Anda memulai, pastikan Anda memiliki hal-hal berikut:
- Server yang menjalankan Ubuntu 20.04 atau 22.04 LTS (instalasi fresh direkomendasikan)
- Minimum 4 GB RAM dan 2 CPU cores (GitLab merekomendasikan minimal 4 cores untuk penggunaan production)
- Akses root atau sudo ke server
- Nama domain terdaftar yang menunjuk ke alamat IP server Anda (opsional tetapi sangat direkomendasikan untuk HTTPS)
- Port 80 dan 443 terbuka di firewall Anda
> Tip: Untuk performa GitLab terbaik, pertimbangkan untuk deploy di paket VPS Hosting dengan RAM dan CPU resources yang cukup. Paket VPS AlexHost dioptimalkan untuk workload Linux dan dilengkapi dengan akses root penuh, menjadikannya lingkungan ideal untuk platform DevOps self-hosted seperti GitLab.
Langkah 1: Update Paket Sistem
Sebelum menginstal software apa pun, sangat penting untuk memastikan index paket sistem dan paket yang terinstal sepenuhnya up to date. Ini mencegah konflik dependency dan memastikan Anda bekerja dengan security patches terbaru.
sudo apt update && sudo apt upgrade -yTunggu proses upgrade selesai sebelum melanjutkan ke langkah berikutnya.
Langkah 2: Instal Dependency yang Diperlukan
GitLab memerlukan beberapa paket pendukung untuk berfungsi dengan benar, termasuk tools untuk komunikasi aman, manajemen time zone, dan scripting. Instal mereka dengan perintah berikut:
sudo apt install -y curl openssh-server ca-certificates tzdata perlBerikut adalah apa yang dilakukan setiap paket:
| Paket | Tujuan |
|---|---|
curl | Mengunduh scripts dan files dari web |
openssh-server | Mengaktifkan akses SSH ke server Anda |
ca-certificates | Memvalidasi sertifikat SSL/TLS |
tzdata | Menyediakan data time zone |
perl | Diperlukan untuk scripts internal GitLab |
Langkah 3: Tambahkan Repository GitLab Resmi
GitLab memelihara repository paket resmi yang membuat instalasi dan upgrade di masa depan menjadi straightforward. Gunakan perintah berikut untuk mengunduh dan menjalankan script setup repository:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashScript ini secara otomatis:
- Mendeteksi versi Ubuntu Anda
- Menambahkan repository paket GitLab ke sumber APT Anda
- Mengimpor kunci signing GPG repository untuk verifikasi paket
Setelah script selesai, sistem Anda siap untuk menginstal GitLab langsung dari sumber resmi.
Langkah 4: Instal GitLab Community Edition
Sekarang instal GitLab CE menggunakan package manager apt. Anda harus mengatur environment variable EXTERNAL_URL ke URL atau alamat IP tempat users akan mengakses instance GitLab Anda.
Jika Anda memiliki nama domain:
sudo EXTERNAL_URL="https://gitlab.yourdomain.com" apt install gitlab-ceJika Anda menggunakan alamat IP (misalnya, untuk server lokal atau private):
sudo EXTERNAL_URL="http://YOUR_SERVER_IP" apt install gitlab-ceGanti gitlab.yourdomain.com atau YOUR_SERVER_IP dengan domain atau alamat IP aktual Anda.
> Catatan: Proses instalasi mungkin memakan waktu beberapa menit karena mengunduh dan mengonfigurasi semua komponen GitLab, termasuk PostgreSQL, Redis, NGINX, dan Sidekiq.
Selama instalasi, GitLab akan:
- Menginstal semua bundled services (database, cache, web server, dll)
- Mengonfigurasi dirinya berdasarkan
EXTERNAL_URLyang Anda berikan - Menghasilkan file konfigurasi awal di
/etc/gitlab/
Langkah 5: Jalankan Reconfiguration GitLab
Setelah instalasi, jalankan perintah reconfiguration untuk menyelesaikan setup, menginisialisasi database, dan memulai semua services GitLab:
sudo gitlab-ctl reconfigurePerintah ini membaca konfigurasi dari /etc/gitlab/gitlab.rb dan menerapkan semua settings. Ini juga menghasilkan sertifikat SSL (jika Let’s Encrypt dikonfigurasi), menyiapkan skema database, dan memulai semua required background services.
Anda harus melihat output panjang yang berakhir dengan pesan serupa:
gitlab Reconfigured!Langkah 6: Akses GitLab di Web Browser Anda
Setelah reconfiguration selesai, buka web browser Anda dan navigasikan ke URL yang Anda tentukan selama instalasi:
https://gitlab.yourdomain.comatau
http://YOUR_SERVER_IPLogin Pertama Kali
Pada kunjungan pertama Anda, GitLab akan meminta Anda untuk mengatur password administrator. Setelah mengaturnya, login menggunakan kredensial berikut:
- Username:
root - Password: Password yang baru saja Anda buat
> Security Tip: Ubah kredensial akun root default segera setelah login pertama Anda. Buat akun admin personal dan batasi akun root hanya untuk penggunaan emergency.
Langkah 7: Konfigurasi Email Notifications GitLab (Opsional)
Mengirim email notifications sangat penting untuk instance GitLab production — ini mengaktifkan fitur seperti verifikasi akun, merge request updates, CI/CD alerts, dan password resets. Konfigurasi settings SMTP di file konfigurasi utama GitLab:
sudo nano /etc/gitlab/gitlab.rbTambahkan atau modifikasi blok konfigurasi SMTP berikut:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourmailprovider.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your_email@yourdomain.com"
gitlab_rails['smtp_password'] = "your_email_password"
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = trueSimpan file dan terapkan perubahan:
sudo gitlab-ctl reconfigure> Mencari infrastruktur email yang reliable? AlexHost menawarkan layanan Email Hosting profesional yang terintegrasi seamlessly dengan aplikasi self-hosted seperti GitLab, menyediakan SMTP relay stabil dengan deliverability tinggi.
Langkah 8: Aktifkan HTTPS dengan Let’s Encrypt (Direkomendasikan)
Menjalankan GitLab melalui HTTPS sangat direkomendasikan untuk environment production atau tim apa pun. GitLab memiliki built-in support untuk Let’s Encrypt, certificate authority SSL gratis dan otomatis.
> Penting: Let’s Encrypt memerlukan bahwa nama domain Anda dapat diakses secara publik dan port 80 terbuka di server Anda. Ini tidak akan bekerja dengan alamat IP raw.
Buka file konfigurasi GitLab:
sudo nano /etc/gitlab/gitlab.rbTambahkan konfigurasi berikut:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['your_admin_email@yourdomain.com']
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = 12
letsencrypt['auto_renew_minute'] = 30
letsencrypt['auto_renew_day_of_month'] = "*/7"Simpan file dan reconfigure GitLab:
sudo gitlab-ctl reconfigureGitLab akan secara otomatis memperoleh dan menginstal sertifikat SSL Anda, dan setting auto_renew memastikan sertifikat diperbaharui sebelum expiration tanpa intervensi manual apa pun.
> Alternatif: Jika Anda lebih suka mengelola sertifikat SSL secara independen atau memerlukan sertifikat wildcard/multi-domain, AlexHost menawarkan berbagai SSL Certificates yang dapat dikonfigurasi secara manual di settings NGINX GitLab.
Langkah 9: Mengelola Services GitLab
GitLab membundel tool manajemen service sendiri yang disebut gitlab-ctl. Gunakan perintah berikut untuk mengontrol services GitLab:
Mulai GitLab
sudo gitlab-ctl startHentikan GitLab
sudo gitlab-ctl stopRestart GitLab
sudo gitlab-ctl restartPeriksa Status Service
sudo gitlab-ctl statusLihat Logs Real-Time
sudo gitlab-ctl tailLihat Logs untuk Service Spesifik (misalnya, NGINX)
sudo gitlab-ctl tail nginxPerintah-perintah ini sangat berharga untuk troubleshooting dan maintenance rutin. Perintah status akan menampilkan state semua sub-services GitLab, termasuk PostgreSQL, Redis, Sidekiq, Puma (web server), dan NGINX.
Langkah 10: Konfigurasi Awal GitLab untuk Organisasi Anda
Dengan GitLab terinstal dan berjalan, saatnya mengkonfigurasinya untuk kebutuhan tim Anda. Berikut adalah area kunci untuk diatur melalui interface web GitLab:
User Management
Navigasikan ke Admin Area → Users untuk membuat akun user untuk anggota tim Anda. Anda dapat mengkonfigurasi metode autentikasi, termasuk LDAP, OAuth, dan SAML untuk enterprise single sign-on.
Groups dan Projects
- Groups memungkinkan Anda mengorganisir proyek terkait dan mengelola permissions dalam skala besar
- Projects adalah repository individual dengan issue trackers, wikis, dan CI/CD pipelines mereka sendiri
CI/CD Pipelines
CI/CD built-in GitLab adalah salah satu fitur paling powerful-nya. Buat file .gitlab-ci.yml di root repository Anda untuk mendefinisikan automated build, test, dan deployment pipelines.
Repository Settings
Konfigurasi branch protection rules, merge request approvals, dan code review workflows di bawah section Settings → Repository setiap project.
Backup Configuration
Siapkan automated backups dengan mengkonfigurasi berikut di /etc/gitlab/gitlab.rb:
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800 # Keep backups for 7 daysJalankan backup manual kapan saja dengan:
sudo gitlab-backup createKonfigurasi Firewall
Jika Anda memiliki UFW (Uncomplicated Firewall) diaktifkan di server Ubuntu Anda, pastikan untuk mengizinkan traffic HTTP dan HTTPS:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusTroubleshooting Masalah Umum
| Masalah | Solusi |
|---|---|
| GitLab tidak dapat diakses setelah install | Periksa firewall rules; verifikasi EXTERNAL_URL di /etc/gitlab/gitlab.rb |
| Error 502 Bad Gateway | Jalankan sudo gitlab-ctl restart; periksa logs dengan sudo gitlab-ctl tail |
| Kegagalan sertifikat Let’s Encrypt | Pastikan port 80 terbuka dan DNS domain dikonfigurasi dengan benar |
| Penggunaan memory tinggi | Kurangi Puma workers di ###PPT_NOTR_49 |
