วิธีติดตั้งและกำหนดค่าบริการ Git‑Based Wiki ด้วย Gitea บน Docker Compose อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีติดตั้งและกำหนดค่าบริการ Git‑Based Wiki ด้วย Gitea บน Docker Compose อย่างปลอดภัย

⚡ สรุป 30 วิ

การมี **Wiki** ภายในระบบควบคุมเวอร์ชันทำให้ทีมพัฒนาสามารถจัดเก็บเอกสารเทคนิคได้แบบเดียวกับโค้ด การใช้ **Gitea** ร่วมกับ **Docker Compose** ช่วยให้การตั้งค่าเป็นเรื่องง่ายและสามารถปรับขนาดตามความต้องกา…

การมี Wiki ภายในระบบควบคุมเวอร์ชันทำให้ทีมพัฒนาสามารถจัดเก็บเอกสารเทคนิคได้แบบเดียวกับโค้ด การใช้ Gitea ร่วมกับ Docker Compose ช่วยให้การตั้งค่าเป็นเรื่องง่ายและสามารถปรับขนาดตามความต้องการได้อย่างรวดเร็ว บทความนี้จะพาคุณจากศูนย์ไปสู่ระบบ Wiki ที่ทำงานได้เต็มรูปแบบ พร้อมแนวทางรักษาความปลอดภัยขั้นพื้นฐาน


ทำความเข้าใจพื้นฐาน — Overview

Gitea เป็นเซิร์ฟเวอร์ Git แบบโอเพนซอร์สที่มีขนาดเล็กและรองรับการสร้าง Wiki โดยอัตโนมัติ Docker Compose คือเครื่องมือจัดการหลายคอนเทนเนอร์ด้วยไฟล์ YAML เพียงไฟล์เดียว การผสานสองเทคโนโลยีนี้ทำให้คุณได้ระบบ Git‑Based Wiki ที่สามารถสำรองข้อมูล, ทำ CI/CD, และควบคุมสิทธิ์ผู้ใช้ได้ในตัว

  • Gitea ให้ UI สำหรับจัดการรีโปซิทอรีและ Wiki
  • Docker Compose ช่วยกำหนดเครือข่าย, โวลุ่ม, ตัวแปรสภาพแวดล้อมแบบรวมศูนย์
  • การใช้ Git‑Based Wiki ทำให้เอกสารเป็นไฟล์ Markdown ที่สามารถ version‑control ได้
**Tip: ควรตรวจสอบเวอร์ชันล่าสุดของ Gitea และ Docker ก่อนเริ่ม เพื่อลดความเสี่ยงจากบั๊กและช่องโหว่ที่อาจถูกแก้ไขแล้ว

เตรียมสภาพแวดล้อม — Prerequisites

ก่อนลงมือทำขั้นตอนต่อไป ตรวจสอบว่าระบบของคุณพร้อมใช้งาน Docker Engine และ Docker Compose เวอร์ชัน 2.0 ขึ้นไป นอกจากนี้ควรมีพื้นที่จัดเก็บข้อมูลสำหรับรีโปซิทอรีและฐานข้อมูล (เช่น SQLite หรือ MySQL)

  • ระบบปฏิบัติการ: Linux (Ubuntu 22.04 แนะนำ), macOS, หรือ Windows 10/11 (WSL2)
  • Docker Engine ≥ 20.10 และ Docker Compose ≥ 2.5
  • พอร์ตที่เปิดให้ใช้: `3000` (HTTP) หรือ `3443` (HTTPS) สำหรับ Gitea
  • โฟลเดอร์เก็บข้อมูลบนโฮสต์ เช่น `/srv/gitea/data`, `/srv/gitea/config`
  • ถ้าต้องการฐานข้อมูล MySQL / MariaDB ให้เตรียมคอนเทนเนอร์แยกหรือใช้บริการคลาวด์
**Warning: อย่าใช้พอร์ตที่เป็นค่าเริ่มต้นของระบบอื่น (เช่น 80 หรือ 443) หากเซิร์ฟเวอร์มีเว็บเซอร์วิสอื่นทำงานอยู่

สร้างไฟล์ `docker-compose.yml` — Compose File

การตั้งค่า Docker Compose เก็บทุกอย่างไว้ในไฟล์ YAML เพียงไฟล์เดียว สามารถจัดการได้ด้วยคำสั่ง `docker compose up -d`

  • **ขั้นตอนที่ 1: สร้างโฟลเดอร์ทำงาน

```bash mkdir -p /srv/gitea/{data,config} cd /srv/gitea ```

  • **ขั้นตอนที่ 2: เปิดไฟล์ `docker-compose.yml` ด้วย editor ที่ชอบ (nano, vim) แล้วใส่เนื้อหาดังนี้

```yaml version: "3.9"

services: gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped environment:

  • USER_UID=1000 # ใช้ UID ของผู้ใช้โฮสต์ (ไม่เป็น root)
  • USER_GID=1000
  • GITEA__security__INSTALL_LOCK=true # ปิดการติดตั้งซ้ำ
  • GITEA__server__PROTOCOL=https # เปิด HTTPS (ต้องมี cert)

ports:

  • "3000:3000" # HTTP (ไม่จำเป็นหากใช้ HTTPS อย่างเดียว)
  • "3443:3443" # HTTPS

volumes:

  • ./data:/var/lib/gitea
  • ./config:/etc/gitea

networks:

  • gitea-net

db: image: mariadb:10.11 container_name: gitea-db restart: unless-stopped environment:

  • MYSQL_ROOT_PASSWORD=StrongRootPass!23 # ควรเก็บใน secret manager
  • MYSQL_DATABASE=gitea
  • MYSQL_USER=gitea
  • MYSQL_PASSWORD=StrongGiteaPass!23

volumes:

  • ./db:/var/lib/mysql

networks:

  • gitea-net

networks: gitea-net: driver: bridge ```

  • **ขั้นตอนที่ 3: สร้างโฟลเดอร์ `certs` หากต้องการใช้ HTTPS ด้วยใบรับรอง self‑signed หรือจาก CA

```bash mkdir ./certs && cp your.crt ./certs/ && cp your.key ./certs/ ```

  • **ขั้นตอนที่ 4: เริ่มคอมโพส

```bash docker compose up -d ```

**Tip: ใช้ไฟล์ `.env` เพื่อเก็บค่า secret แล้วอ้างอิงใน `docker-compose.yml` ด้วย `${VARIABLE}` แทนการเขียนตรงในไฟล์

ตั้งค่าความปลอดภัยพื้นฐาน — Security Basics

แม้ Docker จะให้ระดับแยกคอนเทนเนอร์ แต่ยังต้องเสริมขั้นตอนเพื่อป้องกันการโจมตีจากภายนอก

  • รัน Gitea ด้วย UID/GID ที่ไม่ใช่ root (ตั้งค่า `USER_UID`/`USER_GID` ตามผู้ใช้ระบบ)
  • เปิด HTTPS เท่านั้นและบังคับให้รีไดเรกต์จาก HTTP ไป HTTPS ในไฟล์การตั้งค่า (`app.ini`)

```ini [server] PROTOCOL = https ROOT_URL = https://git.example.com/ ```

  • ใช้ firewall (ufw หรือ iptables) ปิดพอร์ตที่ไม่ใช้ เช่น `3000` หากไม่ได้เปิด HTTP จริง ๆ
  • ตั้งค่า CSRF protection, X‑Frame‑Options, และ Content Security Policy ผ่าน `app.ini`
  • สร้าง API token สำหรับการเข้าถึงโดยอัตโนมัติ แทนการใช้ username/password
  • กำหนด permission ของผู้ใช้ให้เป็นระดับ “Read” หรือ “Write” ตามความจำเป็น ไม่ควรให้ Admin กับทุกคน
ความปลอดภัยการตั้งค่า
ฐานข้อมูลใช้ MySQL/MariaDB แทน SQLite เมื่อใช้งานหลายโหนด
การสื่อสารHTTPS + HSTS (`Strict-Transport-Security`)
ผู้ใช้MFA (Two‑Factor Authentication) สำหรับ Admin
คอนเทนเนอร์Non‑root user, read‑only volume สำหรับ config
**Warning: อย่าลืมอัปเดต Docker image ของ Gitea อย่างสม่ำเสมอ (`docker pull gitea/gitea:latest`) เพื่อรับแพทช์ด้านความปลอดภัย

กำหนดค่า Wiki ใน Gitea — Wiki Configuration

เมื่อระบบพร้อมแล้ว ให้เข้าสู่ UI ของ Gitea ผ่านเว็บเบราว์เซอร์ (เช่น `https://git.example.com`) แล้วทำตามขั้นตอนต่อไปนี้

  • **ขั้นตอนที่ 1: สร้างหรือเลือกรีโปซิทอรีที่ต้องการเปิด Wiki
  • คลิก “New Repository” ตั้งค่าเป็น Private หรือ Public ตามนโยบาย
  • **ขั้นตอนที่ 2: เปิดฟีเจอร์ Wiki ในเมนู Settings ของรีโป
  • เลือก “Enable Wiki” และกำหนดให้ใช้ Markdown เป็นรูปแบบเริ่มต้น
  • ขั้นตอนที่ 3: ตั้งค่า Branch** ที่จะเก็บข้อมูล Wiki (โดยปกติคือ `wiki`)
  • สามารถเลือกทำให้บังคับให้ Pull Request ก่อน merge เพื่อรีวิวเอกสารได้
  • ขั้นตอนที่ 4: กำหนด Permission** ของผู้ใช้สำหรับ Wiki
  • ให้สมาชิกทีมมี “Read/Write” ตามบทบาท หรือกำหนด “Protected Branches” เพื่อป้องกันการแก้ไขโดยไม่ได้ตรวจสอบ
  • **ขั้นตอนที่ 5: เริ่มเขียนหน้าแรกของ Wiki (`Home.md`) ผ่าน UI หรือ clone repo แล้ว push ไฟล์จากเครื่องของคุณ
**Tip: ใช้เทมเพลต Markdown ที่มีส่วนหัว (front‑matter) เพื่อใส่เมตาดาต้า เช่น เวอร์ชันเอกสารหรือผู้เขียน ทำให้การค้นหาผ่าน API ง่ายขึ้น

ตรวจสอบและทดสอบระบบ — Verification

หลังตั้งค่าทุกอย่างแล้ว ควรทำการตรวจสอบว่า Wiki สามารถใช้งานได้ตามคาดและไม่มีช่องโหว่ที่อาจถูกโจมตี

  • ตรวจสอบว่าหน้าเว็บโหลดด้วย HTTPS อย่างเต็มรูปแบบ (`padlock` ปรากฏในแถบ URL)
  • ล็อกอินด้วยบัญชีผู้ใช้ทั่วไปและลองสร้าง/แก้ไขหน้า Wiki เพื่อยืนยัน Permission ทำงาน
  • ใช้เครื่องมือสแกนความปลอดภัย เช่น OWASP ZAP หรือ Qualys SSL Labs เพื่อตรวจสอบการตั้งค่า TLS และ HTTP Headers
  • ตรวจสอบ log ของ Gitea (`docker logs gitea`) ว่ามี error หรือ warning ใด ๆ ที่เกี่ยวข้องกับ Wiki หรือฐานข้อมูลหรือไม่
  • ทำการ backup ข้อมูลโดยใช้ `docker exec gitea gitea dump -f /tmp/gitea-backup.sql` แล้วคัดลอกไฟล์จากโวลุ่ม `/srv/gitea/data`
Warning: อย่าลืมตั้งค่า log rotation** สำหรับ Docker logs เพื่อป้องกันการเต็มพื้นที่ดิสก์

สรุป — Summary

  • เราได้เรียนรู้พื้นฐานของ Gitea, Docker Compose, และวิธีสร้าง Git‑Based Wiki อย่างปลอดภัย
  • การเตรียมสภาพแวดล้อมและตั้งค่า Docker Compose ให้ใช้ UID/GID ที่ไม่ใช่ root เป็นก้าวแรกสำคัญ
  • เปิดใช้งาน HTTPS, ปรับ `app.ini` สำหรับ security headers และใช้ firewall เพื่อจำกัดพอร์ตที่เปิดเผย
  • กำหนด Permission ของผู้ใช้ใน Gitea อย่างระมัดระวังและบังคับให้มีการรีวิวก่อน merge Wiki
  • ตรวจสอบระบบด้วยเครื่องมือสแกนความปลอดภัยและตั้งค่า backup อัตโนมัติเพื่อป้องกันข้อมูลสูญหาย

สิ่งที่ควรจำ

  • ใช้ non‑root user, HTTPS only, และ environment secrets ใน Docker Compose
  • เปิด Wiki ผ่าน UI ของ Gitea แล้วกำหนด branch protection เพื่อความเสถียรของเอกสาร
  • ตรวจสอบและอัปเดตเวอร์ชัน Docker image อย่างสม่ำเสมอเพื่อรับแพทช์ด้าน security

เมื่อทำตามขั้นตอนเหล่านี้ ทีมของคุณจะได้ Wiki ที่เชื่อถือได้ ปลอดภัย และสามารถจัดการด้วยกระบวนการ DevOps แบบเต็มรูปแบบ. Happy documenting!

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

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

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

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

ชื่อต้นฉบับ
วิธีติดตั้งและกำหนดค่าบริการ Git‑Based Wiki ด้วย Gitea บน Docker Compose อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
24 กรกฎาคม 2569 เวลา 17:51

Related

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

วิธีตั้งค่า Azure OpenAI Service เพื่อสร้างแชทบอทใน Microsoft Teams อย่างปลอดภัยGrowth
24 กรกฎาคม 2569 เวลา 18:00

วิธีตั้งค่า Azure OpenAI Service เพื่อสร้างแชทบอทใน Microsoft Teams อย่างปลอดภัย

การสร้างแชทบอทบน Microsoft Teams ด้วย Azure OpenAI Service ต้องผสานหลายส่วนเข้าด้วยกัน ทั้งการจัดสรรทรัพยากรใน Azure การตั้งค่า Bot registration และการกำหนดสิทธิ์ให้ปลอดภัย บทความนี้จะพาคุณผ่านขั้นตอน…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่าและใช้ GitHub Codespaces เพื่อพัฒนาโค้ดบนคลาวด์อย่างปลอดภัยGrowth
24 กรกฎาคม 2569 เวลา 12:00

วิธีตั้งค่าและใช้ GitHub Codespaces เพื่อพัฒนาโค้ดบนคลาวด์อย่างปลอดภัย

GitHub Codespaces เป็นสภาพแวดล้อมพัฒนาแบบเต็มรูปแบบที่ทำงานบนคลาวด์ ทำให้คุณสามารถเขียน / คอมไพล์ / ดีบักโค้ดได้จากเบราว์เซอร์หรือ VS Code โดยไม่ต้องตั้งค่าเครื่องท้องถิ่นหลายครั้ง การใช้ Codespaces ช…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ5 นาที
วิธีตั้งค่า Cloudflare Zero‑Trust Browser Isolation เพื่อปกป้องการท่องเว็บแบบปลอดภัยบนองค์กรGrowth
23 กรกฎาคม 2569 เวลา 19:30

วิธีตั้งค่า Cloudflare Zero‑Trust Browser Isolation เพื่อปกป้องการท่องเว็บแบบปลอดภัยบนองค์กร

Cloudflare Zero‑Trust Browser Isolation (ZBI) เป็นเทคโนโลยีที่ทำให้การท่องเว็บของผู้ใช้ในองค์กรเกิดขึ้นบนคลาวด์ แทนที่จะรันโค้ดโดยตรงบนอุปกรณ์ปลายทาง ช่วยลดความเสี่ยงจากมัลแวร์ ฟิชชิง และช่องโหว่ต่าง…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่าและใช้งาน Flyctl เพื่อ Deploy แอปพลิเคชันบน Fly.io อย่างปลอดภัยGrowth
23 กรกฎาคม 2569 เวลา 18:00

วิธีตั้งค่าและใช้งาน Flyctl เพื่อ Deploy แอปพลิเคชันบน Fly.io อย่างปลอดภัย

Flyctl คือเครื่องมือ command‑line ของ Fly.io ที่ช่วยให้คุณจัดการแอปพลิเคชันบนคลาวด์ได้อย่างรวดเร็วและปลอดภัย บทความนี้จะแนะนำขั้นตอนตั้งค่าและ Deploy แอปโดยใช้ Flyctl อย่างเป็นระบบ

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