คู่มือผู้ดูแลระบบ (Handover)

เอกสารสำหรับผู้ที่จะดูแล/พัฒนาระบบ FYCDTH ต่อในอนาคต — รวมที่อยู่ซอร์สโค้ด วิธีรัน วิธี deploy และวิธีดูแลทุกระบบ

📑 สารบัญ

  1. ⚠️ สิ่งที่ต้องทำด่วน (ความยั่งยืน)
  2. สถาปัตยกรรมภาพรวม
  3. แผนที่ระบบ (โค้ด→deploy)
  4. บัญชีและบริการ
  5. วิธีรันในเครื่อง
  6. วิธี Deploy
  7. งานที่ทำบ่อย
  8. สำรอง & กู้ภัย

⚠️ สิ่งที่ต้องทำด่วน เพื่อความยั่งยืน

🔴 สำคัญที่สุด: ตอนนี้ซอร์สโค้ดส่วนใหญ่อยู่ใน เครื่อง Mac เครื่องเดียว ยังไม่ได้ขึ้น GitHub ถ้าเครื่องนี้เสีย/หาย โค้ดจะหายถาวร (Vercel มีแค่เวอร์ชันที่ build แล้ว แก้ไขต่อยาก)

ต้องทำ:

  1. สร้าง GitHub Organization ขององค์กร (เช่น github.com/fycdth)
  2. Push โค้ดทุกโปรเจคขึ้น GitHub (ดูตารางในหัวข้อถัดไปว่าตัวไหนยังไม่มี)
  3. เชื่อม Vercel กับ GitHub repo → แก้โค้ดแล้ว deploy อัตโนมัติ
  4. ให้สิทธิ์ผู้ดูแลที่ไว้ใจ เข้าถึง GitHub org + Vercel + Supabase + Cloudflare
  5. เก็บรหัสผ่าน/API key ทั้งหมดใน password manager กลาง (เช่น Bitwarden/1Password) ที่ส่งต่อได้
💡 ทำ 5 ข้อนี้เสร็จ = ระบบจะ "ไม่ผูกกับคนใดคนหนึ่ง" ใครก็สานต่อได้

🗺️ สถาปัตยกรรมภาพรวม

ทุกระบบทำงานบนคลาวด์ 3 บริการหลัก ทำงานร่วมกัน:

ชั้นบริการทำหน้าที่
เว็บแอปVercelโฮสต์เว็บทั้งหมด build + ออก SSL อัตโนมัติ
ฐานข้อมูลSupabase (PostgreSQL)เก็บข้อมูลทุกระบบ แยกเป็น schema: class_record / core / owat
ไฟล์/รูป/สไลด์Cloudflare R2เก็บไฟล์ทั้งหมด (bucket fycdth-files) เสิร์ฟผ่าน CDN
โดเมน/DNSCloudflareจัดการ fycdth.com และซับโดเมน ชี้ไป Vercel (A → 76.76.21.21)
หลักการ: โค้ดอยู่ GitHub → Vercel build → อ่าน/เขียนข้อมูลที่ Supabase → ไฟล์ดึงจาก R2

📦 แผนที่ระบบ: โค้ด → Deploy

ระบบโดเมนโฟลเดอร์โค้ด (ในเครื่อง)GitHubVercel projectเทคโนโลยี
บันทึกชั้นเรียนclass.fycdth.com~/Projects/fycdth-class-record-cloudยังไม่มี ⚠️fycdth-class-recordVite+React, tRPC, Drizzle, Better Auth
กิจกรรมevents.fycdth.com~/Projects/fycdth-events-cloudยังไม่มี ⚠️fycdth-events-cloudVite+React, tRPC, Drizzle
ระบบสมาชิก (SSO)id.fycdth.com~/Projects/fycd-core-cloudยังไม่มี ⚠️fycdth-coreTurborepo, Next.js, Prisma
โอวาทowat.fycdth.com~/Projects/phra-owatNanthawat2543/phra-owat ✓fycdth-owatNext.js, Supabase JS
คลังความรู้wiki.fycdth.com~/Applications/FYCD Wikiยังไม่มี ⚠️fycdth-wikiHTML static
คู่มือ (หน้านี้)docs.fycdth.com~/Projects/fycdth-docsยังไม่มี ⚠️fycdth-docsHTML static
⚠️ 5 จาก 6 ระบบยังไม่มี GitHub — เป็นความเสี่ยงหลัก (ดูหัวข้อ "สิ่งที่ต้องทำด่วน")

🔑 บัญชีและบริการ

⚠️ ความปลอดภัย: หน้านี้ ไม่เก็บรหัสผ่าน/API key ใดๆ — เก็บไว้ใน password manager กลางเท่านั้น หน้านี้บอกแค่ "บริการอยู่ที่ไหน เข้าด้วยบัญชีอะไร"
บริการเข้าที่บัญชีใช้ทำอะไร
Vercelvercel.comangel.phototh@gmail.com (team: angel-photo)โฮสต์เว็บทุกตัว
Supabasesupabase.comangel.phototh@gmail.com (org: FYCDTH)ฐานข้อมูล (project: fycdth-platform)
Cloudflaredash.cloudflare.comangel.phototh@gmail.comDNS (fycdth.com) + R2 (ไฟล์)
GitHubgithub.comNanthawat2543 (ควรสร้าง org กลาง)เก็บซอร์สโค้ด
📌 Phra Owat ยังใช้ Supabase แยกอีกตัวหนึ่งอยู่ (project เก่า) — ถ้าจะรวมให้เหลือที่เดียว ดูบันทึกในโฟลเดอร์โปรเจค

💻 วิธีรันในเครื่อง (แก้ไขโค้ด)

เตรียมเครื่อง (ครั้งแรก)

  • ติดตั้ง Node.js (เวอร์ชัน 20+) และ pnpm (npm i -g pnpm)
  • มีไฟล์ .env ของแต่ละโปรเจค (เก็บลับ — ขอจาก password manager)

รันเว็บที่เป็น Vite/Next (class / events / core / owat)

# เข้าโฟลเดอร์โปรเจค แล้ว:
pnpm install        # ติดตั้ง dependencies (ครั้งแรก)
pnpm dev            # รันเครื่อง dev → เปิด localhost ที่บอก

เว็บ static (wiki / docs)

เป็นไฟล์ HTML ธรรมดา — เปิด index.html ในเบราว์เซอร์ได้เลย แก้ไขแล้วเซฟ

🚀 วิธี Deploy (อัปขึ้นเว็บจริง)

วิธีที่แนะนำ (หลังเชื่อม GitHub แล้ว)

แค่ push โค้ดขึ้น GitHub → Vercel จะ build + deploy ให้อัตโนมัติ ไม่ต้องทำอะไรเพิ่ม

git add . && git commit -m "แก้ไข..." && git push

วิธีปัจจุบัน (ผ่าน Vercel CLI — ยังไม่เชื่อม GitHub)

# ติดตั้งครั้งเดียว: npm i -g vercel && vercel login
# ในโฟลเดอร์โปรเจค:
vercel deploy --prod
โปรเจค core เป็น Turborepo — Vercel ตั้ง Root Directory = apps/core ไว้แล้ว

🛠️ งานที่ทำบ่อย

อยากทำอะไรทำที่ไหน
ดู/แก้ไขข้อมูลในตารางSupabase → Table Editor (เลือก schema ให้ถูก)
รันคำสั่ง SQLSupabase → SQL Editor
ดู/จัดการไฟล์ที่อัปโหลดCloudflare → R2 → bucket fycdth-files
แก้ตัวแปรลับ (env)Vercel → เลือก project → Settings → Environment Variables
เพิ่ม/แก้โดเมนVercel (เพิ่ม domain) + Cloudflare (ตั้ง DNS → 76.76.21.21)
ดู log เวลาเว็บ errorVercel → project → Logs / Deployments
อนุมัติสมาชิกใหม่ / จัดการสิทธิ์ในเว็บ class.fycdth.com → หน้า User Management
เพิ่มเว็บใหม่ให้ login กลางได้ (OAuth)ตาราง core.oauth_clients ใน Supabase

💾 สำรองข้อมูล & กู้ภัย

สำรองข้อมูล

  • ฐานข้อมูล: Supabase มี backup อัตโนมัติ (ดู Database → Backups) · ดาวน์โหลดเองได้จาก SQL Editor
  • ไฟล์: R2 เก็บถาวร · ควรสำรองสำเนาเพิ่มเป็นระยะ
  • โค้ด: ต้องอยู่ GitHub (ดูหัวข้อแรก)

ถ้าเว็บล่ม — เช็คตามลำดับ

  1. เปิด Vercel → ดู project นั้น Deployment ล่าสุด เขียว(Ready) ไหม → ถ้าแดง ดู error log
  2. เช็ค Supabase ยังทำงาน (ไม่ pause) — Free tier จะ pause ถ้าไม่มีคนใช้นาน
  3. เช็ค DNS ที่ Cloudflare ยังชี้ 76.76.21.21
  4. ลอง deploy ใหม่ (vercel deploy --prod)
💚 ข้อดี: ทุกอย่างอยู่บนคลาวด์ — ไม่ต้องดูแลเซิร์ฟเวอร์เอง เว็บล่มยาก กู้คืนง่าย