OpenWork's Cloud Collaboration System
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
ช่อง: DevsKingdom · ความยาว: 13 นาที · ลิงก์: https://www.youtube.com/watch?v=nz-p2JS9RJc
# สรุป: OpenWork's Cloud Collaboration System ช่อง: DevsKingdom · ความยาว: 13 นาที · ลิงก์: https://www.youtube.com/watch?v=nz-p2JS9RJc - วิดีโอแนะนำ OpenWork Dam ซึ่งเป็นคอนโทรลเพลน (control plane) สำหรับจัดการ OpenWork (ทางเลือกโอเพนซอร์สแทน Clockwork) ครอบคลุมทั้งทีมและองค์กร - ฟีเจอร์หลัก: จัดการสมาชิกและทีม, จัดการสิทธิ์การเข้าถึงจากที่เดียว, ตั้งค่านโยบายไฟล์, จำกัดการเข้าถึงโมเดลในเครื่อง, เผยแพร่สกิลและปลั๊กอินผ่าน marketplace - ตอนนี้ OpenWork Dam รองรับเฉพาะแอปพลิเคชันเดสก์ท็อป (ดาวน์โหลด OpenWork Enterprise ผ่านหน้า Open Store) ยังไม่รองรับเว็บแอปพลิเคชัน - เชื่อมต่อผู้ให้บริการโมเดลได้หลายเจ้า (OpenAI, Anthropic, Pooder และอื่นๆ) ผ่านปุ่ม add provider พร้อมเลือกได้ว่า admins เพิ่มผู้ให้บริการเองได้ไหม - เพิ่ม/ลบสมาชิกด้วยการกรอกอีเมลเพื่อเชิญเข้าร่วมทีม และติดตามเมตริกในหน้า analytics เช่น ผู้ใช้ที่ใช้งานอยู่, เซสชันต่อสัปดาห์, งานต่อสัปดาห์ - หน้า settings มี API keys, SSO, desktop policies, diagnostics และข้อมูลทั่วไป - การติดตั้งฝั่งเซิร์ฟเวอร์: ติดตั้ง MySQL server + Node, ตั้งค่าฐานข้อมูล, clone repository แล้วรัน npm install และ build แพ็กเกจ (email, MCP client, DenDB, Den API) - ตั้งค่า environment อย่างละเอียด: database URL, คีย์ยืนยันตัวตน, API public URL, CORS, โหมดองค์กร (single/multi), และ seed URL สำหรับผู้ใช้ทดสอบ - migrate ฐานข้อมูลด้วยคำสั่งบรรทัดเดียว (DB migrate ธรรมดาใช้ไม่ได้) แล้วตรวจสอบตารางด้วย show tables - สำหรับโปรดักชัน: สร้าง systemd หรือ supervisor, รันด้วยโปรดักชันบิลด์, ใช้ Nginx reverse proxy และรันเว็บด้วย NX start (build ด้วย Next.js) - กระบวนการ seed ผู้ใช้ทดสอบ (เช่น Alice ที่ acme.test) ต้องสลับ app mode ระหว่างโปรดักชัน (0) กับโหมดพัฒนา (1) และเปิด allow public sign up ก่อน - ปิดท้ายด้วยวิธีติดตั้งแอปเดสก์ท็อปบนเครื่องโลคอลแล้วเชื่อมต่อกับคอนโทรลเพลนกลาง **ความเห็น:** วิดีโอสาธิตที่ละเอียดและทำตามได้จริงสำหรับคนที่ต้องการติดตั้งและรัน OpenWork Dam ด้วยตัวเอง แต่ไม่เกี่ยวข้องกับผู้ใช้เว็บแอปพลิเคชัน และชื่อแบรนด์/ศัพท์เทคนิคบางตัวมาจากคำบรรยายอัตโนมัติ อาจคลาดเคลื่อนจากชื่อจริงได้
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
สวัสดีครับทุกคน ยินดีต้อนรับสู่วิดีโออีกตอนหนึ่งครับ ถ้าคุณคิดว่า Clockwork ค่อนข้างช้าและค่อนข้างแพง เราก็ได้สร้างทางเลือกให้คุณแล้ว ในวิดีโอก่อนหน้าของผม ผมได้สาธิตวิธีใช้ OpenWork เป็นทางเลือกแบบโอเพนซอร์ส (open source) แทน Clockwork และเราได้โชว์วิธีติดตั้งเว็บแอปพลิเคชัน (web application) และตัวประมวลผลฝั่งแบ็กเอนด์ (back-end worker) เพื่อตั้งค่าโปรเจกต์แบบครบวงจร ใครอยากรู้ว่ามันทำงานยังไงก็ไปดูวิดีโอนั้นได้เลยครับ
ในวิดีโอนี้เราจะพูดถึงหัวข้อใหม่ของ OpenWork นั่นคือ OpenWork Dam ซึ่งเป็นคอนโทรลเพลนของ OpenWork ครับ ถ้าเข้าไปที่ GitHub คุณจะเห็นว่าโปรเจกต์สุดท้ายของ OpenWork มีชื่อว่า OpenWork Dam มันคือคอนโทรลเพลนสำหรับจัดการ OpenWork ครอบคลุมทั้งทีมและองค์กร ใช้จัดการสมาชิก สร้างทีม จัดการสิทธิ์การเข้าถึงจากที่เดียว ตั้งค่านโยบายไฟล์ (file policies) จำกัดการเข้าถึงโมเดลในเครื่อง เผยแพร่สกิล (skills) และปลั๊กอิน (plugins) ผ่านมาร์เก็ตเพลส (marketplace) รวมถึงนำเข้าปลั๊กอินที่รองรับ และอื่นๆ อีกมากมายครับ
หน้าตาของมันเป็นแบบนี้ครับ เราติดตั้งทุกอย่างไว้บนเครื่องเสมือนส่วนตัว (virtual private machine) แล้ว เราจะไล่ดูฟังก์ชันต่างๆ ของโปรเจกต์นี้ทีละตัว และโชว์วิธีติดตั้งแบบทีละขั้นตอนบนเครื่องของคุณเองด้วยครับ หวังว่าคลิปนี้จะมีประโยชน์นะครับ แต่ถ้าคุณต้องการใช้เว็บแอปพลิเคชัน คลิปนี้อาจไม่เกี่ยวข้อง เพราะตอนนี้ OpenWork Dam ใช้ได้เฉพาะแอปพลิเคชันเดสก์ท็อป (desktop application) เท่านั้น เดี๋ยวอาจรองรับเว็บแอปพลิเคชันในภายหลัง แต่ตอนนี้รองรับแค่เดสก์ท็อปครับ จากแบนเนอร์หลัก (hero banner) จะเห็นว่ามีให้ดาวน์โหลดสำหรับเวิร์กสเปซนี้ แสดงว่าตอนนี้รองรับการติดตั้งแบบโลคอล (local install) สำหรับแอปพลิเคชันเดสก์ท็อปเท่านั้น พอคลิกเข้าไปที่หน้า Open Store ก็จะเห็นว่ามีให้ดาวน์โหลด OpenWork Enterprise ลงเดสก์ท็อปครับ
กลับมาที่อินเทอร์เฟซของ Open Cloud กันครับ หลังติดตั้งเสร็จเราจะเห็นผู้ใช้ OpenWork หนึ่งราย เราตั้งค่าผู้ใช้ทดสอบไว้หนึ่งคน และคุณสามารถเพิ่มคอนเนกเตอร์ (connectors) ต่างๆ ได้ เช่น Google Workspace, Microsoft, Telegram และอื่นๆ และในส่วนของ extensions คุณสามารถสร้างสกิลหรือปลั๊กอินในมาร์เก็ตเพลสนี้ แล้วแชร์ให้สมาชิกในทีมได้ครับ จะเห็นว่ามีปุ่ม add a plugin คลิกเข้าไปเพื่อเพิ่มปลั๊กอินได้ เช่นเราก็เพิ่มปลั๊กอิน task เข้าไป ซึ่งมันพร้อมใช้งานบนคลาวด์ (cloud ready) ส่วนอย่างอื่นพร้อมใช้งานบนเดสก์ท็อปอยู่แล้วตามค่าเริ่มต้นครับ
คุณยังตรวจสอบโมเดลทั้งหมดได้ด้วย โมเดลก็คือผู้ให้บริการ (providers) ต่างๆ ที่คุณเพิ่มเข้าไปได้ เราลองเพิ่ม Pooder แล้ว คุณสามารถเพิ่มอย่างอื่นได้อีก เช่น OpenAI หรือ Anthropic คลิกที่ manage แล้วคุณจะเลือกได้ว่าผู้ดูแลระบบ (admins) จะเพิ่มผู้ให้บริการเองได้ไหม หรืออนุญาตให้ใช้โมเดลของ Open Cloud เช่น ถ้าอยากเพิ่มโมเดลอย่าง OpenAI ก็แค่คลิก add provider ได้เลย คุณสามารถเลือกผู้ให้บริการเริ่มต้น (default provider) ซึ่งรองรับผู้ให้บริการสาธารณะทั้งหมด หรือจะเพิ่มผู้ให้บริการแบบกำหนดเอง (custom provider) ก็ได้ เราลองเพิ่มมาจาก Pooder แต่คุณเลือกผู้ให้บริการที่อยากเพิ่มเข้ากับคอนโทรลเพลนเองได้ครับ
เรายังเพิ่มสมาชิกและลบสมาชิกได้ด้วย แค่คลิก add member แล้วกรอกอีเมลเพื่อเชิญสมาชิกในทีมครับ ไปที่ส่วน analytics จะเห็นเมตริก (metrics) ต่างๆ เช่น ผู้ใช้ที่ใช้งานอยู่ (active users), เซสชันต่อสัปดาห์ (sessions per week), เซสชันสัปดาห์นี้ และจำนวนงาน (tasks) ต่อสัปดาห์ นี่คือวิธีที่เราติดตามเมตริกต่างๆ ทั่วทั้งองค์กรครับ
สุดท้ายมีหน้า settings ซึ่งคุณสามารถดู API keys, SSO, นโยบายเดสก์ท็อป (desktop policies) รวมถึงส่วน diagnostics และข้อมูลทั่วไป ครับ นี่คือหน้าตาของอินเทอร์เฟซทั้งหมด มันตรงไปตรงมามากครับ
ต่อไปเราจะพูดถึงวิธีติดตั้ง เพราะการติดตั้งนี่เป็นจุดที่สับสนมาก มันค่อนข้างซับซ้อนและระดับสูงหน่อย แต่แค่ทำตามบทช่วยสอนนี้ คุณก็น่าจะตั้งค่าได้ ใช้เวลาไม่กี่นาทีครับ ขั้นแรก ถ้าจะติดตั้ง OpenWork Dam คุณต้องติดตั้ง dependencies ก่อน อันดับแรกต้องติดตั้ง MySQL server เพราะมันต้องใช้ฐานข้อมูลแบ็กเอนด์ (backend database) ต้องติดตั้ง Node ด้วย จากนั้นก็ต้องตั้งค่าฐานข้อมูลสำหรับ MySQL ในกรณีนี้ก็คือ OpenWork Dam พร้อมกำหนดชื่อผู้ใช้และรหัสผ่าน นี่คือฐานข้อมูลที่คุณจะใช้เชื่อมต่อ จากนั้นก็เริ่มสร้างโปรเจกต์ได้เลยครับ
คุณต้อง clone repository ต่างๆ แล้วรัน npm install เพื่อติดตั้ง dependencies ทั้งหมด และ build repository ของแพ็กเกจต่างๆ เช่น build แพ็กเกจอีเมล, MCP client, และอย่างเช่น DenDB ซึ่งใช้สำหรับการเชื่อมต่อฐานข้อมูล การย้ายข้อมูล (migration) รวมถึง Den API ด้วย โปรเจกต์ OpenWork Dam มีส่วนสำคัญสองส่วน ส่วนหนึ่งคือ API อีกส่วนคือ Den Web ที่คุณกำลังดูอยู่นี่คือ Den Web ส่วนสำคัญอีกชิ้นคือ API ซึ่ง Den Web เรียกใช้งานอยู่ มันคือการเรียกแบ็กเอนด์ Den API ครับ ต้องแน่ใจว่า build แพ็กเกจทั้งหมดเสร็จเรียบร้อย
จากนั้นต้องตั้งค่าสภาพแวดล้อม (environment) ซึ่งสำคัญมากสำหรับการติดตั้งทั้งหมด เช่น ต้องกำหนด database URL สำหรับ API ไฟล์นี้คือ den.env ใช้สำหรับ API ครับ จากนั้นต้องตั้งค่าคีย์ยืนยันตัวตน (authentication keys) และกำหนด auth URL รวมถึง API public URL ซึ่งก็คือ api.then หรือโดเมนอื่นๆ ที่คุณมี นี่คือการชี้ไปที่แบ็กเอนด์ API นะครับ แอปพลิเคชันฝั่งฟรอนต์เอนด์จะชี้ไปที่แบ็กเอนด์ API นี่คือการตั้งค่า API ให้มี API endpoint ที่ใช้กับ public URL ได้
จากนั้นก็ต้องตั้งค่า CORS (course origins) เพื่ออนุญาตให้ฟรอนต์เอนด์เรียก API ได้ เช่น ถ้าฟรอนต์เอนด์คือ then.example.com คุณก็ต้องตั้งค่าตรงนี้ เพื่อให้ทราฟฟิกจากฟรอนต์เอนด์เข้าถึง API ได้ และต้องตั้งค่าพารามิเตอร์ขององค์กรต่างๆ ด้วย เช่น โหมดเป็น single organization (องค์กรเดียว) ซึ่งพวกเขารองรับโหมดหลายองค์กร (multi-organization) ด้วย จากนั้นกำหนดชื่อและสล็อตขององค์กร และต้องระบุอีเมลให้ชัดเจน ซึ่งสำคัญมากสำหรับการตั้งค่าแบบโลคอล เพราะอย่าง Alice ที่ acme.test คือผู้ใช้ที่ถูก seed ไว้ครับ
ในการทดสอบ ขั้นแรกคุณต้อง seed สภาพแวดล้อม ซึ่งเดี๋ยวเราจะโชว์วิธีทำเป็นขั้นตอนสุดท้ายในอีกไม่กี่นาที แต่จำไว้ว่าจำเป็นต้องทำถ้าคุณจะรันบนเครื่องโลคอลหรือเครื่องเสมือนส่วนตัวเพื่อทดสอบ และนี่คือ URL ที่ตั้งค่าไว้แล้ว ตอนตั้งค่า seed URL คุณต้องวาง URL ลงตรงนี้ แล้วรีเฟรชสภาพแวดล้อม นี่คือจุดสำคัญที่อยากเน้นครับ และสำหรับการตั้งค่าแบบ public ให้ตั้งเป็น false ไปก่อน จะเปลี่ยนเป็น true ทีหลังก็ได้ และสำหรับ email password หลัง SSL (after SSL) ก็ตั้งเป็น true ได้ แต่ค่าเริ่มต้นเป็น false ก็ได้ และปิดการยืนยันอีเมล (email verification) ด้วยการตั้งเป็น false ก็ได้ครับ
ส่วนนี้เป็นสำหรับ worker ครับ ซึ่งไม่เกี่ยวกับเว็บแอปพลิเคชันหรือคอนโทรลเพลน ต่างกันนิดหน่อย ใช้ในกรณีที่คุณมีแอปพลิเคชันงาน (task application) อยู่บนเครื่องโลคอล สำหรับการจัดเตรียม (provisioning) ถ้าต้องใช้ Datum เป็นตัวจัดเตรียมฝั่งแบ็กเอนด์ (backend provisioner) คุณก็กำหนด Datum เป็นผู้ให้บริการสำหรับการ provisioning ได้ และตั้งค่าพารามิเตอร์ต่างๆ แต่ส่วนนี้เป็นแค่ worker URL template สำหรับ worker แบบโลคอล เช่น เราติดตั้ง OpenWork worker ไว้ในวิดีโอก่อนหน้า คุณก็เอาลิงก์นั้นมาวางตรงนี้ได้ คือบอกสภาพแวดล้อมแบบโลคอลว่าเราชี้ไปที่ worker ระยะไกลตัวนั้น เพื่อให้มันเก็บเมตริกได้ครับ
ส่วนสุดท้ายก็คือการแทนที่คีย์ต่างๆ ใน environment ของ API เท่านั้นเอง จากนั้นต้องตั้งค่าเว็บแอปพลิเคชัน ซึ่งก็ต้องชี้ไปที่แบ็กเอนด์ API ด้วย แค่กำหนด data API base ให้เป็น API ที่คุณตั้งไว้เป็นแบ็กเอนด์ แล้วก็ตั้งค่า public origin ซึ่งก็คือ URL ของเว็บแอปพลิเคชัน ประมาณนี้ครับ
จากนั้นต้อง migrate ฐานข้อมูล โดยใช้คำสั่งนี้ เพราะคำสั่ง DB migrate ธรรมดาใช้ไม่ได้ คุณต้องใช้คำสั่งบรรทัดเดียวที่โชว์ให้ดูตรงนี้ แล้วก็ดูตาราง (tables) หลัง migration เสร็จ เช่น เรารัน show tables จะเห็นว่าหลังจากทำทุกอย่างเสร็จ คุณจะเห็นตารางทั้งหมดในฐานข้อมูล OpenWork ครับ
ขั้นต่อไปคือการสร้าง systemd แต่ถ้าแค่ทดสอบ คุณก็ไม่ต้องสร้าง systemd แต่ถ้าจะรันบนโปรดักชัน คุณน่าจะต้องสร้าง systemd หรือ supervisor ครับ จะเห็นว่ามีข้อมูลที่เราดูไปก่อนหน้านี้ พวกเขาต้องการ environment ต้องมี working directory และต้องแน่ใจว่าเริ่มรันด้วยคำสั่งบรรทัดเดียวนี้ และอย่างที่เห็น นี่คือบิลด์สำหรับโปรดักชัน (production build) จะเห็นว่าอยู่ในโฟลเดอร์ distribution นั่นคือโปรดักชันบิลด์ คุณจะรันให้เร็วขึ้นได้ด้วยโปรดักชันบิลด์นี้ครับ
จากนั้นต้องตั้งค่า systemd ของเว็บแอปพลิเคชันด้วย ถ้าจะรันบนโปรดักชัน หลัง build ทุกอย่างเสร็จ ต้องเพิ่ม environment นี้ กำหนดให้ Den Web เป็น working directory และต้องแน่ใจว่ารันด้วย NX start เพราะโปรเจกต์นี้ build ด้วย Next.js แล้วต้องระบุว่าต้องการรันแอปพลิเคชันนี้เป็นโปรดักชันบิลด์ ตอน seed ผู้ใช้ คุณต้องเปลี่ยนกลับเป็นโหมดพัฒนา (development mode) ซึ่งเดี๋ยวจะพูดถึงอีกที แต่สำหรับบริการนี้ คุณรันเป็นโปรดักชันบิลด์เพื่อให้เร็วขึ้นได้ครับ
ส่วน Nginx proxy ก็แค่ชี้ proxy ไปที่บริการโลคอลโดยใช้ reverse proxy ง่ายๆ ไม่มีอะไรต้องพูดถึงครับ จากนั้นต้องตั้งค่าผู้ใช้ทดสอบ ซึ่งเป็นกระบวนการ seed อันนี้น่าสนใจมาก เพราะต้องปรับ environment ก่อนหน้านี้เล็กน้อยเพื่อตั้งค่า เช่น นี่คือ API environment สำหรับแบ็กเอนด์ แต่มีคอนฟิกสองสามอย่างที่ต้องอัปเดตตอนทำ seed ครับ
เพราะเราบิลด์ทุกอย่างเป็นโปรดักชัน จะเห็นว่า open work app mode ใน environment ถูกตั้งเป็นศูนย์ ซึ่งหมายถึงโปรดักชันบิลด์ ดังนั้นต้องตั้งเป็นศูนย์ แต่พอจะ seed ผู้ใช้ ต้องเปลี่ยนกลับเป็นหนึ่ง ซึ่งหมายถึงโหมดพัฒนา และต้องแน่ใจว่า allow public sign up เป็น true เพื่อให้สามารถ seed อีเมลได้ ถ้าตั้งเป็น false มันอาจไม่ทำงาน ต้องตั้งเป็น true ก่อน แล้วก็ตั้ง allow email password after SSL เป็น true ด้วย พอ seed ผู้ใช้เสร็จก็เปลี่ยนกลับเป็น false ได้ ไม่ต้องใช้โหมด dev อีกต่อไป กลับไปเป็นโหมดโปรดักชันครับ
หลัง seed ทุกอย่างเสร็จ ก็เช็คผู้ใช้ได้ว่าอยู่ในฐานข้อมูลจริงหรือไม่ เช่น นี่คือผู้ใช้ที่เรา seed ไว้ จะเห็นว่าอยู่ในฐานข้อมูลจริง ทุกอย่างเสร็จเรียบร้อย จากนั้นก็สตาร์ท API และสตาร์ทเว็บแอปพลิเคชัน แล้วคุณจะเห็นว่าทุกอย่างรันถูกต้อง นั่นคือสิ่งที่คุณอยากเห็นครับ
จบแล้วครับ นี่คือวิธีตั้งค่า Open Work Bench เป็นคอนโทรลเพลนบนเครื่องเสมือนส่วนตัว พอทุกอย่างพร้อมแล้ว คุณก็ติดตั้งแอปพลิเคชันเดสก์ท็อปของ OpenWork บนเครื่องโลคอลได้เลย แค่คลิกตรงนี้แล้วดาวน์โหลดทุกอย่าง ทำตามขั้นตอนการดาวน์โหลด แล้วเชื่อมต่อกับคอนโทรลเพลนกลางของคุณก็เป็นอันเสร็จครับ
หวังว่าคลิปนี้จะมีประโยชน์นะครับ ถ้าชอบวิดีโอนี้ ช่วยกดติดตาม กดไลก์ หรือคอมเมนต์ได้ถ้ามีคำถาม ขอบคุณมากที่สนับสนุนช่อง และเจอกันใหม่ในวิดีโอหน้าครับ
หมายเหตุการแปล
ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ
- ## เซกเมนต์ [ฟังไม่ชัด]
- ไม่มีเซกเมนต์ใดที่ฟังไม่ชัดจนต้องระบุ [ฟังไม่ชัด] คำพูดอ่านได้ตลอดทั้งคลิป แต่ชื่อเฉพาะบางตัวข้างต้นมาจากคำบรรยายอัตโนมัติและไม่สามารถยืนยันการสะกดจริงได้
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| OpenWork | แบรนด์ซอฟต์แวร์โอเพนซอร์ส (ทางเลือกแทน Clockwork) |
| Clockwork | แบรนด์เครื่องมือเดิมที่ผู้พูดกล่าวว่าช้าและแพง |
| OpenWork Dam | คอนโทรลเพลนของ OpenWork สำหรับจัดการทั้งองค์กร |
| control plane | แผงควบคุมกลางสำหรับจัดการระบบ |
| open source | ซอฟต์แวร์โอเพนซอร์ส (เปิดเผยซอร์สโค้ด) |
| web application | เว็บแอปพลิเคชัน |
| back-end worker | ตัวประมวลผลฝั่งแบ็กเอนด์ |
| desktop application | แอปพลิเคชันเดสก์ท็อป |
| virtual private machine | เครื่องเสมือนส่วนตัว (VPS) |
| hero banner | แบนเนอร์หลักของหน้าแรก |
| Open Store | หน้าร้านค้าสำหรับดาวน์โหลดซอฟต์แวร์ |
| OpenWork Enterprise | เวอร์ชันองค์กรของ OpenWork |
| Open Cloud | บริการคลาวด์ของ OpenWork |
| connectors | ตัวเชื่อมต่อบริการภายนอก (เช่น Google Workspace, Microsoft, Telegram) |
| marketplace | ตลาดกลางสำหรับเผยแพร่สกิลและปลั๊กอิน |
| skills | ความสามารถ/สกิลที่เผยแพร่ให้ทีมใช้ได้ |
| plugins | ปลั๊กอิน (ส่วนเสริมฟังก์ชัน) |
| cloud ready | พร้อมใช้งานบนคลาวด์ |
| providers | ผู้ให้บริการโมเดล AI |
| OpenAI / Anthropic | แบรนด์ผู้ให้บริการโมเดล AI |
| Pooder | ชื่อผู้ให้บริการโมเดลที่ผู้พูดกล่าวถึง (ตามคำบรรยาย) |
| add provider | ปุ่มเพิ่มผู้ให้บริการ |
| default provider | ผู้ให้บริการเริ่มต้น |
| custom provider | ผู้ให้บริการที่กำหนดเอง |
| admins | ผู้ดูแลระบบ |
| add member | ปุ่มเพิ่มสมาชิก |
| analytics | ส่วนแสดงสถิติและตัวชี้วัด |
| metrics | ตัวชี้วัด/เมตริก |
| active users | ผู้ใช้ที่ใช้งานอยู่ |
| sessions | เซสชันการใช้งาน |
| tasks | งาน/รายการงาน |
| settings | หน้าการตั้งค่า |
| API keys | คีย์ API (รหัสสำหรับเรียกใช้ API) |
| SSO | Single Sign-On (เข้าสู่ระบบครั้งเดียวใช้ได้ทุกบริการ) |
| desktop policies | นโยบายสำหรับแอปเดสก์ท็อป |
| diagnostics | การวินิจฉัยระบบ |
| dependencies | แพ็กเกจที่ต้องติดตั้งก่อน |
| MySQL server | เซิร์ฟเวอร์ฐานข้อมูล MySQL |
| database | ฐานข้อมูล |
| Node | รันไทม์ JavaScript |
| repository | ที่เก็บโค้ด (repo) |
| npm install | คำสั่งติดตั้ง dependencies ของ Node |
| build | คอมไพล์/สร้างแพ็กเกจ |
| MCP client | ไคลเอนต์ MCP (โปรโตคอลเชื่อมต่อโมเดล) |
| DenDB | ส่วนจัดการฐานข้อมูลและการ migration (ตามคำบรรยาย) |
| Den API | API ฝั่งแบ็กเอนด์ของโปรเจกต์ |
| Den Web | ส่วนเว็บฝั่งฟรอนต์เอนด์ของโปรเจกต์ |
| environment | สภาพแวดล้อม/ตัวแปรสภาพแวดล้อมของโปรเจกต์ |
| database URL | URL สำหรับเชื่อมต่อฐานข้อมูล |
| den.env | ไฟล์ environment ของ API |
| authentication keys | คีย์ยืนยันตัวตน |
| auth URL | URL สำหรับยืนยันตัวตน |
| API public URL | URL สาธารณะของ API |
| API endpoint | จุดเชื่อมต่อของ API |
| CORS | กลไกอนุญาตให้ฟรอนต์เอนด์เรียก API ข้ามโดเมนได้ |
| single organization | โหมดองค์กรเดียว |
| multi-organization | โหมดหลายองค์กร |
| seed / seeded user | การป้อนข้อมูลผู้ใช้เริ่มต้นลงฐานข้อมูล / ผู้ใช้ที่ถูก seed ไว้ |
| Alice / acme.test | อีเมลผู้ใช้ทดสอบที่ถูก seed ไว้ในตัวอย่าง |
| migration | การย้าย/อัปเดตโครงสร้างฐานข้อมูล |
| show tables | คำสั่งแสดงตารางทั้งหมดในฐานข้อมูล |
| systemd | ระบบจัดการบริการบน Linux |
| supervisor | เครื่องมือจัดการกระบวนการ |
| working directory | ไดเรกทอรีทำงาน |
| production build | บิลด์สำหรับใช้งานจริง (โปรดักชัน) |
| distribution folder | โฟลเดอร์ที่เก็บโปรดักชันบิลด์ |
| NX start | คำสั่งรันแอปพลิเคชันด้วย Nx |
| Next.js | เฟรมเวิร์ก JavaScript สำหรับสร้างเว็บแอป |
| Nginx | เว็บเซิร์ฟเวอร์ |
| reverse proxy | พร็อกซีย้อนกลับ (ส่งต่อทราฟฟิกไปยังบริการภายใน) |
| allow public sign up | ตัวเลือกอนุญาตให้สมัครสมาชิกสาธารณะ |
| worker URL template | เทมเพลต URL ของ worker |
| provisioning | การจัดเตรียมทรัพยากร/โครงสร้างพื้นฐาน |
| Datum | ผู้ให้บริการ provisioning ฝั่งแบ็กเอนด์ (ตามคำบรรยาย) |
| Open Work Bench | ชื่อที่กล่าวถึงในขั้นตอนตั้งค่า (ตามคำบรรยาย) |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:01,279 สวัสดีครับทุกคน 2 00:00:01,279 --> 00:00:04,349 ยินดีต้อนรับสู่วิดีโออีกตอนหนึ่งครับ 3 00:00:04,349 --> 00:00:06,224 ถ้าคุณคิดว่า Clockwork 4 00:00:06,224 --> 00:00:08,356 ค่อนข้างช้าและค่อนข้างแพง
เปิดดูซับไตเติ้ลทั้งหมด (248 segments)
1 00:00:00,000 --> 00:00:01,279 สวัสดีครับทุกคน 2 00:00:01,279 --> 00:00:04,349 ยินดีต้อนรับสู่วิดีโออีกตอนหนึ่งครับ 3 00:00:04,349 --> 00:00:06,224 ถ้าคุณคิดว่า Clockwork 4 00:00:06,224 --> 00:00:08,356 ค่อนข้างช้าและค่อนข้างแพง 5 00:00:08,356 --> 00:00:10,999 เราก็ได้สร้างทางเลือกให้คุณแล้ว 6 00:00:10,999 --> 00:00:14,325 ในวิดีโอก่อนหน้าของผม ผมได้สาธิตวิธีใช้ 7 00:00:14,325 --> 00:00:17,735 OpenWork เป็นทางเลือกแบบโอเพนซอร์ส (open 8 00:00:17,735 --> 00:00:19,526 source) แทน Clockwork 9 00:00:19,526 --> 00:00:23,278 และเราได้โชว์วิธีติดตั้งเว็บแอปพลิเคชัน (web 10 00:00:23,278 --> 00:00:26,689 application) และตัวประมวลผลฝั่งแบ็กเอนด์ 11 00:00:26,689 --> 00:00:28,138 (back-end worker) 12 00:00:28,138 --> 00:00:30,696 เพื่อตั้งค่าโปรเจกต์แบบครบวงจร 13 00:00:30,696 --> 00:00:35,130 ใครอยากรู้ว่ามันทำงานยังไงก็ไปดูวิดีโอนั้นได้เลยครับ 14 00:00:35,130 --> 00:00:38,882 ในวิดีโอนี้เราจะพูดถึงหัวข้อใหม่ของ OpenWork 15 00:00:38,882 --> 00:00:42,548 นั่นคือ OpenWork Dam ซึ่งเป็นคอนโทรลเพลนของ 16 00:00:42,548 --> 00:00:45,362 OpenWork ครับ ถ้าเข้าไปที่ GitHub 17 00:00:45,362 --> 00:00:48,687 คุณจะเห็นว่าโปรเจกต์สุดท้ายของ OpenWork 18 00:00:48,687 --> 00:00:50,563 มีชื่อว่า OpenWork Dam 19 00:00:50,563 --> 00:00:53,803 มันคือคอนโทรลเพลนสำหรับจัดการ OpenWork 20 00:00:53,803 --> 00:00:57,214 ครอบคลุมทั้งทีมและองค์กร ใช้จัดการสมาชิก 21 00:00:57,214 --> 00:01:00,795 สร้างทีม จัดการสิทธิ์การเข้าถึงจากที่เดียว 22 00:01:00,795 --> 00:01:03,609 ตั้งค่านโยบายไฟล์ (file policies) 23 00:01:03,609 --> 00:01:07,105 จำกัดการเข้าถึงโมเดลในเครื่อง เผยแพร่สกิล 24 00:01:07,105 --> 00:01:09,663 (skills) และปลั๊กอิน (plugins) 25 00:01:09,663 --> 00:01:12,221 ผ่านมาร์เก็ตเพลส (marketplace) 26 00:01:12,221 --> 00:01:15,461 รวมถึงนำเข้าปลั๊กอินที่รองรับ และอื่นๆ 27 00:01:15,461 --> 00:01:18,872 อีกมากมายครับ หน้าตาของมันเป็นแบบนี้ครับ 28 00:01:18,872 --> 00:01:22,538 เราติดตั้งทุกอย่างไว้บนเครื่องเสมือนส่วนตัว 29 00:01:22,538 --> 00:01:25,096 (virtual private machine) แล้ว 30 00:01:25,096 --> 00:01:28,933 เราจะไล่ดูฟังก์ชันต่างๆ ของโปรเจกต์นี้ทีละตัว 31 00:01:28,933 --> 00:01:33,879 และโชว์วิธีติดตั้งแบบทีละขั้นตอนบนเครื่องของคุณเองด้วยครับ 32 00:01:33,879 --> 00:01:36,607 หวังว่าคลิปนี้จะมีประโยชน์นะครับ 33 00:01:36,607 --> 00:01:39,506 แต่ถ้าคุณต้องการใช้เว็บแอปพลิเคชัน 34 00:01:39,506 --> 00:01:43,258 คลิปนี้อาจไม่เกี่ยวข้อง เพราะตอนนี้ OpenWork 35 00:01:43,258 --> 00:01:47,010 Dam ใช้ได้เฉพาะแอปพลิเคชันเดสก์ท็อป (desktop 36 00:01:47,010 --> 00:01:48,800 application) เท่านั้น 37 00:01:48,800 --> 00:01:52,126 เดี๋ยวอาจรองรับเว็บแอปพลิเคชันในภายหลัง 38 00:01:52,126 --> 00:01:54,769 แต่ตอนนี้รองรับแค่เดสก์ท็อปครับ 39 00:01:54,769 --> 00:01:57,242 จากแบนเนอร์หลัก (hero banner) 40 00:01:57,242 --> 00:02:00,823 จะเห็นว่ามีให้ดาวน์โหลดสำหรับเวิร์กสเปซนี้ 41 00:02:00,823 --> 00:02:04,575 แสดงว่าตอนนี้รองรับการติดตั้งแบบโลคอล (local 42 00:02:04,575 --> 00:02:08,241 install) สำหรับแอปพลิเคชันเดสก์ท็อปเท่านั้น 43 00:02:08,241 --> 00:02:10,799 พอคลิกเข้าไปที่หน้า Open Store 44 00:02:10,799 --> 00:02:14,636 ก็จะเห็นว่ามีให้ดาวน์โหลด OpenWork Enterprise 45 00:02:14,636 --> 00:02:18,388 ลงเดสก์ท็อปครับ กลับมาที่อินเทอร์เฟซของ Open 46 00:02:18,388 --> 00:02:22,225 Cloud กันครับ หลังติดตั้งเสร็จเราจะเห็นผู้ใช้ 47 00:02:22,225 --> 00:02:23,675 OpenWork หนึ่งราย 48 00:02:23,675 --> 00:02:26,318 เราตั้งค่าผู้ใช้ทดสอบไว้หนึ่งคน 49 00:02:26,318 --> 00:02:29,814 และคุณสามารถเพิ่มคอนเนกเตอร์ (connectors) 50 00:02:29,814 --> 00:02:30,912 ต่างๆ 51 00:02:30,912 --> 00:02:35,601 ได้ เช่น Google Workspace, Microsoft, Telegram และอื่นๆ 52 00:02:35,601 --> 00:02:37,563 และในส่วนของ extensions 53 00:02:37,563 --> 00:02:41,570 คุณสามารถสร้างสกิลหรือปลั๊กอินในมาร์เก็ตเพลสนี้ 54 00:02:41,570 --> 00:02:45,407 แล้วแชร์ให้สมาชิกในทีมได้ครับ จะเห็นว่ามีปุ่ม 55 00:02:45,407 --> 00:02:49,159 add a plugin คลิกเข้าไปเพื่อเพิ่มปลั๊กอินได้ 56 00:02:49,159 --> 00:02:52,058 เช่นเราก็เพิ่มปลั๊กอิน task เข้าไป 57 00:02:52,058 --> 00:02:55,469 ซึ่งมันพร้อมใช้งานบนคลาวด์ (cloud ready) 58 00:02:55,469 --> 00:03:00,670 ส่วนอย่างอื่นพร้อมใช้งานบนเดสก์ท็อปอยู่แล้วตามค่าเริ่มต้นครับ 59 00:03:00,670 --> 00:03:03,398 คุณยังตรวจสอบโมเดลทั้งหมดได้ด้วย 60 00:03:03,398 --> 00:03:06,809 โมเดลก็คือผู้ให้บริการ (providers) ต่างๆ 61 00:03:06,809 --> 00:03:10,561 ที่คุณเพิ่มเข้าไปได้ เราลองเพิ่ม Pooder แล้ว 62 00:03:10,561 --> 00:03:14,483 คุณสามารถเพิ่มอย่างอื่นได้อีก เช่น OpenAI หรือ 63 00:03:14,483 --> 00:03:16,530 Anthropic คลิกที่ manage 64 00:03:16,530 --> 00:03:19,940 แล้วคุณจะเลือกได้ว่าผู้ดูแลระบบ (admins) 65 00:03:19,940 --> 00:03:22,328 จะเพิ่มผู้ให้บริการเองได้ไหม 66 00:03:22,328 --> 00:03:25,738 หรืออนุญาตให้ใช้โมเดลของ Open Cloud เช่น 67 00:03:25,738 --> 00:03:29,405 ถ้าอยากเพิ่มโมเดลอย่าง OpenAI ก็แค่คลิก add 68 00:03:29,405 --> 00:03:30,684 provider ได้เลย 69 00:03:30,684 --> 00:03:34,350 คุณสามารถเลือกผู้ให้บริการเริ่มต้น (default 70 00:03:34,350 --> 00:03:38,273 provider) ซึ่งรองรับผู้ให้บริการสาธารณะทั้งหมด 71 00:03:38,273 --> 00:03:41,854 หรือจะเพิ่มผู้ให้บริการแบบกำหนดเอง (custom 72 00:03:41,854 --> 00:03:45,179 provider) ก็ได้ เราลองเพิ่มมาจาก Pooder 73 00:03:45,179 --> 00:03:50,551 แต่คุณเลือกผู้ให้บริการที่อยากเพิ่มเข้ากับคอนโทรลเพลนเองได้ครับ 74 00:03:50,551 --> 00:03:54,217 เรายังเพิ่มสมาชิกและลบสมาชิกได้ด้วย แค่คลิก 75 00:03:54,217 --> 00:03:55,315 add member 76 00:03:55,315 --> 00:03:58,470 แล้วกรอกอีเมลเพื่อเชิญสมาชิกในทีมครับ 77 00:03:58,470 --> 00:04:02,052 ไปที่ส่วน analytics จะเห็นเมตริก (metrics) 78 00:04:02,052 --> 00:04:05,974 ต่างๆ เช่น ผู้ใช้ที่ใช้งานอยู่ (active users), 79 00:04:05,974 --> 00:04:09,129 เซสชันต่อสัปดาห์ (sessions per week), 80 00:04:09,129 --> 00:04:16,035 เซสชันสัปดาห์นี้ และจำนวนงาน (tasks) ต่อสัปดาห์ นี่คือวิธีที่เราติดตามเมตริกต่างๆ 81 00:04:16,035 --> 00:04:21,748 ทั่วทั้งองค์กรครับ สุดท้ายมีหน้า settings ซึ่งคุณสามารถดู API keys, 82 00:04:21,748 --> 00:04:25,074 SSO, นโยบายเดสก์ท็อป (desktop policies) 83 00:04:25,074 --> 00:04:28,740 รวมถึงส่วน diagnostics และข้อมูลทั่วไป ครับ 84 00:04:28,740 --> 00:04:31,554 นี่คือหน้าตาของอินเทอร์เฟซทั้งหมด 85 00:04:31,554 --> 00:04:33,259 มันตรงไปตรงมามากครับ 86 00:04:33,259 --> 00:04:35,561 ต่อไปเราจะพูดถึงวิธีติดตั้ง 87 00:04:35,561 --> 00:04:38,631 เพราะการติดตั้งนี่เป็นจุดที่สับสนมาก 88 00:04:38,631 --> 00:04:41,530 มันค่อนข้างซับซ้อนและระดับสูงหน่อย 89 00:04:41,530 --> 00:04:45,282 แต่แค่ทำตามบทช่วยสอนนี้ คุณก็น่าจะตั้งค่าได้ 90 00:04:45,282 --> 00:04:48,863 ใช้เวลาไม่กี่นาทีครับ ขั้นแรก ถ้าจะติดตั้ง 91 00:04:48,863 --> 00:04:52,700 OpenWork Dam คุณต้องติดตั้ง dependencies ก่อน 92 00:04:52,700 --> 00:04:55,514 อันดับแรกต้องติดตั้ง MySQL server 93 00:04:55,514 --> 00:04:59,095 เพราะมันต้องใช้ฐานข้อมูลแบ็กเอนด์ (backend 94 00:04:59,095 --> 00:05:01,738 database) ต้องติดตั้ง Node ด้วย 95 00:05:01,738 --> 00:05:05,234 จากนั้นก็ต้องตั้งค่าฐานข้อมูลสำหรับ MySQL 96 00:05:05,234 --> 00:05:07,536 ในกรณีนี้ก็คือ OpenWork Dam 97 00:05:07,536 --> 00:05:10,180 พร้อมกำหนดชื่อผู้ใช้และรหัสผ่าน 98 00:05:10,180 --> 00:05:13,164 นี่คือฐานข้อมูลที่คุณจะใช้เชื่อมต่อ 99 00:05:13,164 --> 00:05:17,001 จากนั้นก็เริ่มสร้างโปรเจกต์ได้เลยครับ คุณต้อง 100 00:05:17,001 --> 00:05:18,877 clone repository ต่างๆ 101 00:05:18,877 --> 00:05:26,551 แล้วรัน npm install เพื่อติดตั้ง dependencies ทั้งหมด และ build repository ของแพ็กเกจต่างๆ 102 00:05:26,551 --> 00:05:29,621 เช่น build แพ็กเกจอีเมล, MCP client, 103 00:05:29,621 --> 00:05:31,155 และอย่างเช่น DenDB 104 00:05:31,155 --> 00:05:34,054 ซึ่งใช้สำหรับการเชื่อมต่อฐานข้อมูล 105 00:05:34,054 --> 00:05:37,891 การย้ายข้อมูล (migration) รวมถึง Den API ด้วย 106 00:05:37,891 --> 00:05:41,302 โปรเจกต์ OpenWork Dam มีส่วนสำคัญสองส่วน 107 00:05:41,302 --> 00:05:44,286 ส่วนหนึ่งคือ API อีกส่วนคือ Den Web 108 00:05:44,286 --> 00:05:46,930 ที่คุณกำลังดูอยู่นี่คือ Den Web 109 00:05:46,930 --> 00:05:49,999 ส่วนสำคัญอีกชิ้นคือ API ซึ่ง Den Web 110 00:05:49,999 --> 00:05:53,666 เรียกใช้งานอยู่ มันคือการเรียกแบ็กเอนด์ Den 111 00:05:53,666 --> 00:05:55,968 API ครับ ต้องแน่ใจว่า build 112 00:05:55,968 --> 00:05:58,355 แพ็กเกจทั้งหมดเสร็จเรียบร้อย 113 00:05:58,355 --> 00:06:02,022 จากนั้นต้องตั้งค่าสภาพแวดล้อม (environment) 114 00:06:02,022 --> 00:06:05,433 ซึ่งสำคัญมากสำหรับการติดตั้งทั้งหมด เช่น 115 00:06:05,433 --> 00:06:09,184 ต้องกำหนด database URL สำหรับ API ไฟล์นี้คือ 116 00:06:09,184 --> 00:06:11,401 den.env ใช้สำหรับ API ครับ 117 00:06:11,401 --> 00:06:14,215 จากนั้นต้องตั้งค่าคีย์ยืนยันตัวตน 118 00:06:14,215 --> 00:06:18,137 (authentication keys) และกำหนด auth URL รวมถึง 119 00:06:18,137 --> 00:06:20,951 API public URL ซึ่งก็คือ api.then 120 00:06:20,951 --> 00:06:22,912 หรือโดเมนอื่นๆ ที่คุณมี 121 00:06:22,912 --> 00:06:26,067 นี่คือการชี้ไปที่แบ็กเอนด์ API นะครับ 122 00:06:26,067 --> 00:06:29,904 แอปพลิเคชันฝั่งฟรอนต์เอนด์จะชี้ไปที่แบ็กเอนด์ 123 00:06:29,904 --> 00:06:33,571 API นี่คือการตั้งค่า API ให้มี API endpoint 124 00:06:33,571 --> 00:06:37,408 ที่ใช้กับ public URL ได้ จากนั้นก็ต้องตั้งค่า 125 00:06:37,408 --> 00:06:39,198 CORS (course origins) 126 00:06:39,198 --> 00:06:42,865 เพื่ออนุญาตให้ฟรอนต์เอนด์เรียก API ได้ เช่น 127 00:06:42,865 --> 00:06:45,764 ถ้าฟรอนต์เอนด์คือ then.example.com 128 00:06:45,764 --> 00:06:47,640 คุณก็ต้องตั้งค่าตรงนี้ 129 00:06:47,640 --> 00:06:51,391 เพื่อให้ทราฟฟิกจากฟรอนต์เอนด์เข้าถึง API ได้ 130 00:06:51,391 --> 00:06:55,143 และต้องตั้งค่าพารามิเตอร์ขององค์กรต่างๆ ด้วย 131 00:06:55,143 --> 00:06:57,957 เช่น โหมดเป็น single organization 132 00:06:57,957 --> 00:07:01,709 (องค์กรเดียว) ซึ่งพวกเขารองรับโหมดหลายองค์กร 133 00:07:01,709 --> 00:07:03,840 (multi-organization) ด้วย 134 00:07:03,840 --> 00:07:06,654 จากนั้นกำหนดชื่อและสล็อตขององค์กร 135 00:07:06,654 --> 00:07:08,786 และต้องระบุอีเมลให้ชัดเจน 136 00:07:08,786 --> 00:07:11,855 ซึ่งสำคัญมากสำหรับการตั้งค่าแบบโลคอล 137 00:07:11,855 --> 00:07:15,778 เพราะอย่าง Alice ที่ acme.test คือผู้ใช้ที่ถูก 138 00:07:15,778 --> 00:07:19,444 seed ไว้ครับ ในการทดสอบ ขั้นแรกคุณต้อง seed 139 00:07:19,444 --> 00:07:20,542 สภาพแวดล้อม 140 00:07:20,542 --> 00:07:25,488 ซึ่งเดี๋ยวเราจะโชว์วิธีทำเป็นขั้นตอนสุดท้ายในอีกไม่กี่นาที 141 00:07:25,488 --> 00:07:32,480 แต่จำไว้ว่าจำเป็นต้องทำถ้าคุณจะรันบนเครื่องโลคอลหรือเครื่องเสมือนส่วนตัวเพื่อทดสอบ 142 00:07:32,480 --> 00:07:36,061 และนี่คือ URL ที่ตั้งค่าไว้แล้ว ตอนตั้งค่า 143 00:07:36,061 --> 00:07:38,789 seed URL คุณต้องวาง URL ลงตรงนี้ 144 00:07:38,789 --> 00:07:40,580 แล้วรีเฟรชสภาพแวดล้อม 145 00:07:40,580 --> 00:07:43,053 นี่คือจุดสำคัญที่อยากเน้นครับ 146 00:07:43,053 --> 00:07:46,549 และสำหรับการตั้งค่าแบบ public ให้ตั้งเป็น 147 00:07:46,549 --> 00:07:50,215 false ไปก่อน จะเปลี่ยนเป็น true ทีหลังก็ได้ 148 00:07:50,215 --> 00:07:54,052 และสำหรับ email password หลัง SSL (after SSL) 149 00:07:54,052 --> 00:07:57,804 ก็ตั้งเป็น true ได้ แต่ค่าเริ่มต้นเป็น false 150 00:07:57,804 --> 00:08:00,618 ก็ได้ และปิดการยืนยันอีเมล (email 151 00:08:00,618 --> 00:08:04,455 verification) ด้วยการตั้งเป็น false ก็ได้ครับ 152 00:08:04,455 --> 00:08:06,927 ส่วนนี้เป็นสำหรับ worker ครับ 153 00:08:06,927 --> 00:08:10,850 ซึ่งไม่เกี่ยวกับเว็บแอปพลิเคชันหรือคอนโทรลเพลน 154 00:08:10,850 --> 00:08:12,129 ต่างกันนิดหน่อย 155 00:08:12,129 --> 00:08:15,284 ใช้ในกรณีที่คุณมีแอปพลิเคชันงาน (task 156 00:08:15,284 --> 00:08:17,927 application) อยู่บนเครื่องโลคอล 157 00:08:17,927 --> 00:08:21,679 สำหรับการจัดเตรียม (provisioning) ถ้าต้องใช้ 158 00:08:21,679 --> 00:08:25,430 Datum เป็นตัวจัดเตรียมฝั่งแบ็กเอนด์ (backend 159 00:08:25,430 --> 00:08:27,903 provisioner) คุณก็กำหนด Datum 160 00:08:27,903 --> 00:08:31,484 เป็นผู้ให้บริการสำหรับการ provisioning ได้ 161 00:08:31,484 --> 00:08:35,236 และตั้งค่าพารามิเตอร์ต่างๆ แต่ส่วนนี้เป็นแค่ 162 00:08:35,236 --> 00:08:38,817 worker URL template สำหรับ worker แบบโลคอล 163 00:08:38,817 --> 00:08:41,460 เช่น เราติดตั้ง OpenWork worker 164 00:08:41,460 --> 00:08:43,080 ไว้ในวิดีโอก่อนหน้า 165 00:08:43,080 --> 00:08:45,724 คุณก็เอาลิงก์นั้นมาวางตรงนี้ได้ 166 00:08:45,724 --> 00:08:49,646 คือบอกสภาพแวดล้อมแบบโลคอลว่าเราชี้ไปที่ worker 167 00:08:49,646 --> 00:08:53,313 ระยะไกลตัวนั้น เพื่อให้มันเก็บเมตริกได้ครับ 168 00:08:53,313 --> 00:08:56,467 ส่วนสุดท้ายก็คือการแทนที่คีย์ต่างๆ ใน 169 00:08:56,467 --> 00:08:59,111 environment ของ API เท่านั้นเอง 170 00:08:59,111 --> 00:09:01,924 จากนั้นต้องตั้งค่าเว็บแอปพลิเคชัน 171 00:09:01,924 --> 00:09:05,761 ซึ่งก็ต้องชี้ไปที่แบ็กเอนด์ API ด้วย แค่กำหนด 172 00:09:05,761 --> 00:09:07,893 data API base ให้เป็น API 173 00:09:07,893 --> 00:09:11,304 ที่คุณตั้งไว้เป็นแบ็กเอนด์ แล้วก็ตั้งค่า 174 00:09:11,304 --> 00:09:15,226 public origin ซึ่งก็คือ URL ของเว็บแอปพลิเคชัน 175 00:09:15,226 --> 00:09:18,893 ประมาณนี้ครับ จากนั้นต้อง migrate ฐานข้อมูล 176 00:09:18,893 --> 00:09:22,133 โดยใช้คำสั่งนี้ เพราะคำสั่ง DB migrate 177 00:09:22,133 --> 00:09:23,412 ธรรมดาใช้ไม่ได้ 178 00:09:23,412 --> 00:09:27,249 คุณต้องใช้คำสั่งบรรทัดเดียวที่โชว์ให้ดูตรงนี้ 179 00:09:27,249 --> 00:09:30,915 แล้วก็ดูตาราง (tables) หลัง migration เสร็จ 180 00:09:30,915 --> 00:09:32,876 เช่น เรารัน show tables 181 00:09:32,876 --> 00:09:35,520 จะเห็นว่าหลังจากทำทุกอย่างเสร็จ 182 00:09:35,520 --> 00:09:39,442 คุณจะเห็นตารางทั้งหมดในฐานข้อมูล OpenWork ครับ 183 00:09:39,442 --> 00:09:43,108 ขั้นต่อไปคือการสร้าง systemd แต่ถ้าแค่ทดสอบ 184 00:09:43,108 --> 00:09:45,240 คุณก็ไม่ต้องสร้าง systemd 185 00:09:45,240 --> 00:09:48,651 แต่ถ้าจะรันบนโปรดักชัน คุณน่าจะต้องสร้าง 186 00:09:48,651 --> 00:09:51,038 systemd หรือ supervisor ครับ 187 00:09:51,038 --> 00:09:54,278 จะเห็นว่ามีข้อมูลที่เราดูไปก่อนหน้านี้ 188 00:09:54,278 --> 00:09:57,689 พวกเขาต้องการ environment ต้องมี working 189 00:09:57,689 --> 00:09:58,787 directory 190 00:09:58,787 --> 00:10:02,795 และต้องแน่ใจว่าเริ่มรันด้วยคำสั่งบรรทัดเดียวนี้ 191 00:10:02,795 --> 00:10:06,376 และอย่างที่เห็น นี่คือบิลด์สำหรับโปรดักชัน 192 00:10:06,376 --> 00:10:09,957 (production build) จะเห็นว่าอยู่ในโฟลเดอร์ 193 00:10:09,957 --> 00:10:12,856 distribution นั่นคือโปรดักชันบิลด์ 194 00:10:12,856 --> 00:10:16,864 คุณจะรันให้เร็วขึ้นได้ด้วยโปรดักชันบิลด์นี้ครับ 195 00:10:16,864 --> 00:10:19,080 จากนั้นต้องตั้งค่า systemd 196 00:10:19,080 --> 00:10:22,662 ของเว็บแอปพลิเคชันด้วย ถ้าจะรันบนโปรดักชัน 197 00:10:22,662 --> 00:10:26,584 หลัง build ทุกอย่างเสร็จ ต้องเพิ่ม environment 198 00:10:26,584 --> 00:10:30,250 นี้ กำหนดให้ Den Web เป็น working directory 199 00:10:30,250 --> 00:10:32,894 และต้องแน่ใจว่ารันด้วย NX start 200 00:10:32,894 --> 00:10:35,878 เพราะโปรเจกต์นี้ build ด้วย Next.js 201 00:10:35,878 --> 00:10:40,738 แล้วต้องระบุว่าต้องการรันแอปพลิเคชันนี้เป็นโปรดักชันบิลด์ 202 00:10:40,738 --> 00:10:42,017 ตอน seed ผู้ใช้ 203 00:10:42,017 --> 00:10:45,769 คุณต้องเปลี่ยนกลับเป็นโหมดพัฒนา (development 204 00:10:45,769 --> 00:10:48,242 mode) ซึ่งเดี๋ยวจะพูดถึงอีกที 205 00:10:48,242 --> 00:10:49,777 แต่สำหรับบริการนี้ 206 00:10:49,777 --> 00:10:53,784 คุณรันเป็นโปรดักชันบิลด์เพื่อให้เร็วขึ้นได้ครับ 207 00:10:53,784 --> 00:10:56,427 ส่วน Nginx proxy ก็แค่ชี้ proxy 208 00:10:56,427 --> 00:11:00,009 ไปที่บริการโลคอลโดยใช้ reverse proxy ง่ายๆ 209 00:11:00,009 --> 00:11:01,970 ไม่มีอะไรต้องพูดถึงครับ 210 00:11:01,970 --> 00:11:04,442 จากนั้นต้องตั้งค่าผู้ใช้ทดสอบ 211 00:11:04,442 --> 00:11:07,768 ซึ่งเป็นกระบวนการ seed อันนี้น่าสนใจมาก 212 00:11:07,768 --> 00:11:09,899 เพราะต้องปรับ environment 213 00:11:09,899 --> 00:11:13,566 ก่อนหน้านี้เล็กน้อยเพื่อตั้งค่า เช่น นี่คือ 214 00:11:13,566 --> 00:11:16,209 API environment สำหรับแบ็กเอนด์ 215 00:11:16,209 --> 00:11:20,046 แต่มีคอนฟิกสองสามอย่างที่ต้องอัปเดตตอนทำ seed 216 00:11:20,046 --> 00:11:23,372 ครับ เพราะเราบิลด์ทุกอย่างเป็นโปรดักชัน 217 00:11:23,372 --> 00:11:27,038 จะเห็นว่า open work app mode ใน environment 218 00:11:27,038 --> 00:11:30,619 ถูกตั้งเป็นศูนย์ ซึ่งหมายถึงโปรดักชันบิลด์ 219 00:11:30,619 --> 00:11:34,371 ดังนั้นต้องตั้งเป็นศูนย์ แต่พอจะ seed ผู้ใช้ 220 00:11:34,371 --> 00:11:38,208 ต้องเปลี่ยนกลับเป็นหนึ่ง ซึ่งหมายถึงโหมดพัฒนา 221 00:11:38,208 --> 00:11:42,130 และต้องแน่ใจว่า allow public sign up เป็น true 222 00:11:42,130 --> 00:11:46,053 เพื่อให้สามารถ seed อีเมลได้ ถ้าตั้งเป็น false 223 00:11:46,053 --> 00:11:49,207 มันอาจไม่ทำงาน ต้องตั้งเป็น true ก่อน 224 00:11:49,207 --> 00:11:53,130 แล้วก็ตั้ง allow email password after SSL เป็น 225 00:11:53,130 --> 00:11:57,052 true ด้วย พอ seed ผู้ใช้เสร็จก็เปลี่ยนกลับเป็น 226 00:11:57,052 --> 00:12:00,207 false ได้ ไม่ต้องใช้โหมด dev อีกต่อไป 227 00:12:00,207 --> 00:12:03,362 กลับไปเป็นโหมดโปรดักชันครับ หลัง seed 228 00:12:03,362 --> 00:12:04,470 ทุกอย่างเสร็จ 229 00:12:04,470 --> 00:12:08,222 ก็เช็คผู้ใช้ได้ว่าอยู่ในฐานข้อมูลจริงหรือไม่ 230 00:12:08,222 --> 00:12:10,951 เช่น นี่คือผู้ใช้ที่เรา seed ไว้ 231 00:12:10,951 --> 00:12:13,338 จะเห็นว่าอยู่ในฐานข้อมูลจริง 232 00:12:13,338 --> 00:12:16,919 ทุกอย่างเสร็จเรียบร้อย จากนั้นก็สตาร์ท API 233 00:12:16,919 --> 00:12:18,966 และสตาร์ทเว็บแอปพลิเคชัน 234 00:12:18,966 --> 00:12:21,865 แล้วคุณจะเห็นว่าทุกอย่างรันถูกต้อง 235 00:12:21,865 --> 00:12:25,275 นั่นคือสิ่งที่คุณอยากเห็นครับ จบแล้วครับ 236 00:12:25,275 --> 00:12:28,089 นี่คือวิธีตั้งค่า Open Work Bench 237 00:12:28,089 --> 00:12:31,244 เป็นคอนโทรลเพลนบนเครื่องเสมือนส่วนตัว 238 00:12:31,244 --> 00:12:32,864 พอทุกอย่างพร้อมแล้ว 239 00:12:32,864 --> 00:12:36,616 คุณก็ติดตั้งแอปพลิเคชันเดสก์ท็อปของ OpenWork 240 00:12:36,616 --> 00:12:38,321 บนเครื่องโลคอลได้เลย 241 00:12:38,321 --> 00:12:41,220 แค่คลิกตรงนี้แล้วดาวน์โหลดทุกอย่าง 242 00:12:41,220 --> 00:12:43,267 ทำตามขั้นตอนการดาวน์โหลด 243 00:12:43,267 --> 00:12:47,956 แล้วเชื่อมต่อกับคอนโทรลเพลนกลางของคุณก็เป็นอันเสร็จครับ 244 00:12:47,956 --> 00:12:50,685 หวังว่าคลิปนี้จะมีประโยชน์นะครับ 245 00:12:50,685 --> 00:12:53,669 ถ้าชอบวิดีโอนี้ ช่วยกดติดตาม กดไลก์ 246 00:12:53,669 --> 00:12:55,801 หรือคอมเมนต์ได้ถ้ามีคำถาม 247 00:12:55,801 --> 00:12:57,847 ขอบคุณมากที่สนับสนุนช่อง 248 00:12:57,847 --> 00:13:00,320 และเจอกันใหม่ในวิดีโอหน้าครับ