Gitlab CE atau Community Edition adalah aplikasi open-source yang digunakan untuk menghosting repositori Git Anda. Menghosting sendiri repositori Git Anda memberi Anda kendali penuh atas data Anda sekaligus menyediakan antarmuka yang mudah digunakan untuk Anda dan anggota tim Anda.
Dalam panduan ini, kami akan membahas cara menginstal repositori Git Anda menggunakan penawaran gratis Gitlab, Edisi Komunitas. Jika Anda menginginkan fitur lanjutan seperti persetujuan Gabung, Peta Jalan, Manajemen Portofolio, Pemulihan bencana, Pemindaian kontainer, dll., Anda dapat memilih untuk meningkatkan ke Edisi Perusahaan.
Prasyarat
- Server berbasis Ubuntu 18.04 dengan pengguna sudo non-root.
- Anda memerlukan VPS dengan minimal 2 inti CPU dan RAM 8GB sesuai dengan persyaratan perangkat keras yang ditentukan untuk Gitlab CE yang akan mendukung 100 pengguna. Meskipun Anda dapat mengganti ruang swap dengan RAM, hal ini tidak disarankan karena aplikasi akan berjalan lebih lambat.
Langkah 1 - Memasang Dependensi
Sebelum kita menginstal Gitlab, kita perlu memastikan server kita memiliki perangkat lunak tertentu yang dibutuhkan Gitlab untuk berjalan dengan baik. Jalankan perintah berikut untuk menginstal dependensi.
$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y
Beberapa perangkat lunak di atas mungkin sudah diinstal sebelumnya untuk Anda.
Langkah 2 - Ubah Port SSH Sistem Anda
Gitlab akan menggunakan port 22 untuk mendorong repositori melalui SSH. SSH server Anda juga berjalan di sana yang akan menghasilkan konflik. Ada dua cara untuk melakukannya. Anda dapat mengubah port SSH yang Anda gunakan untuk terhubung ke sistem Anda atau Anda dapat mengubah port yang akan digunakan Gitlab untuk SSH. Dalam tutorial ini, kita akan mengubah port SSH untuk server itu sendiri.
Untuk melakukan ini, kita perlu mengedit file /etc/ssh/sshd_config. Buka file di editor teks nano.
$ sudo nano /etc/ssh/sshd_config
Temukan baris berikut dan ubah 22 ke 6622 dan hapus # di depannya. Anda dapat memilih port yang Anda inginkan.
# Port 22
Tekan Ctrl + X untuk menutup file Anda dan tekan Y untuk menyimpan perubahan.
Mulai ulang layanan SSH.
$ sudo systemctl restart sshd
Tutup sesi SSH Anda saat ini dan buat sesi baru dengan port 6622 dan sambungkan kembali ke server Anda.
$ ssh [email protected] -p 6622
Langkah 3 - Mengonfigurasi Firewall
Pada langkah kami sebelumnya, kami menginstal, ufw (Uncomplicated Firewall). Sebelum kita dapat melanjutkan untuk menginstal Gitlab, kita perlu mengonfigurasinya.
Aktifkan SSH dan port yang baru saja kita buat agar tidak terkunci.
$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622
Aktifkan firewall ufw.
$ sudo ufw enable
Kami juga perlu mengaktifkan http dan https agar Gitlab dapat beroperasi.
$ sudo ufw allow http
$ sudo ufw allow https
Periksa status firewall.
$ sudo ufw status
Anda akan melihat output seperti berikut.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
6622 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
6622 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Langkah 4 - Instal Docker
Tambahkan kunci GPG Docker ke sistem Anda.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Verifikasi sidik jari dari kunci yang diunduh.
$ sudo apt-key fingerprint 0EBFCD88
Anda akan melihat output seperti berikut.
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <[email protected]>
sub rsa4096 2017-02-22 [S]
Tambahkan repositori Docker.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Perbarui basis data paket Anda.
$ sudo apt update
Instal Docker-CE. CE adalah Docker Edisi Komunitas.
$ sudo apt install docker-ce -y
Docker harus diinstal sekarang. Periksa apakah itu berjalan.
$ sudo systemctl status docker
Outputnya harus seperti berikut ini.
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
Docs: https://docs.docker.com
Main PID: 19128 (dockerd)
Tasks: 12
CGroup: /system.slice/docker.service
??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Tekan q untuk keluar.
Tambahkan akun pengguna Linux Anda yang terbatas ke grup buruh pelabuhan sehingga Anda dapat menjalankan buruh pelabuhan tanpa sudo.
sudo usermod -aG docker $USER
$USER variabel akan memilih dan menambahkan pengguna yang masuk saat ini ke grup buruh pelabuhan. Ganti $USER dengan nama pengguna yang sebenarnya jika saat ini Anda tidak masuk dengan pengguna tersebut.
Beralih ke pengguna yang baru saja kita tambahkan. Meskipun Anda sudah masuk, Anda masih perlu beralih lagi untuk memuat ulang izin.
$ su - ${USER}
Periksa apakah semuanya berjalan dengan baik dengan menjalankan program "Hello World" bawaan.
$ docker run hello-world
Anda akan melihat output berikut yang akan memberi tahu Docker telah diinstal dan berfungsi dengan baik.
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Langkah 5 - Instal Docker Compose
Anda dapat melewati langkah ini dan melanjutkan, tetapi menginstal Docker Compose akan membuat menjalankan Gitlab lebih mudah terutama jika Anda ingin melakukannya di lebih dari satu server.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Pada saat penulisan tutorial ini, 1.24.1 adalah rilis stabil Docker Compose saat ini. Anda dapat memeriksa versi rilis terbaru dari halaman Github mereka.
Terapkan izin yang dapat dieksekusi ke biner penulisan buruh pelabuhan.
$ sudo chmod +x /usr/local/bin/docker-compose
Tambahkan Penyelesaian Perintah ke Docker Compose.
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Verifikasi apakah instalasi Anda berhasil.
$ docker-compose --version
Ini akan mencetak output berikut.
docker-compose version 1.24.1, build 4667896b
Langkah 6 - Instal Gitlab
Unduh gambar Docker Gitlab dari Dockerhub. Gambar ini berisi semua yang Anda butuhkan untuk menjalankan Docker - nginx, PostgreSQL, Redis, dll. Jalankan perintah berikut untuk mengunduh gambar.
$ docker pull gitlab/gitlab-ee:latest
Meskipun tutorial ini tentang menginstal Edisi Komunitas, namun kami akan mengambil gambar Edisi Perusahaan dari Gitlab. Ini karena edisi Enterprise berperilaku persis seperti Edisi Komunitas kecuali Anda meningkatkannya dengan memasukkan lisensi Anda. Meningkatkan instalasi Edisi Komunitas ke Edisi Perusahaan menghadirkan lebih banyak kerumitan.
Ini akan memakan waktu beberapa saat untuk men-download lengkap gambar. Ketika pekerjaan selesai, Anda dapat menjalankan perintah berikut untuk memeriksa semua gambar yang saat ini ada di sistem Anda.
$ docker images
Outputnya akan terlihat seperti berikut ini.
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ee latest 4bacb2356d28 4 days ago 1.87GB
hello-world latest fce289e99eb9 9 months ago 1.84kB
Langkah 7 - Jalankan Gitlab
Kami dapat menjalankan wadah Gitlab langsung pada saat ini dengan menyediakan semua opsi dalam satu perintah, tetapi itu berarti setiap kali Anda perlu menjalankan wadah, Anda perlu menyediakan variabel-variabel ini. Docker Compose membuat proses ini lebih mudah karena memungkinkan Anda untuk menyimpan konfigurasi ke dalam file .yml yang kemudian akan digunakan untuk menjalankan dan meluncurkan container.
Buat docker-compose.yml.
$ nano docker-compose.yml
Tempelkan kode berikut.
web:
image: 'gitlab/gitlab-ee:latest'
container_name: 'gitlab-howtoforge-tutorial'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "app-password"
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'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
- '587:587'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
Mari kita lihat apa arti dari setiap opsi di atas.
- gambar mengacu pada lokasi image Docker dari Gitlab di Dockerhub.
- nama_wadah memungkinkan Anda untuk menerapkan label ke wadah buruh pelabuhan Anda, untuk digunakan saat mereferensikan wadah dalam jaringan Docker.
- nama host mendefinisikan hostname internal container atau dalam kasus kami, URL tempat Gitlab Anda akan dipasang.
- mulai ulang menentukan kebijakan mulai ulang untuk penampung. Kami telah menyetelnya ke selalu yang berarti wadah jika keluar, secara otomatis akan dimulai ulang.
- lingkungan memasok variabel GITLAB_OMNIBUS_CONFIG yang memungkinkan Anda untuk memasukkan pengaturan konfigurasi Gitlab. Dalam hal ini, kami menyediakan URL eksternal yang seharusnya digunakan Gitlab.
- volume mendefinisikan direktori yang dipasang di server untuk menyimpan data persisten. Tiga volume/direktori menyimpan data aplikasi, file log, dan file konfigurasi. Nilai di sebelah kiri titik koma adalah direktori lokal di server, dan nilai di sebelah kanan adalah direktori di dalam wadah.
- terbitkan memberitahu wadah untuk mempublikasikan port atau berbagai port ke host. Karena Gitlab membutuhkan port 22(SSH), 80(HTTP), 443(HTTPS) dan 587(SMPT - MSA), kami telah menetapkannya di sini. Jika Anda ingin Gitlab menggunakan port non-standar di server Anda (mungkin karena tidak tersedia), Anda harus menyediakan port host terlebih dahulu, lalu port container. Misalnya, karena server Anda sudah menggunakan port SSH(22), Anda dapat memberi tahu Gitlab untuk menggunakan SSH melalui port yang berbeda, misalnya 3333. Kemudian Anda akan mengubah 22:22 dalam file di atas ke 3333:22 . Anda juga perlu menambahkan baris gitlab_rails['gitlab_shell_ssh_port'] =3333 di bawah GITLAB_OMNIBUS_CONFIG di atas.
- external_url mengacu pada domain tempat Gitlab Anda akan dipasang. Kami telah memilih https yang akan secara otomatis memasang sertifikat Let's Encrypt SSL untuk kami.
- Kami juga telah menambahkan konfigurasi tambahan untuk mengonfigurasi Gitlab agar menggunakan Gmail untuk mengirim email. Anda dapat menggunakan layanan email SMTP pihak ketiga. Dokumen Gitlab telah mempertahankan panduan terperinci tentang cara mengonfigurasi berbagai layanan SMTP dengannya.
Pastikan Anda berada di direktori yang sama dengan docker-compose.yml. Jalankan perintah berikut untuk memulai Gitlab.
$ docker-compose up -d
Anda akan melihat sesuatu seperti berikut.
Creating gitlab-howtoforge-tutorial ... done
Diperlukan beberapa menit lagi sebelum Anda dapat mengakses Gitlab melalui browser. Anda dapat mengetahui lebih lanjut tentang proses startup melalui perintah berikut.
$ docker logs -f gitlab-howtoforge-tutorial
Untuk keluar dari proses pemantauan log, tekan Ctrl + C.
Muat situs Gitlab di browser Anda. Jika Anda mencoba memuatnya terlalu lama setelah memulai penampung, Anda akan mendapatkan kesalahan 502. Jika itu terjadi, tunggu beberapa menit lagi dan coba lagi.
Jika semuanya baik-baik saja, maka Anda akan melihat halaman berikut di browser Anda.
Langkah 8 - Konfigurasi Gitlab
Berikan kata sandi untuk Kata Sandi Administrator Gitlab. Anda akan dibawa ke layar login berikutnya. Gunakan akar sebagai nama pengguna dan sandi yang baru saja Anda pilih untuk masuk.
Konfigurasi SMTP
Kami perlu mengaktifkan pengaturan SMTP sebelum kami
Konfigurasi Profil Gitlab
Klik ikon pengguna di sudut kanan atas untuk membuka menu tarik-turun dan pilih setelan.
Anda akan dibawa ke halaman pengaturan Profil Anda. Tambahkan nama dan email Anda di sini. Anda perlu mengonfirmasi alamat email Anda agar dapat diperbarui. Anda juga dapat menambahkan lebih banyak informasi tentang diri Anda di sini jika Anda mau.
Klik Perbarui Setelan Profil setelah selesai.
Ubah Nama Pengguna
Selanjutnya, kita perlu mengubah nama pengguna kita dari root ke sesuatu yang lain karena root adalah nama pengguna yang cukup umum yang dapat ditebak. Klik Akun di bilah sisi kiri.
Ubah pengguna menjadi nama pengguna apa pun yang ingin Anda pertahankan. Klik Perbarui nama pengguna menyelesaikan. Anda juga harus mengaktifkan autentikasi dua faktor di sini untuk keamanan lebih.
Batasi Pendaftaran Publik
Secara default, instalasi Gitlab memungkinkan siapa saja untuk mendaftar. Jika Anda tidak menginginkannya, Anda harus menonaktifkannya. Klik ikon kunci inggris di bilah atas untuk mengakses area Administrasi.
Untuk menyesuaikan setelan, klik Setelan di bilah sisi kiri.
Di sini, gulir ke bawah ke Pembatasan pendaftaran dan klik tombol Luaskan tombol. Hapus centang Pendaftaran diaktifkan kotak dan klik Simpan perubahan setelah selesai.
Anda masih dapat menambahkan pengguna baru melalui antarmuka Admin.
Tambahkan Kunci SSH
Langkah terakhir adalah menambahkan kunci SSH kami. Jika Anda memiliki kunci SSH, Anda dapat melewati perintah berikut. Jika Anda tidak memilikinya, Anda dapat membuatnya menggunakan perintah berikut.
$ ssh-keygen
Perintah ini umum untuk Mac OS, Linux dan Git Bash/WSL di Windows. Terima default dan biarkan bidang frasa sandi kosong.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=.. |
|B+o+o+oo+ |
|oo.+. ...= . |
|. + .. .o+ |
| o *. S . |
| =Eo . o |
| . o o o |
| . o |
| |
+----[SHA256]-----+
Anda dapat menampilkan kunci publik Anda melalui perintah berikut
$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]
Kembali ke area Pengaturan Profil Anda dan akses kunci SSH dari bilah sisi.
Rekatkan kunci SSH di kotak yang disediakan dan klik Tambah Kunci untuk melanjutkan.
Sekarang Anda dapat membuat dan berkomitmen ke repositori Anda tanpa harus memberikan kredensial Gitlab Anda.
Langkah 9 - Buat Proyek Pertama Anda
Setiap repositori di Gitlab milik sebuah proyek. Sebuah proyek mencakup repositori, pelacak masalah, permintaan gabungan, wiki, integrasi berkelanjutan dan saluran pengiriman berkelanjutan (CI/CD), dan banyak fitur lainnya.
Untuk membuat repositori pertama Anda, klik Buat proyek .
Anda akan dibawa ke halaman Proyek Baru. Masukkan nama proyek. Anda dapat mengubah siput proyek menjadi sesuatu yang berbeda. Masukkan deskripsi proyek jika Anda suka dan ubah visibilitas proyek sesuai keinginan. Anda dapat Menginisialisasi repositori Anda dengan file README. Setelah selesai, klik Buat proyek .
Anda akan dibawa ke halaman repositori hanya dengan satu file README.md kosong.
Sekarang setelah repositori kita aktif, mari kita coba menambahkan changelog dari baris perintah.
Masukkan perintah berikut di komputer Anda untuk membuat file CHANGELOG dan dorong kembali ke repositori Anda. Pastikan Anda telah menginstal Git di komputer Anda.
Mengkloning repositori. Anda dapat mengkloning menggunakan SSH atau HTTPS.
Kloning menggunakan SSH.
$ git clone [email protected]:user/howtoforge-test.git
atau Klon menggunakan HTTPS.
$ git clone https://gitlab.example.com/user/howtoforge-test.git
Masukkan sisa perintah untuk membuat dan menekan CHANGELOG.
$ cd howtoforge-test
$ touch CHANGELOG # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master
Langkah 10 - Kelola Penampung Gitlab
Untuk melihat semua container yang sedang berjalan, jalankan perintah berikut.
$ docker-ps
Untuk menghentikan penampung Gitlab Anda, jalankan perintah berikut.
$ docker stop gitlab-howtoforge-tutorial
Untuk memulai penampung Anda lagi, gunakan perintah berikut.
$ docker start gitlab-howtoforge-tutorial
Jika Anda ingin menghapus wadah Anda, Anda dapat melakukannya dengan perintah berikut.
$ docker container rm gitlab-howtoforge-tutorial
Langkah 11 - Tingkatkan Gitlab
Jika Anda ingin memutakhirkan Gitlab ke versi terbaru, Anda harus menghentikan dan menghapus penampung yang ada, menarik gambar terbaru, lalu membuat ulang penampung.
$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d
Dan sebelum Anda bertanya, data Anda akan aman meskipun Anda melepas wadahnya.
Ini menyimpulkan tutorial kami tentang pengaturan Gitlab di server Ubuntu 18.04 menggunakan Docker. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.