DEV Community

Cover image for Membangun Git Server Sendiri dengan Gitea
erfandwi
erfandwi

Posted on

Membangun Git Server Sendiri dengan Gitea

Gitea adalah layanan manajemen kode sumber (source code management) berbasis Git, mirip seperti GitHub, GitLab, atau Bitbucket. Bedanya, Gitea bersifat ringan, open-source, dan dapat di-hosting secara mandiri (self-hosted).
Gitea bisa diinstal menggunakan binary, Docker, atau package manager, serta mendukung berbagai platform seperti Windows, macOS, Linux, ARM, dan lainnya.

Dalam panduan ini, kita akan menginstal Gitea menggunakan Docker, agar memudahkan instalasi runner untuk menjalankan action pipelines.

Persiapan

1. Membuat User Git

Buat user baru khusus untuk Git dengan perintah berikut:

adduser --shell /bin/bash --disabled-password --home /home/git git
Enter fullscreen mode Exit fullscreen mode

Jika server Anda memiliki user dengan UID 1000, sebaiknya hapus user tersebut terlebih dahulu dan pastikan user itu tidak digunakan untuk login ke server.

2. Mengubah Port Default SSH

Untuk menghindari konflik, ubah port SSH standar sehingga port 22 dapat digunakan untuk layanan Git. Edit konfigurasi SSH:

nano /etc/ssh/sshd_config
Enter fullscreen mode Exit fullscreen mode

Cari baris Port dan ubah nilainya, misalnya menjadi:

Port 2222
Enter fullscreen mode Exit fullscreen mode

Simpan perubahan dan restart layanan SSH agar konfigurasi baru diterapkan.

Instalasi Docker

1. Menginstal Docker

Gunakan perintah berikut untuk menginstal Docker:

curl -L get.docker.com | sh
Enter fullscreen mode Exit fullscreen mode

2. Verifikasi Instalasi

Setelah instalasi selesai, verifikasi bahwa Docker telah terinstal dengan menjalankan:

docker version
Enter fullscreen mode Exit fullscreen mode

Jika informasi versi Docker muncul, berarti instalasi berhasil.

Instalasi Gitea

1. Membuat Folder Gitea

Buat folder untuk menyimpan file docker-compose.yml:

mkdir gitea
cd gitea
Enter fullscreen mode Exit fullscreen mode

2. Menyiapkan Docker Compose

Buat file docker-compose.yml dan isi dengan konfigurasi berikut:

networks:
  gitea:
    driver: bridge

services:
  gitea:
    image: docker.gitea.com/gitea:1.23.6
    container_name: gitea
    environment:
      USER_UID: 1000
      USER_GID: 1000
      GITEA__database__DB_TYPE: postgres
      GITEA__database__HOST: db:5432
      GITEA__database__NAME: gitea
      GITEA__database__USER: gitea
      GITEA__database__PASSWD: gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea/ssh:/data/ssh
      - /home/git/.ssh:/data/git/.ssh
      - /home/git/repositories:/data/git/repositories
      - /home/git/lfs:/data/git/lfs
      - /home/git/gitea:/data/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "80:3000"
      - "22:22"
    depends_on:
      - db

  db:
    image: postgres:14
    container_name: gitea_db
    restart: always
    environment:
      POSTGRES_USER: gitea
      POSTGRES_PASSWORD: gitea
      POSTGRES_DB: gitea
    networks:
      - gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

  runner:
    image: gitea/act_runner
    container_name: gitea_runner
    links:
      - docker-in-docker
    restart: unless-stopped
    privileged: true
    depends_on:
      gitea:
        condition: service_started
      docker-in-docker:
        condition: service_started
    volumes:
      - ./data/act_runner:/data
    environment:
      GITEA_INSTANCE_URL: http://<IP_or_domain>
      DOCKER_HOST: tcp://docker-in-docker:2375
      GITEA_RUNNER_REGISTRATION_TOKEN: <registration_token>

  docker-in-docker:
    image: docker:dind
    container_name: docker_dind
    privileged: true
    command:
      - dockerd
      - -H
      - tcp://0.0.0.0:2375
      - --tls=false
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

Catatan:
Jangan lupa mengganti <IP_or_domain> dan <registration_token> sesuai dengan server Anda.
Jika memungkinkan, disarankan untuk memisahkan runner dan docker-in-docker ke server atau mesin berbeda dari Gitea.
Tujuannya adalah untuk menjaga performa Gitea tetap optimal, terutama saat runner menjalankan proses build yang berat.

3. Menjalankan Gitea

Setelah konfigurasi selesai, jalankan Gitea menggunakan perintah:

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

4. Setup Gitea Melalui Browser

Buka browser dan akses http://<IP_or_domain>, kemudian ikuti langkah-langkah setup Gitea.

Setup Gitea

Pada tahap setup, Anda dapat membuat akun administrator.

Create Admin Account

Setelah proses instalasi selesai, Anda sudah bisa mulai membuat repository pertama Anda.

Setup Selesai

Instalasi Gitea Runner

1. Mendapatkan Registration Token

Untuk mendapatkan Registration Token, buka URL berikut melalui browser:

http://<IP_or_domain>/-/admin/actions/runners
Enter fullscreen mode Exit fullscreen mode

Kemudian klik tombol Create new Runner.

Create Token

Salin token yang telah dibuat.

2. Menambahkan Token ke Docker Compose

Tambahkan token tersebut ke bagian environment pada service runner di file docker-compose.yml. Contohnya:

    environment:
      - GITEA_INSTANCE_URL=http://<IP_or_domain>
      - DOCKER_HOST=unix:///var/run/docker.sock
      - GITEA_RUNNER_REGISTRATION_TOKEN=88EineyRnUIbT6IN1YDoNB1KBq2eL3QhxZLMqPaL
Enter fullscreen mode Exit fullscreen mode

Catatan:
Pastikan Anda mengganti <IP_or_domain> dan GITEA_RUNNER_REGISTRATION_TOKEN dengan nilai yang sesuai.

3. Restart Gitea

Setelah menambahkan token di file docker-compose.yml, restart Gitea dengan perintah:

docker compose down
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

4. Verifikasi Registrasi Runner

Jika token berhasil diregistrasikan, runner akan muncul di daftar seperti gambar berikut:

Runner Terdaftar

Jika runner belum muncul, Anda bisa mencoba me-restart container runner:

docker compose restart
Enter fullscreen mode Exit fullscreen mode

Top comments (0)