1040 kata
5 menit
Deploy Service Go Ke Vps Dengan Resource Kecil

Deploy Service Go ke VPS dengan Resource Terbatas menggunakan Docker dan GitHub Actions, Emang Bisa?#

Sebagian developer sangat ingin membuat sesuatu, tapi kadang terkendala dengan resource server yang terbatas seperti dengan spesifikasi server 1GB Ram 1 Core CPU, betul kan? hehe.

Di sini, aku akan coba membahas cara mengakali keterbatasan tersebut agar service yang dibuat tetap bisa dijalankan di VPS, tanpa harus membebani server saat build. Caranya adalah dengan memanfaatkan Docker Hub untuk menyimpan image, dan GitHub Actions untuk otomatisasi build & push image.

Github Actions Screenshot

Dengan pendekatan ini:

  • Build service dilakukan di GitHub Actions (bukan di VPS), sehingga VPS tidak perlu resource besar.
  • VPS hanya melakukan pull image terbaru dan menjalankannya menggunakan Docker.
  • Proses deployment menjadi lebih cepat dan konsisten.

Blog ini akan memandumu langkah demi langkah, mulai dari setup project dan workflow dengan github action, membuat repository untuk meyimpan hasil build image di docker hub, sampai setting up worfklow untuk pulling image dari docker hub ke VPS.

tapi sebelum mulai, kamu mungkin perlu tau kenapa harus menggunakan github action? dan apa aja sih kekurangannya menggunakan github action ini?

Kenapa Menggunakan GitHub Actions?#

  • Terintegrasi langsung dengan GitHub: Tidak perlu layanan CI/CD pihak ketiga. Semua bisa dijalankan langsung dari repo kamu, jadi kamu tidak perlu mengubah kodenya lagi di berbagai platform.

  • Automatisasi penuh: Bisa otomatis build, test, push image, deploy ke server atau cloud.

  • Workflow yang fleksibel: Bisa menentukan event trigger, branch, atau manual dispatch.

  • Gratis untuk repositori publik: Menyediakan kuota cukup untuk project hobby mu atau sekedar untuk projek skala kecil dan menegah.

  • Mudah dibagikan: Workflow bisa digunakan ulang atau dibagi ke repo lain jika orang tesebut memiliki akses ke repo mu.

  • Banyak action dan tool yang tersedia: Github Telah Menyediakan Marketplace untuk berbagai tool dan action yang bisa digunakan.

  • Notifikasi & monitoring: Bisa menerima notifikasi sukses/gagal langsung ke email yang terdaftar dari github mu dan memonitor log build.

Kekurangan Menggunakan GitHub Actions#

  • Kuota terbatas untuk private repo: Gratisan untuk private repo punya batasan menit eksekusi per bulan.

  • Kurang fleksibel untuk server internal: Deploy ke server di network lokal kadang perlu setup tambahan (SSH, firewall, dsb).

  • Debugging bisa tricky: Log Actions cukup jelas, tapi jika ada error di step tertentu, kadang perlu trial & error.

  • Tergantung GitHub: Kalau GitHub down atau ada maintenance, workflow akan berhenti sementara.

Apa Yang Diperlukan Untuk Tutorial Kali Ini?#

  • Repository github yang sudah memiliki dockerfile / docker compose

  • Akun Docker Hub

  • Dan server / vps untuk deployment service

Langsung Gass Kita Coba#

Yang pertama pastikan kamu udah buat akun untuk docker hub, kalo belum bisa buatnya klik disini ketika sudah berada di dashboard cari bagian repository dan klik Create Repository dan isikan nama repository nya lalu klik Create Repository.

setelah itu kita harus membuat secret docker hub, klik pada bagian avatar -? di bagian atas -> Settings -> Secrets dan klik Personal Access Tokens lalu klik New Token dan isikan nama token nya dan token yang dihasilkan, klik Create Token setelah token terbuat copy secret nya.

Setting Up Environtment repo#

Yang kedua disini kita harus set env secret di github, dari halaman projek repository mu klik Settings And Variable -> Actions -> Repository Secrets dan klik New repository secret lalu isikan secret berikut sesuai dengan yang kamu punya:

Secret NameDeskripsi
DOCKER_USERNAMEUsername Docker Hub kamu
DOCKER_SECRETToken / password Docker Hub (disarankan gunakan token)
VPS_HOSTIP atau hostname VPS
VPS_PORTPort SSH untuk login VPS (contoh: 22)
VPS_USERUser SSH untuk login VPS (contoh: root)
VPS_SSH_KEYPrivate key untuk SSH (disimpan di GitHub Secrets)

Setting Up Workflow#

Disini kita buat dulu workflow di github action untuk membuild docker compose kita untuk pushing result build image nya ke docker hub, dan pulling image ke instance/vps pastiin dulu kalo repo mu udah ada docker-compose.yml nya yaaa~

dari tampilan repositori mu sekarang klik Actions dibagian atas kanan -> New Workflow dan isikan kode berikut:

build.yml

name: Build and Push to Docker Hub
on:
push:
branches: ["main"]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.24.2"
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Install dependencies
run: go mod tidy
- name: Log in to Docker Hub
run: echo "${{ secrets.DOCKER_SECRET }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Build Docker image
run: docker build -t ${{ secrets.DOCKER_USERNAME }}/namarepo-dockerhubmu:latest .
- name: Push Docker image
run: docker push ${{ secrets.DOCKER_USERNAME }}/namarepo-dockerhubmu:latest

kode diatas adalah template workflow yang kita gunakan untuk build service kita ke docker image di instance github action yang nantinya akan di push ke docker hub sebagai media penyimpanan image dan share image antar platform.

oiya sebelum lanjut ke kode dibawah, pastikan kamu udah setting up repository project mu ke vps/instance dengan directory yang udah kamu tentukan dan pastikan juga kamu udah menginstall docker dan docker compose di server mu.

pull.yml

name: Deploy via SSH
on:
workflow_run:
workflows: ["Build and Push to Docker Hub"]
types:
- completed
jobs:
deploy:
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
steps:
- name: Deploy to VPS via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
port: ${{ secrets.VPS_PORT }}
script: |
cd /root/yourprojectrepo
# Pull Latest Code From Github
git pull origin main
# Pull latest image from Docker Hub
docker compose pull
# Stop and remove running containers
docker compose down
# Rebuild and start services with latest image
docker compose up -d --remove-orphans

Seperti sebelumnya, kode diatas adalah template workflow yang kita gunakan untuk pulling image terbaru dari docker hub ke instance VPS yang nantinya akan di run dengan docker compose.

Finishing Up#

Nah akhirnya kita udah sampai ke proses terakhir, disini kita bisa coba update repo mu untuk melihat hasil build dan deployment yang udah kita buat tadi sambil lihat docker logs nya jikalau ada yang belum sesuai bisa di perbaiki kembali :)

Kalau semua step udah jalan mulus, berarti kamu sekarang udah punya alur CI/CD sederhana yang bisa dipakai bahkan di VPS dengan resource terbatas 🎉.

Langkah selanjutnya, kamu bisa:

  • Menambahkan service lain ke dalam docker-compose.yml.
  • Setup notifikasi (misalnya ke Discord/Telegram) untuk tahu kalau deploy sukses/gagal.
  • Optimasi Docker image supaya lebih kecil dan cepat ditarik di server.

Dengan cara ini, kamu nggak perlu lagi build langsung di VPS, cukup push code ke GitHub dan biarkan workflow yang urus deploymentmu :)

Akhir kata, Jikalau ada kesalahan atau ada yang ingin di tanyakan pada blog ini jangan ragu untuk menghubungi ku via dm di social media yang udah ku tampilkan, sekian :)

Deploy Service Go Ke Vps Dengan Resource Kecil
https://fuwari.vercel.app/posts/deploy-cicd-on-minimum-resource/
Penulis
Epul Dev
Diterbitkan pada
2025-09-07
Lisensi
CC BY-NC-SA 4.0