ข้ามไปที่เนื้อหา
← บทความทั้งหมด

รัน tapeshelf บนเซิร์ฟเวอร์ของคุณเอง

tapeshelf เป็นโอเพนซอร์สภายใต้สัญญาอนุญาต AGPL-3.0 และแอปที่ขับเคลื่อน tapeshelf.com ก็คือแอปเดียวกับที่คุณจะรันบนเซิร์ฟเวอร์ของตัวเองได้ ตอนนี้ยังไม่มีรีโพสิทอรีสาธารณะและคู่มือการติดตั้ง ระหว่างนี้ บทความนี้จะเล่าว่าการรันอินสแตนซ์ของตัวเองจะเป็นอย่างไร เพื่อให้คุณตัดสินใจได้ว่าเหมาะกับคุณไหม และวางแผนเรื่องเซิร์ฟเวอร์ได้

สแต็กเดียว

อินสแตนซ์หนึ่งคือ Docker Compose สแต็กเดียว

browser ──HTTPS──► Caddy ─── the web app, security headers
                     └── /api, /ws ──► api ──► Postgres, Redis
                                       worker (ffmpeg) ──► Postgres, Redis
browser ──► S3-compatible storage: uploads, video segments, images
  • Caddy ให้บริการเว็บแอปและส่งต่อทราฟฟิกของ API และ WebSocket ขอและต่ออายุใบรับรอง Let’s Encrypt ได้เอง ถ้าคุณมีรีเวิร์สพร็อกซีอยู่แล้ว Caddy ก็อยู่หลังพร็อกซีนั้นได้โดยไม่ต้องใช้ TLS
  • api คือทุกอย่างที่แอปทำ ได้แก่ บัญชี ชั้นวาง การตรวจสิทธิ์ คำขอและการแลกเปลี่ยน ลิงก์ชั่วคราว และการแจกคีย์วิดีโอ
  • worker คือโค้ดชุดเดียวกันที่เริ่มเป็นโปรเซสที่สอง ในอิมเมจที่มี ffmpeg ทำหน้าที่ล้างเมทาดาทาและแปลงไฟล์ที่อัปโหลด เข้ารหัสสำเนาสำหรับสตรีม สร้างเฟรมและพรีวิว เรนเดอร์การแก้ไข และส่งอีเมลกับการแจ้งเตือน
  • Postgres เก็บข้อมูล Redis เก็บคิวงานและแคชอายุสั้น
  • คอนเทนเนอร์ migrate แบบใช้ครั้งเดียวจะรันทุกครั้งที่เริ่มระบบ ทำการไมเกรตฐานข้อมูล สร้างบัญชีผู้ดูแลจากการตั้งค่าของคุณ และตั้งค่าบักเก็ต ได้แก่ การอ่านรูปภาพแบบสาธารณะโดยดึงรายการไฟล์ไม่ได้ กฎล้างไฟล์อัปโหลดที่ค้างไว้ และ CORS สำหรับโดเมนของคุณ
  • บริการ backup จะดัมป์ฐานข้อมูลลงบักเก็ตของคุณวันละครั้ง และเก็บดัมป์ล่าสุดไว้ 14 ชุด

วิดีโอไม่ผ่าน API เลย เบราว์เซอร์อัปโหลดตรงไปยังพื้นที่จัดเก็บและสตรีมเซกเมนต์จากที่นั่นโดยตรง พื้นที่จัดเก็บจึงต้องมีที่อยู่ของตัวเองที่เบราว์เซอร์เข้าถึงได้ นี่เป็นส่วนเดียวที่ต้องคิดนิดหน่อย คุณจะชี้ tapeshelf ไปยังบริการที่รองรับ S3 ที่ใช้อยู่แล้ว หรือรันพื้นที่จัดเก็บในสแต็กเดียวกันก็ได้

สิ่งที่ต้องมี

  • เซิร์ฟเวอร์ Linux ที่มี Docker และปลั๊กอิน Compose ขั้นต่ำที่สมเหตุสมผลคือ 2 คอร์ และ RAM 4 GB
  • พื้นที่ดิสก์สำหรับไฟล์ชั่วคราวของ worker ประมาณสองเท่าครึ่งของวิดีโอที่ใหญ่ที่สุด ต่อหนึ่งวิดีโอที่ประมวลผลพร้อมกัน
  • โดเมนที่ชี้มายังเซิร์ฟเวอร์ และเปิดพอร์ต 80 กับ 443
  • บัญชี SMTP สำหรับอีเมล ได้แก่ การยืนยัน การรีเซ็ตรหัสผ่าน และการแจ้งเตือน
  • ไม่บังคับ: OAuth client ของ Google ของคุณเองสำหรับ “เข้าสู่ระบบด้วย Google” และคีย์ Cloudflare Turnstile สำหรับแคปต์ชาเมื่อมีการสมัครซ้ำและแขกใหม่

การแปลงวิดีโอเป็นงานที่หนักที่สุด วิดีโอ H.264 ความละเอียดไม่เกิน 1080p ที่ผ่านการตรวจอีกไม่กี่ข้อแค่ต้องแพ็กใหม่ ซึ่งใช้เวลาไม่กี่วินาที การแปลงเต็มรูปแบบบนเซิร์ฟเวอร์เล็กๆ 2 คอร์ใช้เวลาประมาณเท่ากับความยาวของวิดีโอ บางครั้งนานกว่า คนที่อัปโหลดจะเห็นความคืบหน้าแบบเรียลไทม์และใช้เว็บไซต์ต่อไปได้

ความลับที่ห้ามทำหาย

การตั้งค่าทั้งหมดอยู่ในไฟล์ environment ไฟล์เดียว ได้แก่ รหัสผ่านฐานข้อมูล ความลับของเซสชัน ข้อมูลเข้าถึงพื้นที่จัดเก็บ SMTP และมาสเตอร์คีย์ที่ใช้คำนวณคีย์เข้ารหัสของทุกวิดีโอ บทความ tapeshelf เข้ารหัสวิดีโออย่างไร อธิบายไว้ ในโหมดใช้งานจริง API จะไม่ยอมเริ่มทำงานถ้ายังใช้ค่าตัวอย่างจากไฟล์ตัวอย่าง

เก็บมาสเตอร์คีย์ไว้ในโปรแกรมจัดการรหัสผ่านทันทีที่สร้าง ถ้าคีย์หาย วิดีโอที่อัปโหลดไว้ทั้งหมดจะเล่นไม่ได้อีก และการกู้คืนฐานข้อมูลก็ไม่ช่วย รหัสจากแอปยืนยันตัวตนสำหรับการเข้าสู่ระบบสองขั้นตอนก็จะใช้ไม่ได้ด้วย เพราะความลับของรหัสเหล่านั้นถูกปิดผนึกด้วยคีย์นี้

ต่างจาก tapeshelf.com อย่างไร

อินสแตนซ์ที่โฮสต์เองไม่มีแพ็กเกจและไม่มีการชำระเงิน ไม่มี Free หรือ Pro ไม่มีแท็บแพ็กเกจ ไม่มีข้อความชวนอัปเกรด และไม่มีหน้ารอก่อนดาวน์โหลด โดยละเอียดคือ

  • ไม่มีขีดจำกัดจนกว่าคุณจะตั้ง ค่าเริ่มต้นไม่จำกัดขนาดวิดีโอหรือขนาดชั้นวาง ในฐานะผู้ดูแล คุณตั้งขีดจำกัดต่อวิดีโอได้หนึ่งค่าและต่อชั้นวางได้หนึ่งค่า ใช้เหมือนกันสำหรับทุกคน
  • การดาวน์โหลด เริ่มทันที ด้วยความเร็วเต็มที่ ตรงจากพื้นที่จัดเก็บ
  • สิ่งที่เป็นของ Pro บน tapeshelf.com มีให้ทุกคน ได้แก่ ตัวแก้ไขวิดีโอ หน้าที่ซ่อน และรหัสผ่านสำหรับลิงก์ชั่วคราว วิดีโอที่ลบแล้วกู้คืนได้ภายใน 90 วัน
  • การป้องกันการใช้งานในทางที่ผิดยังอยู่ ขีดจำกัดคำขอรายวัน (ค่าเริ่มต้น 30 วิดีโอ ปรับได้) และขีดจำกัดอัตราการเรียก API ช่วยปกป้องเซิร์ฟเวอร์ จึงยังคงไว้
  • ชื่อของคุณ กฎของคุณ อินสแตนซ์มีชื่อและอีเมลติดต่อของตัวเอง และแสดงข้อกำหนดกับนโยบายความเป็นส่วนตัวจากไฟล์ที่คุณเตรียมไว้ ผู้เข้าชมจะเห็นหน้าเข้าสู่ระบบแบบเรียบง่ายเป็นอย่างแรก

นอกนั้นเป็นแอปเดียวกันทั้งหมด ได้แก่ ชั้นวางที่มีกองและหมวดหมู่ การอัปโหลดที่ทำต่อได้ พรีวิว 16 เฟรม การสตรีมแบบเข้ารหัส คำขอและการแลกเปลี่ยนหลายรอบ การแลกเปลี่ยนกับแขก ลิงก์ชั่วคราว เพื่อนและแชต การเข้าสู่ระบบสองขั้นตอน (บังคับสำหรับผู้ดูแล) การแจ้งเตือน แอปใน 20 ภาษา การรายงาน และแผงผู้ดูแล

โปรดจำไว้ว่าแต่ละอินสแตนซ์เป็นเกาะของตัวเอง คนในอินสแตนซ์แชร์และแลกเปลี่ยนกันเองเท่านั้น ไม่เชื่อมกับบัญชีบน tapeshelf.com หรือบนอินสแตนซ์อื่น

การอัปเดตและการสำรองข้อมูล

การอัปเดตคือดึงเวอร์ชันใหม่แล้วรีสตาร์ตสแต็ก การไมเกรตจะทำตอนเริ่มระบบ และวิดีโอที่กำลังประมวลผลอยู่จะเริ่มประมวลผลใหม่ แต่ถึงอย่างนั้นก็ควรสำรองข้อมูลก่อนอัปเดตครั้งใหญ่

ดัมป์ฐานข้อมูลรายวันจะลงไปอยู่ในบักเก็ตของคุณเอง วิดีโออยู่ในพื้นที่จัดเก็บอยู่แล้ว และคีย์ของวิดีโอได้มาจากมาสเตอร์คีย์ สามสิ่งที่ต้องเก็บรักษาให้ดีจึงได้แก่ บักเก็ต ดัมป์ฐานข้อมูล และคีย์ตัวนั้น

สัญญาอนุญาตในย่อหน้าเดียว

คุณรัน ศึกษา และแก้ไข tapeshelf ได้ ถ้าคุณแก้ไขแล้วให้คนอื่นใช้เวอร์ชันที่แก้ผ่านเครือข่าย AGPL กำหนดให้คุณเสนอซอร์สโค้ดของเวอร์ชันนั้นให้พวกเขา ถ้ารันโดยไม่แก้ไข สำหรับตัวเอง ครอบครัว หรือเพื่อน ก็แค่เก็บสัญญาอนุญาตไว้คู่กับโค้ด

เมื่อไร

อีกไม่นานเราจะเผยแพร่รีโพสิทอรี อิมเมจคอนเทนเนอร์สำเร็จรูป และคู่มือการติดตั้งที่ครอบคลุมพื้นที่จัดเก็บ อีเมล การสำรองข้อมูล และการแก้ปัญหา หน้าโฮสต์เอง และบล็อกนี้จะแจ้งในวันนั้น และฟีด RSS เป็นวิธีที่ง่ายที่สุดที่จะไม่พลาด ระหว่างนี้ tapeshelf.com คือวิธีที่เร็วที่สุดในการลองใช้แอป และดูรายละเอียดได้ที่หน้าราคา