Skip to main content
  1. Posts/

Membangun Git Server Sendiri dengan Gitea

·3 mins·
gitea git gitea
Table of Contents

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
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

Cari baris Port dan ubah nilainya, misalnya menjadi:

Port 2222

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

2. Verifikasi Instalasi
#

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

docker version

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

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

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

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

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

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

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

Referensi:

Related

Menjalankan GitHub Actions Secara Lokal dengan Act
·1 min
git git
Configuring Git Push Notifications on Telegram
·2 mins
git git
Auto Deployment on cPanel Using Github Actions
·2 mins
cpanel cpanel git
Implementasi Git Deployment di cPanel
·3 mins
cpanel cpanel git
Memahami Format XML Domain Libvirt
·41 mins
libvirt libvirt kvm
Setup WireGuard VPN
·3 mins
wireguard wireguard vpn