
ที่มาภาพ: 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



