- Twake Drive เป็นแพลตฟอร์มคลาวด์สตอเรจโอเพนซอร์สที่มอบความสามารถในการจัดเก็บและแชร์ไฟล์คล้ายกับ Google Drive
- รองรับการปรับใช้แบบ Docker จึงสามารถรันบนสภาพแวดล้อมโลคัลได้อย่างง่ายดาย และใช้ Node.js และ MongoDB เป็นเทคโนโลยีสแต็กหลัก
- ออกแบบด้วยโครงสร้างที่แยกฟรอนต์เอนด์และแบ็กเอนด์ พร้อมมอบสภาพแวดล้อมการพัฒนาบนพื้นฐาน Yarn และความสามารถในการตั้งค่าเส้นทางจัดเก็บไฟล์ภายในเครื่อง
- เผยแพร่ภายใต้ไลเซนส์ Affero GPL v3 ทำให้องค์กรหรือหน่วยงานสามารถปรับแต่งเพื่อนำไปโฮสต์เองได้อย่างอิสระ
ภาพรวมโปรเจกต์
- Twake Drive เป็นโซลูชันทดแทน Google Drive แบบโอเพนซอร์สที่พัฒนาโดย Linagora โดยให้ความสามารถด้านการจัดเก็บไฟล์ การแชร์ และการทำงานร่วมกันในรูปแบบที่สามารถใช้งานบนเซิร์ฟเวอร์ของตนเองได้
- มุ่งเป้าไปที่องค์กรที่ต้องการหลีกเลี่ยงการผูกติดกับบริการคลาวด์ และคงไว้ซึ่งความเป็นเจ้าของข้อมูลและการควบคุมความปลอดภัย
- รีโพซิทอรีที่เผยแพร่บน GitHub มีดาวมากกว่า 1,000 รายการและฟอร์กมากกว่า 70 รายการ และยังคงได้รับการบำรุงรักษาอย่างต่อเนื่อง
- โปรเจกต์นี้ใช้ไลเซนส์ AGPL-3.0 ซึ่งกำหนดให้เมื่อมีการแก้ไขซอร์สโค้ดและแจกจ่ายต่อ จะต้องคงเงื่อนไขไลเซนส์เดิมไว้
ฟีเจอร์หลักและเทคโนโลยีสแต็ก
- Twake Drive ทำงานบนพื้นฐานของ Node.js(18.x ขึ้นไป), MongoDB, และ Yarn และออกแบบด้วยสถาปัตยกรรมที่แยกฟรอนต์เอนด์และแบ็กเอนด์ออกจากกัน
- ฟรอนต์เอนด์รันจากไดเรกทอรี
tdrive/frontend/ ด้วย yarn dev:start
- แบ็กเอนด์รันจาก
tdrive/backend/node/ หลังตั้งค่าตัวแปรสภาพแวดล้อมแล้วด้วย yarn dev
- มีตัวเลือกการปรับใช้ที่เรียบง่ายผ่าน Docker Compose (
docker-compose.minimal.yml) ทำให้สะดวกต่อการทดสอบบนเครื่องโลคัลและการปรับใช้ภายในองค์กร
- สามารถรันฐานข้อมูลได้อย่างง่ายดายด้วยคำสั่งรันคอนเทนเนอร์ MongoDB (
docker run -p 27017:27017 -d mongo)
- การตั้งค่าสภาพแวดล้อมสามารถปรับรายละเอียดได้ผ่านไฟล์
tdrive/backend/node/config/development.json
โครงสร้างการพัฒนาและการปรับใช้
- Twake Drive แยกส่วนระหว่างฟรอนต์เอนด์ (อิง React) และแบ็กเอนด์ (อิง Node.js) และสามารถกำหนดพาธจัดเก็บไฟล์ภายในเครื่องได้โดยตรง
- ตั้งค่าตำแหน่งจัดเก็บเอกสารผ่านตัวแปรสภาพแวดล้อม
STORAGE_LOCAL_PATH
- รองรับฟังก์ชัน publish-subscribe ในสภาพแวดล้อมโลคัลด้วยการตั้งค่า PUBSUB_TYPE=local
- แอปพลิเคชันรันบนพอร์ต 3000 โดยค่าเริ่มต้น และมีโครงสร้างที่เหมาะกับสภาพแวดล้อมการพัฒนาและการทดสอบ
- มีทั้งไฟล์ตั้งค่า Docker Bake (
docker-bake.hcl) และคอนฟิก GitHub Actions สำหรับ CI/CD จึงรองรับการ build และทดสอบแบบอัตโนมัติ
สถานะโค้ดและรีโพซิทอรี
- รีโพซิทอรีประกอบด้วย882 คอมมิต, 61 แบรนช์, และ 46 แท็ก สะท้อนประวัติการพัฒนาที่ต่อเนื่อง
- สัดส่วนภาษาหลักประกอบด้วย TypeScript 58.9%, JavaScript 32.6%, SCSS 3.7%, CSS 2.2%, HTML 1.3%, Less 1.0%
ไลเซนส์และศักยภาพการนำไปใช้
- Twake Drive เผยแพร่ภายใต้ไลเซนส์ Affero GPL v3 ซึ่งกำหนดให้การแก้ไขซอร์สโค้ดและการแจกจ่ายต่อยังคงมีภาระการเปิดเผยภายใต้เงื่อนไขเดียวกัน
- องค์กรสามารถนำไปใช้เป็นฐานสำหรับสร้างระบบคลาวด์สตอเรจภายในองค์กร หรือขยายต่อในรูปแบบ SaaS ได้
- ถูกมองว่าเป็นทางเลือกที่ช่วยให้บรรลุทั้งการลดต้นทุนจากบริการคลาวด์เชิงพาณิชย์ และการรักษาอธิปไตยของข้อมูลไปพร้อมกัน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
หลายคนที่นี่พูดถึงฟีเจอร์จำเป็นหรือเรื่องแบ็กอัป แต่สิ่งที่สำคัญจริง ๆ คือจะสร้างชุมชนและรักษามันไว้ได้ในระยะยาวหรือไม่
เนื่องจากสตอเรจคลาวด์โอเพนซอร์สมักหายไปอย่างรวดเร็วเมื่อผู้ดูแลหมดไฟ โมเดลธุรกิจที่ยั่งยืนหรือฐานผู้มีส่วนร่วมจึงสำคัญพอ ๆ กับเช็กลิสต์ทางเทคนิค
อีกอย่างคือ การทำงานร่วมกันได้ (interoperability) ที่มักถูกประเมินค่าต่ำไป ถ้ารองรับ WebDAV หรือ S3 และเชื่อมกับระบบยืนยันตัวตนเดิมได้ ทีมต่าง ๆ ก็จะลองใช้ได้ง่ายขึ้นมาก
ท้ายที่สุดผู้คนต้องการบริการที่จะไม่หายไปหลังช่วง ‘ฮันนีมูน’ จบลง ซึ่งนั่นยากกว่าการเพิ่มแถบความคืบหน้าอันเดียวมาก
ฉันใช้ Syncthing และไม่เคยมีใครบอกให้ฉันไปมีส่วนร่วมกับชุมชนเลย แต่มันก็ยังทำงานได้ดีอยู่
ดูเหมือนว่า Syncthing จะหาเงินค่าพัฒนาด้วยการที่บริษัทชื่อ Kastelo ให้บริการซัพพอร์ตระดับองค์กร
ฉันเองก็ทำบริษัทที่ปรึกษาโอเพนซอร์ส และอยู่ได้สบายด้วยสัญญากับองค์กรโดยไม่ต้องพึ่งชุมชน
ชุมชนก็ดีอยู่หรอก แต่ในระยะยาวฉันคิดว่า โมเดลธุรกิจและกลยุทธ์การตลาด สำคัญกว่า
ถ้าระบบรองรับ S3 API ก็เปลี่ยนสตอเรจอะไรก็ได้ง่ายมาก ไม่ว่าจะเป็น Backblaze, Wasabi หรือ S3 API แบบโลคัล ส่วนใหญ่แทนกันได้แทบจะทันที
ในบรรดา การซิงก์ไฟล์แบบ self-hosted ที่เคยใช้มา Seafile ใช้งานได้ดีที่สุด
แต่การอัปเกรดเซิร์ฟเวอร์ก็ยังยุ่งยากอยู่ ส่วน NextCloud หรือเครื่องมือคล้ายกันนั้น สำหรับฉันมันคือ หายนะเต็มรูปแบบ
มีปลั๊กอินที่ต้องใช้ครบ ประสิทธิภาพก็ดี และการซิงก์ก็สมบูรณ์แบบ ถึงขั้นไม่มีเหตุผลให้ลองทางเลือกอื่นเลย
เมื่อก่อน NextCloud อืดกับรีโพขนาดใหญ่และต้องใช้เครื่องที่แรงกว่า
แต่ Seafile ทำงานได้ดีแม้บนบอร์ด ARM ที่มี RAM 2GB
ทดสอบอย่างละเอียดแล้ว และประหลาดใจกับความเร็วกับความตอบสนองของการซิงก์
ตอนนี้ย้ายไฟล์ทั้งหมดออกจาก Google Drive มาใช้เป็นคลาวด์หลักแล้ว
ถ้าตั้งชื่อว่า Twake Dwive น่าจะขำดี
เหมือนที่คนอื่นถาม ฉันก็อยากรู้ว่ามันเทียบกับ NextCloud หรือ ownCloud แล้วเป็นอย่างไร และมีไคลเอนต์สำหรับ Windows/Mac/Mobile หรือเปล่า
ความอยู่รอดของเครื่องมือไดรฟ์โอเพนซอร์สขึ้นอยู่กับสามอย่าง
ถ้า Twake ทำสิ่งเหล่านี้ได้ดีพร้อมรองรับ S3 และ LDAP ก็มีโอกาสไปได้ไกล
แต่สิ่งที่ยากจริง ๆ คือ ความน่าเชื่อถือและเอกสารประกอบ ต้องมี threat model ที่ชัดเจน คู่มือย้ายจาก Drive หรือ Dropbox และ CLI ขนาดเล็กที่ทำงานได้แม้ในสภาพแวดล้อมแบบ headless
ครั้งหนึ่งที่บริษัทเคยเปิดใช้แบ็กอัปไว้ แต่พอจะกู้คืนกลับพบว่าพังเสียหายทั้งหมด ตั้งแต่นั้นมาการตรวจสอบแบ็กอัปจึงเป็นเรื่องสำคัญอันดับหนึ่งสำหรับฉัน
ฉันสงสัยว่าการสร้างแอปประสิทธิภาพสูงแบบนี้ด้วย 58.9% TypeScript และ 32.6% JavaScript จะทำได้จริงหรือ
ฉันคิดว่าส่วนที่ไม่ใช่คอขวดสำคัญกว่าความเร็วของภาษา
ออกนอกประเด็นนิดหน่อย แต่มีวิธีทำให้ Viber หรือ WhatsApp ใช้สตอเรจแบ็กอัปอื่นแทน Google Drive ไหม? สงสัยว่าถ้ารูทเครื่องแล้วหลอกอินเทอร์เฟซจะทำได้หรือเปล่า
ระบบแบบนี้จำเป็นต้องมี ฐานข้อมูล จริงหรือ?
บน Unix แค่มี CRUD ของผู้ใช้และไฟล์กับการกำหนดสิทธิ์ก็น่าจะพอแล้ว มีซอฟต์แวร์เก่า ๆ ที่แค่ครอบสิ่งเหล่านี้ด้วย UI หรือ API ไหม? ต่อให้ใช้โปรโตคอล SAMBA ก็ได้
อีกทั้งถ้าจะจำกัดตามกลุ่มผู้ใช้ ก็จะชนเพดานจำนวนกลุ่ม (65536 กลุ่ม) ได้อย่างรวดเร็ว
usersกับdocumentsได้ง่าย หรือใช้ MongoDB indexes และ transactions ได้สะดวกการจัดการ metadata ของเวอร์ชันก็ง่ายขึ้น และยังแฮ็กใช้งานบน Windows ได้ง่ายด้วย
ฉันคงต่างจากบรรยากาศใน HN แต่สำหรับฉันฟีเจอร์ที่สำคัญที่สุดคือ การค้นหา
พอเก็บข้อมูลระดับหลาย TB ก็หาภาพสักภาพได้ยากมาก
ต้องมีฟีเจอร์วิเคราะห์ภาพที่ค้นหาได้แบบ “คนสองคนบน Nothing Street”
ตอนนี้ Google ยังเหนือกว่ามากในเรื่องนี้ แต่ก็หวังว่าคลาวด์เจ้าอื่นจะตามทันสักวัน
ฉันแนะนำให้ลองใช้ Syncthing สักครั้ง
เพียงแต่ประสบการณ์บนมือถือยังค่อนข้างดิบอยู่ ถึงอย่างนั้นเวลารีบก็ยังดึงไฟล์ผ่านเว็บอินเทอร์เฟซได้