Note
Gitea yang saya gunakan Gitea v1.22.1
, Server VPS Hostinger
-> OS Ubuntu 22.04
, Domain Management Cloudflare
.
Anda harus, bahkan WAJIB! mengerti cara mengoperasikan Git.
Akan sangat berguna jika anda sudah paham Github Actions.
Saya menjalankan semua perintah ini sebagai root
, jadi jika anda masih login sebagai user biasa diharap login sebagai root
terlebih dahulu.
apt update && apt upgrade -y && apt install git -y
adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Important
Catat UID dan GUID yang dihasilkan dari membuat user git
Untuk memastikan docker di install dengan bersih, harap clear installation docker dengan menjalankan :
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Dan Panduan installasi docker bisa diikuti dari dokumentasi resmi docker Disini
Docker manager ini bertujuan agar tidak perlu menggunakan CLI lagi, tidak perlu khawatir didalam Docker Manager ini juga terdapat fitur CLI, docker manager yang saya gunakan adalah dockge
yang dapat anda temukan Disini Dan untuk Installasinya ada Disini Atau bisa langsung mengikuti code ini :
Note
Saya sarankan tetap rujuk repositori aslinya untuk mendapat update terbaru
# Create directories that store your stacks and stores Dockge's stack
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
# Download the compose.yaml
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
# Start the server
docker compose up -d
# If you are using docker-compose V1 or Podman
# docker-compose up -d
Jika anda tidak mengubah port pada file compose.yaml
maka dockge akan berjalan di IP:5001
Atau localhost:5001
. Buat username dan password(harus unik) untuk admin dan klik tombol Create.
- Installasi dockge selesai.
Note
Jika anda tidak memiliki domain bisa lewati langkah ini.
Installasi nginx di server langsung sebenarnya tidak di rekomendasikan, demi keamanan lebih baik install di docker sebagai reverse_proxy
. Dalam hal ini saya akan menggunakan tool Nginx Proxy Manager yang dapat anda temukan Disini
-
Login ke
dockge
yang baru anda install -
Klik tombol
+ Compose
atau+ Menyusun
-
Copy dan Paste code dibawah ini pada kolom
compose.yaml
diatas kolom.env
:services: app: image: 'docker.io/jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' network_mode: host # tambahan agar bisa menggunakan "localhost" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
Note
Tambahkan network_mode: host
agar saat membuat proxy bisa menggunakan localhost
cek solusi yang saya temukan disini
- Klik Tombol
Deploy
atauTerapkan
- Lalu buka di browser
IP:81
ataulocalhost:81
Email dan Password Dockge biasanya[email protected]
dengan passchangeme
, Sekali lagi baca dokumentasi resmi dari repository Nginx Proxy Manager.
- Buat domain anda mengarah ke IP public anda saya disini memakai contoh
domain.com
sebagai root domain. - Setelah anda berhasil masuk ke Nginx Proxy Manager Klik Menu
Host
->Proxy Hosts
->Add Proxy Host
. - Di Tab
Details
isikan Domain Names dengan subdomain yang anda buat contohdockge.domain.com
. Pada kolomForward Hostname / IP
isikanlocalhost
, Pada kolomForward Port
isikan port dari installasidockge
yaitu di port5001
. AktifkanCache Assets
danBlock Common Exploits
. - Pindah ke Tab
SSL
pilihRequest a new SSL Certificate
, AktifkanForce SSL
,HTTP/2 Support
,HSTS Enabled
,I Agree to the Let's Encrypt Terms of Service
. dan jangan lupa isikan email. - Klik simpan dan tunggu proses selesai, lalu buka domain
dockge.domain.com
. - Buat juga subdomain untuk
gitea
, contohgit.domain.com
, ikuti dari awal langkah Uji Domain - Done
-
Pertama kita login sebagai user
git
yang sudah kita buat di awal dengan carasu git
. -
Buat direktori dan file
docker-compose.yml
:mkdir /home/git/gitea && nano /home/git/gitea/docker-compose.yml
-
Copy dan Paste code dibawah ini pada file
docker-compose.yml
, Jangan lupa untuk menggantiUSER_UID
danUSER_GUID
, ganti dengan UID dan GUID dari hasil kita membuat usergit
diatasnetworks: gitea: external: false volumes: gitea: driver: local data: services: server: image: gitea/gitea:1 container_name: gitea environment: - USER_UID=UID - USER_GID=GUID/GID - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=giteaZr restart: always networks: - gitea volumes: - gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "8080:3000" - "2221:22" depends_on: - db db: image: mariadb restart: always command: mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_bin environment: - MYSQL_ROOT_PASSWORD=giteaZr - MYSQL_USER=gitea - MYSQL_PASSWORD=giteaZr - MYSQL_DATABASE=gitea networks: - gitea volumes: - data:/var/lib/mysql ports: - "3306:3306"
Caution
Jika installasi anda dengan tujuan Productions diharap untuk merubah environment
pada kode diatas.
-
Lalu kita jalankan kode diatas untuk membuat Container pada docker dengan cara :
exit && cd /home/git/gitea/ && docker compose up -d
-
Buka
ip:8080
ataulocalhost:8080
di browser (Masukkan domain jika menggunakan domain) buat user admin dan install gitea. -
Installasi Gitea selesai.
Warning
Jika anda menggunakan Domain sebelum memulai act_runner
pastikan url dari gitea
anda sudah benar, masuk ke halaman admin pada web gitea.
Pada saat anda login sebagai admin di gitea web akan ada peringatan ketidak sesuaian ROOT_URL, Edit ROOT_URL yang semula http://git.domain.com/
menjadi https://git.domain.com/
dengan cara ikuti langkah ini, atau langsung dibawah ini:
nano /var/lib/docker/volumes/gitea_gitea/_data/gitea/conf/app.ini
# restart container gitea
docker container restart gitea
Gitea act_runner
adalah pelari actions atau library untuk menguji aplikasi agar bisa di deploy ke docker. act_runner
dapat anda temukan disini, installasi yang saya gunakan dari sini, sebagai contoh dari saya :
-
Buka terminal dan login sebagai
root
-
Jalankan perintah berikut :
docker run -e GITEA_INSTANCE_URL=https://git.domain.com -e GITEA_RUNNER_REGISTRATION_TOKEN=<your_token> -v /var/run/docker.sock:/var/run/docker.sock --name my_runner --restart always gitea/act_runner:nightly
Note
GITEA_INSTANCE_URL
-> Diisi url ke git andaGITEA_RUNNER_REGISTRATION_TOKEN
-> Diisi dengan token yang didapat dari
git.domain.com/user/settings/actions/runners
->Create New Runner
(Untuk alasan keamanan disarankan untuk tidak mengambil dari admin web karna semua pengguna git tanpa terkecuali akan bisa menggunakanact_runner
)--name my_runner
Nama Container docker
-
Selanjutnya lihat ke halaman web gitea
git.domain.com/user/settings/actions/runners
jika pada kolom status tidakidle
maka jalankan perintah berikut:docker container start my_runner
-
Lihat kembali pada halaman runner jika sudah berstatus idle maka runners sudah siap digunakan.
-
Buat dan Clone Repository anda
-
Jika meminta username dan password masukkan username dan password saat anda akan login ke gitea.
-
Setelah berhasil clone repository anda, buat folder
nama-repositori/.gitea/workflows
dan buat file berektensi.yaml
contoh:myrepository/.gitea/workflows/runner.yaml
dan isi file.yaml
dengan text :name: Gitea Actions Demo run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 on: [push] jobs: Explore-Gitea-Actions: runs-on: ubuntu-latest steps: - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event." - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!" - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." - name: Check out repository code uses: actions/checkout@v4 - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner." - run: echo "🖥️ The workflow is now ready to test your code on the runner." - name: List files in the repository run: | ls ${{ gitea.workspace }} - run: echo "🍏 This job's status is ${{ job.status }}."
-
Simpan dan push ke repository anda kemudian lihat di halaman actions di repository anda, maka akan tampil runner yang sedang berjalan.
-
Done, sekarang
Gitea Actions
siap digunakan.
Note
Jika anda sudah menginstall act_runner
di docker tidak perlu menjalankan perintah docker run
lagi cukup jalankan:
# daftarkan repository atau user untuk menjalankan ac_runner
docker exec my_runner act_runner register --instance https://git.domain.com --token <your_token> --no-interactive --name name_of_runner
# jika statusnya offline jalankan perintah
docker exec my_runner act_runner daemon
-
Buat aplikasi VueJs dengan contoh nama folder
myvue
, Langka-langkah pembuatan aplikasi VueJs bisa ditemukan disini. -
Buat folder
/myvue/.gitea/wokflows/
dan isi dengan filerunner.yaml
. -
Copy dan Paste kode dibawah ini (Ganti
git.domain.com
dengan domain anda sendiri atau IP Lokal anda):name: Build And Push run-name: ${{ gitea.actor }} is runs ci pipeline on: [ push ] jobs: build-push: runs-on: ubuntu-latest env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Checkout - uses: https://github.com/actions/checkout@v4 - name: Use Node.js uses: https://github.com/actions/setup-node@v4 with: node-version: '20.15.0' - run: npm install - run: npm run build env: NODE_OPTIONS: --max_old_space_size=4096 - name: Set up Docker Buildx uses: https://github.com/docker/setup-buildx-action@v3 with: config-inline: | [registry."git.domain.com"] http = true insecure = true - name: Login to DockerHub uses: docker/login-action@v2 with: registry: git.domain.com username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT - name: Build and push Docker image uses: https://github.com/docker/build-push-action@v5 with: context: . file: ./Dockerfile push: true tags: "git.domain.com/${{ secrets.DOCKER_USERNAME }}/${{steps.meta.outputs.REPO_NAME}}:latest"
-
Simpan file
runner.yaml
tadi. -
Kemudian buat file bernama
Dockerfile
tanpa ekstensi di folder/myvue/
, Copy dan Paste kode dibawah ini:# build stage FROM node:lts-alpine as build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # production stage FROM nginx:stable-alpine as production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
-
Simpan file
Dockerfile
tadi. -
Sebelum menjalankan push ke repository anda silahkan pergi ke Setting repository anda
git.domain.com/{nama-user}/{nama-repository}/settings/actions/secrets
dan setting variable secrets untuk mengisi environment pada filerunner.yaml
anda, klikadd secret
isi:Name Value DOCKER_USERNAME Username_Login_Gitea DOCKER_PASSWORD Password_Login_Gitea -
Jika sudah disetting silahkan push repository anda.
-
Kemudian Silahkan cek halaman
git.domain.com/{nama-user}/{nama-repository}/actions
maka akan tampil halamanact_runner
berjalan membuildDocker Container
. -
Jika Gitea Actions telah berhasil silahkan lihat ke halaman
git.domain.com/{nama-user}/-/packages
. -
Klik package yang sudah di deploy tadi kemudian copy setelah text
docker pull
menjadi contohgit.domain.com/human/reponame:latest
. -
Login ke dockge yang sudah di buat di awal, paste pada kolom
run docker
tambahkan text yang di copy tadi menjadi
docker run -d --name mycontainer --publish 8088:80 git.domain.com/human/reponame:latest
lalu klikchange to stack
lalu klikdeploy
-
Jika proses deploy sudah berhasil silahkan cek ke browser dengan alamat
IP:8088
ataulocalhost:8088
, Jika membuat nama domain yang mengarah ke aplikasi VueJs yang anda buat tadi ikuti langkah Uji Coba Domain diatas. -
Done.
Note
Kustomisasi ini ditujukan untuk Gitea yang terinstall di docker sebagai container.
Jika anda menginstall tanpa docker lokasi foldernya ada di /var/lib/gitea/custom
silahkan baca dokumentasi lengkap gitea tentang Customizing Gitea
-
Langkah pertama login ssh ke server anda.
-
Install text editor
nano
di container gitea:# Masuk bash container gitea sebagai root docker exec -it gitea bash # Update repo apk update # Install Nano apk add nano # Keluar dari user root exit
-
Masuk ke
bash
Container gitea sebagai usergit
dengan cara:docker exec -u git -it gitea bash
-
Jika konfigurasi
volume
pada saat installasi gitea tidak diubah maka seharusnya direktori yang digunakan adalahdata/gitea
silahkan arahkan terminal ke direktoridata/gitea
:cd data/gitea
-
Buat direktori baru untuk gambar dan template website gitea yang akan digunakan untuk kustomisasi halaman gitea web:
mkdir public && mkdir public/assets && mkdir public/assets/img && mkdir templates && cd public/assets/img
-
Pastikan anda sudah berada di dalam direktori
data/gitea/public/assets/img
dan download gambar untuk dijadikan logo, di sini saya memakai contoh logo Github:wget https://github.com/fluidicon.png
-
Jika sudah di download silahkan coba akses gambar tadi dari web gitea anda dengan cara buka url
https://git.domain.com/assets/img/fluidicon.png
, Maka akan terlihat logo yang sudah di download tadi. -
Untuk mengubah logo pada landing page web gitea, anda harus mengunduh file template yang sudah disediakan oleh gitea melalui link ini.
-
Klik pada file home.tmpl, lalu Klik tombol
raw
di pojok kanan atas pada halaman editor github dan setelah terbuka copy urlnya gunakanwget
untuk mendownload file template tadi. -
Sebelum mengunduh pastikan anda sudah berada dalam directori
data/gitea/templates
lalu jalankan perintah berikut:wget https://raw.githubusercontent.com/go-gitea/gitea/main/templates/home.tmpl
-
Edit file
home.tmpl
yang sudah di download tadi:nano home.tmpl
-
Cari tag
<img>
dan ganti nama file image dengan yang anda download tadi contohfluidicon.png
menjadi :<img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/img/fluidicon.png" alt="{{ctx.Locale.Tr "logo"}}">
-
Jika sudah simpan dan restart container gitea :
docker container restart gitea
-
Kemudian reload web gitea, Done gambar sudah berubah.
Note
Untuk merubah halaman lain atau navbar dsb. sesuaikan dengan struktur folder yang ada di github gitea templates.
file template untuk icon navbar adalah base/head_navbar.tmpl
file template untuk tab icon adalah base/head.tmpl
Selain semua installasi diatas anda juga dapat menambahkan autoupdate container
untuk membuat container selalu update jika ada perubahan pada file container yang ada di gitea, dan juga autobackuper
.
Sekian Terimakasih