Ketika berhubungan dengan Git hosting, Anda memiliki sejumlah opsi yang tersedia. GitHub, Gitlab dan Bitbucket adalah solusi populer, tetapi menjalankan Git server Anda sendiri merupakan alternatif yang patut dipertimbangkan.

Menyiapkan Git Server memungkinkan Anda membuat repositori pribadi tanpa batasan “free plans” dari pihak penyedia.

Dalam panduan ini, kami akan menjelaskan cara menyiapkan Git server di Linux. Pengaturan ini bagus jika Anda memiliki sedikit repositori dan kolaboratornya mengerti teknologi. Jika tidak, Anda harus mempertimbangkan untuk menginstal aplikasi git self-hosted seperti Gitea, Gogs, atau Gitlab.

Git Server dapat diatur pada mesin Linux jarak jauh atau bahkan pada sistem lokal Anda.

Setting Git Server

Langkah pertama adalah menginstal Git di server Anda.

Jika Anda menggunakan Debian atau Ubuntu, segarkan indeks paket lokal dan instal git dengan menjalankan perintah berikut sebagai user sudo:

sudo apt update && sudo apt install git

Untuk menginstal paket git pada server CentOS ketik:

sudo yum install git

Selanjutnya, buat pengguna baru yang akan mengelola repositori Git:

sudo useradd -r -m -U -d /home/git -s /bin/bash git

Direktori home user diatur ke /home/git. Semua repositori akan disimpan di bawah direktori ini. Kita tidak menetapkan kata sandi untuk user “git”, login hanya dimungkinkan menggunakan ssh key.

Beralih ke user “git” menggunakan perintah su:

sudo su - git

Jalankan perintah berikut untuk membuat direktori SSH dan mengatur izin yang benar:

mkdir -p ~/.ssh && chmod 0700 ~/.ssh

Buat file bernama ~/.ssh/authorized_keys yang akan menampung SSH keys pengguna yang diotorisasi:

touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys

Pengaturan server selesai. Anda sekarang siap untuk membuat repositori Git pertama Anda.

Jalankan perintah berikut untuk memulai repositori kosong baru:

git init --bare ~/projectname.git

Anda dapat memberi nama direktori yang Anda inginkan. Yang penting adalah membuat repositori di bawah direktori home user “git”.

Initialized empty Git repository in /home/git/projectname.git/

Konfigurasi Lokal Git Repository

Untuk dapat push perubahan git lokal ke server Git, Anda harus menambahkan public key SSH user lokal Anda ke file “authorized_keys” pengguna jarak jauh git.

Jika Anda telah membuat SSH key pair di sistem lokal Anda, Anda dapat menampilkan public key dengan mengetik:

cat ~/.ssh/id_rsa.pub

Outputnya akan terlihat seperti berikut

ssh-rsa AAAAB3NzaC1yc2EAAAADAQAABAACAQDd/mnMzHwjUzK8g3ldfsfRpJuC16mhWamaXRk8ySQrD/dzpbRLfDnZsLxCzRoq+ZzFHGwcQlJergtergdHGRrO8FE5jl3IWRRp+mP12qYw== [email protected]

Jika Anda mendapatkan pesan error yang mengatakan No such file or directory, itu berarti Anda tidak memiliki SSH key pair yang dihasilkan pada mesin lokal Anda.

Untuk menghasilkan SSH key pair baru gunakan perintah berikut:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Salin output dari perintah cat di atas dan kembali ke konsol Git server.

Di server, buka teks editor Anda dan paste public key yang Anda salin dari mesin lokal Anda ke file ~/.ssh/authorized_keys:

sudo nano /home/git/.ssh/authorized_keys

Seluruh teks public key harus dalam satu baris.

Kita berasumsi bahwa paket Git sudah diinstal pada mesin lokal Anda. Jika tidak, instal dengan cara yang sama seperti yang dijelaskan di bagian sebelumnya.

Jika Anda memiliki proyek tidak berversi yang ada, navigasikan ke direktori proyek. Jika Anda memulai dari awal, buat direktori proyek, dan arahkan ke sana:

cd /path/to/local/project

Inisialisasi repositori git:

git init .

Langkah terakhir adalah menambahkan git remote ke repositori lokal Anda:

git remote add origin git@git_server_ip:projectname.git

Jangan lupa untuk mengganti git_server_ip dengan hostname atau alamat IP server Git Anda.

Untuk memverifikasi bahwa semuanya diatur dengan benar, buat file untuk testing:

touch test_file

Tambahkan perubahan ke staging area

git add .

Commit perubahan:

git commit -m "descriptive message"

Push perubahan repositori lokal ke repositori jarak jauh:

git push -u origin master

Jika semuanya sudah diatur dengan benar, output akan terlihat seperti ini:

Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git_server_ip:projectname.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

Untuk menambahkan kolaborator baru, cukup salin public SSH key ke file user  “git” di ~/.ssh/authorized_keys.

Anda dapat menggunakan langkah-langkah yang sama untuk membuat repositori baru. Penting untuk dicatat bahwa repositori jarak jauh harus ada sebelum Anda menambahkan remote git ke repositori lokal Anda.

Kesimpulan

Dalam tutorial ini, kita telah menunjukkan kepada Anda cara mengatur Git server pribadi Anda dan membuat repositori.