วิธีตั้งค่าและใช้ GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวเพื่อทำอัตโนมัติการทดสอบและดีพลอยโค้ดอย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีตั้งค่าและใช้ GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวเพื่อทำอัตโนมัติการทดสอบและดีพลอยโค้ดอย่างปลอดภัย

⚡ สรุป 30 วิ

GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวช่วยให้คุณทำ **การทดสอบอัตโนมัติ** และ **ดีพลอยโค้ด** อย่างปลอดภัยโดยไม่ต้องพึ่งบริการคลาวด์สาธารณะ บทความนี้จะพาคุณตั้งค่า GitLab, Runner, และ pipeline ขั้นพื้นฐานจนพ…

Overview

GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวช่วยให้คุณทำ การทดสอบอัตโนมัติ และ ดีพลอยโค้ด อย่างปลอดภัยโดยไม่ต้องพึ่งบริการคลาวด์สาธารณะ บทความนี้จะพาคุณตั้งค่า GitLab, Runner, และ pipeline ขั้นพื้นฐานจนพร้อมใช้งาน

Prerequisites

ก่อนเริ่มต้องตรวจสอบสภาพแวดล้อมพื้นฐานเพื่อให้การติดตั้งราบรื่น

  • เซิร์ฟเวอร์ Linux (Ubuntu 20.04 หรือ CentOS 8) มี CPU ≥ 2 core, RAM ≥ 4 GB, Disk ≥ 20 GB
  • โดเมนหรือ IP ที่เข้าถึงได้จากภายนอก พร้อม TLS/SSL (Let’s Encrypt แนะนำ)
  • Docker หรือ Shell runtime สำหรับ Runner (Docker แนะนำเพื่อความแยกจากระบบ)
  • สิทธิ์ sudo หรือ root บนเซิร์ฟเวอร์

Install GitLab

ติดตั้ง GitLab แบบ Self‑Managed ตามขั้นตอนต่อไปนี้

  • **ขั้นที่ 1: เพิ่ม repository ของ GitLab

```bash curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash ```

  • **ขั้นที่ 2: ติดตั้งแพคเกจพร้อมระบุ URL ของเซิร์ฟเวอร์

```bash sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee ```

  • **ขั้นที่ 3: รอให้ `gitlab-ctl reconfigure` เสร็จแล้วเปิดเว็บเพจเพื่อตั้งค่า admin password
Tip: ตรวจสอบไฟล์ `/etc/gitlab/gitlab.rb` เพื่อเปิดการบังคับใช้ HTTPS** เท่านั้นและปิดการเชื่อมต่อ HTTP

Configure Runner

Runner คือเอเจนต์ที่ทำงานตาม pipeline ต้องลงทะเบียนกับ GitLab ก่อน

  • **ขั้นที่ 1: ติดตั้ง Runner บนเครื่องเดียวกันหรือเครื่องแยก (แนะนำใช้ Docker)

```bash curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-runner ```

  • ขั้นที่ 2: ลงทะเบียน Runner ด้วย token ที่ได้จากหน้า Settings  CI/CD  Runners**

```bash sudo gitlab-runner register ```

  • เลือก executor เป็น `docker` หรือ `shell` ตามความต้องการ
  • ตั้ง tag เช่น `docker-runner` เพื่อระบุในไฟล์ `.gitlab-ci.yml`
  • ขั้นที่ 3: ปรับแต่งไฟล์ `/etc/gitlab-runner/config.toml` ให้ใช้ Docker image ที่ปลอดภัย (เช่น `alpine:latest`) และเปิด protected** runner เพื่อให้เฉพาะ branch ที่ได้รับอนุญาตเท่านั้นที่ใช้ได้

Create .gitlab-ci.yml

ไฟล์นี้บรรยายขั้นตอนของ pipeline ทั้งหมด

```yaml stages:

  • test
  • build
  • deploy

variables: NODE_ENV: "production"

test_job: stage: test image: node:18-alpine script:

  • npm ci
  • npm test

tags:

  • docker-runner

build_job: stage: build image: node:18-alpine script:

  • npm run build

artifacts: paths:

  • dist/

tags:

  • docker-runner

deploy_job: stage: deploy image: alpine:latest script:

  • apk add --no-cache openssh-client
  • ssh $DEPLOY_USER@$DEPLOY_HOST "mkdir -p /var/www/app && rsync -avz --delete dist/ $DEPLOY_USER@$DEPLOY_HOST:/var/www/app/"

only:

  • main

tags:

  • docker-runner

```

  • stages กำหนดลำดับการทำงานจากซ้ายไปขวา
  • variables ใช้เก็บค่าที่ทุก job สามารถเข้าถึงได้
  • artifacts ส่งผลลัพธ์จากขั้น build ไปยังขั้น deploy

Secure Secrets

การเก็บข้อมูลลับต้องทำผ่าน CI/CD Variables ของ GitLab

  • ไปที่ Settings  CI/CD  Variables แล้วเพิ่มค่า
  • `DEPLOY_USER` – ชื่อผู้ใช้ SSH
  • `DEPLOY_HOST` – IP หรือโดเมนของเซิร์ฟเวอร์ปลายทาง
  • `DEPLOY_PRIVATE_KEY` – คีย์ส่วนตัว (เลือก Protected และ Masked)
**Warning: อย่าใส่คีย์ส่วนตัวลงใน `.gitlab-ci.yml` หรือรีโพสิทอรีโดยตรง

Pipeline Stages

การจัดสรรขั้นตอนทำให้ระบบทำงานอย่างมีประสิทธิภาพ

Stageจุดประสงค์ตัวอย่างเครื่องมือ
Testตรวจสอบโค้ดด้วย unit/integration test`npm test`, `pytest`
Buildสร้าง artefact ที่พร้อมดีพลอย`npm run build`, `docker build`
Deployส่ง artefact ไปยังเซิร์ฟเวอร์ปลายทาง`rsync`, `ssh`, `kubectl`
  • ทุก stage ควร run on protected runner เพื่อป้องกันการรันจาก fork หรือ merge request ที่ไม่ได้ตรวจสอบ
  • ใช้ cache หากขั้นตอนบางอย่างต้องการไฟล์เดียวกันซ้ำหลายครั้ง (เช่น `node_modules`)

Common Tips & Pitfalls

  • ใช้ Docker executor เสมอหากต้องการความแยกสภาพแวดล้อม ระวัง image ที่อาจมีช่องโหว่เก่า
  • ตั้งค่า timeout ของ job ให้เหมาะสม (ค่าเริ่มต้น 1 hour) เพื่อหลีกเลี่ยง pipeline ค้างนานเกินไป
  • ตรวจสอบ runner logs (`/var/log/gitlab-runner/`) หาก job ล้มเหลวบ่อยครั้ง
  • หากต้องการ rolling deployment ให้เพิ่ม stage พิเศษที่ทำการตรวจสอบ health ของเซิร์ฟเวอร์หลัง deploy
Tip: ใช้ environment protection** ของ GitLab เพื่อบังคับให้การดีพลอยไปยัง production ต้องได้รับการอนุมัติจากผู้ดูแลระบบ

Summary

การตั้งค่า GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวต้องอาศัยการเตรียมสภาพแวดล้อม, การติดตั้ง GitLab, การตั้งค่า Runner, การเขียนไฟล์ `.gitlab-ci.yml`, และการจัดการความลับอย่างปลอดภัย

  • ตรวจสอบสเปคเซิร์ฟเวอร์และเปิดใช้งาน HTTPS ก่อนติดตั้ง GitLab
  • ลงทะเบียน Runner ด้วย tag ที่สอดคล้องกับไฟล์ CI
  • ใช้ variables เพื่อเก็บคีย์และข้อมูลลับ
  • แบ่ง pipeline เป็น test build deploy เพื่อความชัดเจนและปลอดภัย
  • ปรับ runner ให้ใช้ Docker image ที่อัปเดตและตั้งค่า protected runner เพื่อจำกัดการเข้าถึง

ทำตามขั้นตอนเหล่านี้คุณจะได้ระบบ CI/CD ที่ทำงานอัตโนมัติอย่างมั่นคงและปลอดภัยบนเซิร์ฟเวอร์ส่วนตัวของคุณเอง.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีตั้งค่าและใช้ GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวเพื่อทำอัตโนมัติการทดสอบและดีพลอยโค้ดอย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
29 มิถุนายน 2569 เวลา 17:51

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่า OpenVPN Server บน Raspberry Pi เพื่อสร้างเครือข่ายส่วนตัวปลอดภัยGrowth
29 มิถุนายน 2569 เวลา 12:30

วิธีตั้งค่า OpenVPN Server บน Raspberry Pi เพื่อสร้างเครือข่ายส่วนตัวปลอดภัย

บทความนี้จะพาคุณตั้งค่า **OpenVPN Server** บน **Raspberry Pi** เพื่อสร้างเครือข่ายส่วนตัว (VPN) ที่ปลอดภัยและใช้ได้ทุกที่จากอินเทอร์เน็ต

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีใช้ Linux Containers (LXC) บน Windows เพื่อแยกสภาพแวดล้อมการพัฒนาอย่างปลอดภัยGrowth
29 มิถุนายน 2569 เวลา 11:00

วิธีใช้ Linux Containers (LXC) บน Windows เพื่อแยกสภาพแวดล้อมการพัฒนาอย่างปลอดภัย

Linux Containers (LXC) เป็นเทคโนโลยีที่ให้คุณสร้างสภาพแวดล้อมแยกจากระบบปฏิบัติการหลักได้อย่างใกล้เคียงกับ VM แต่ใช้ทรัพยากรน้อยกว่า บน Windows เราสามารถใช้ **WSL 2** เป็นบรรยากาศ Linux แล้วติดตั้ง LXC…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ5 นาที
วิธีใช้ GitHub Codespaces เพื่อพัฒนาโค้ดบนคลาวด์โดยไม่ต้องติดตั้งเครื่องมือในเครื่องGrowth
28 มิถุนายน 2569 เวลา 18:30

วิธีใช้ GitHub Codespaces เพื่อพัฒนาโค้ดบนคลาวด์โดยไม่ต้องติดตั้งเครื่องมือในเครื่อง

GitHub Codespaces เป็นบริการคลาวด์ที่ให้คุณสร้างสภาพแวดล้อมพัฒนาเต็มรูปแบบได้ในไม่กี่คลิก ไม่ต้องติดตั้ง IDE, compiler หรือ dependency ใด ๆ บนเครื่องของคุณเลย บทความนี้จะสรุปวิธีตั้งค่าและใช้งาน Codes…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
วิธีสร้างและจัดการไฟล์ .env เพื่อเก็บค่าคอนฟิกในโปรเจค Node.js อย่างปลอดภัยGrowth
28 มิถุนายน 2569 เวลา 12:30

วิธีสร้างและจัดการไฟล์ .env เพื่อเก็บค่าคอนฟิกในโปรเจค Node.js อย่างปลอดภัย

การจัดการค่าคอนฟิกในโปรเจค Node.js ที่ปลอดภัยเป็นหัวใจของการพัฒนาแอปพลิเคชันที่มั่นคง บทความนี้จะอธิบายวิธีสร้างและใช้ไฟล์ `.env` เพื่อเก็บข้อมูลสำคัญ เช่น คีย์ API, พารามิเตอร์ฐานข้อมูล และข้อมูลลับอ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ5 นาที
คัดลอกลิงก์แล้ว!