अपना 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-कम्पैटिबल सेवा से जोड़ सकते हैं जो आप पहले से इस्तेमाल करते हैं, या स्टोरेज इसी स्टैक में चला सकते हैं।
आपको क्या चाहिए होगा
- Docker और Compose प्लगइन वाला एक Linux सर्वर। दो CPU कोर और 4 GB RAM एक समझदारी भरा न्यूनतम है।
- वर्कर की अस्थायी फ़ाइलों के लिए डिस्क की जगह: एक साथ प्रोसेस हो रहे हर वीडियो के लिए, सबसे बड़े वीडियो का लगभग ढाई गुना।
- सर्वर की ओर इशारा करता एक डोमेन, जिसमें पोर्ट 80 और 443 खुले हों।
- ईमेल के लिए एक SMTP अकाउंट: पुष्टि, पासवर्ड रीसेट और सूचनाएँ।
- ज़रूरी नहीं: “Google से लॉग इन” के लिए आपका अपना Google OAuth क्लाइंट, और बार-बार साइन अप और नए मेहमानों के कैप्चा के लिए Cloudflare Turnstile की कीज़।
वीडियो कन्वर्ट करना भारी काम है। 1080p तक का H.264 वीडियो, जो कुछ और जाँचें पास कर ले, सिर्फ़ दोबारा पैक करना पड़ता है, जिसमें कुछ सेकंड लगते हैं। दो कोर वाले छोटे सर्वर पर पूरा कन्वर्शन लगभग उतना ही समय लेता है जितना लंबा वीडियो है, कभी-कभी ज़्यादा। अपलोड करने वाले को प्रगति लाइव दिखती है और वह साइट इस्तेमाल करता रह सकता है।
वह सीक्रेट जो खोना नहीं चाहिए
सारी सेटिंग एक एनवायरनमेंट फ़ाइल में रहती हैं: डेटाबेस का पासवर्ड, सेशन के सीक्रेट, स्टोरेज की पहचान, SMTP, और वह मास्टर की जिससे हर वीडियो की एन्क्रिप्शन की निकाली जाती है। tapeshelf वीडियो को कैसे एन्क्रिप्ट करता है में यह समझाया गया है। प्रोडक्शन में API उदाहरण वाली फ़ाइल के नमूना मानों के साथ चालू होने से मना कर देता है।
मास्टर की बनाते ही उसे पासवर्ड मैनेजर में रख लें। अगर वह खो जाए, तो अपलोड हुआ कोई भी वीडियो फिर कभी नहीं चलेगा, और डेटाबेस वापस लाने से भी कुछ नहीं होगा। दो-चरणीय लॉग इन के ऑथेंटिकेटर ऐप वाले कोड भी काम करना बंद कर देंगे, क्योंकि उनके सीक्रेट इसी से सील किए जाते हैं।
tapeshelf.com से क्या अलग है
सेल्फ़-होस्ट किए इंस्टेंस में न प्लान होते हैं, न पेमेंट। न Free है, न Pro, न “प्लान” टैब, न अपग्रेड के सुझाव, और न डाउनलोड से पहले इंतज़ार वाला पेज। विस्तार से:
- जब तक आप न लगाएँ, कोई सीमा नहीं। डिफ़ॉल्ट रूप से वीडियो या शेल्फ़ के साइज़ पर कोई सीमा नहीं होती। एडमिन के रूप में आप हर वीडियो पर एक सीमा और हर शेल्फ़ पर एक सीमा लगा सकते हैं, सबके लिए एक जैसी।
- डाउनलोड तुरंत शुरू होते हैं, पूरी स्पीड पर, सीधे स्टोरेज से।
- जो tapeshelf.com पर Pro में है, वह यहाँ सबके लिए है। यानी वीडियो एडिटर, छिपा पेज और अस्थायी लिंक पर पासवर्ड। हटाए गए वीडियो 90 दिन तक वापस लाए जा सकते हैं।
- ग़लत इस्तेमाल से बचाव बना रहता है। रोज़ के अनुरोधों की सीमा (डिफ़ॉल्ट रूप से 30 वीडियो, बदली जा सकती है) और API की दर-सीमाएँ सर्वर की रक्षा करती हैं, इसलिए वे बनी रहती हैं।
- आपका नाम, आपके नियम। इंस्टेंस का अपना नाम और संपर्क ईमेल होता है, और वह आपकी दी गई फ़ाइलों से आपकी शर्तें और प्राइवेसी पॉलिसी दिखाता है। विज़िटर को पहले एक सादा लॉग इन पेज दिखता है।
बाकी सब वही ऐप है: स्टैक और कैटेगरी वाली शेल्फ़, बीच से फिर शुरू होने वाले अपलोड, 16 फ़्रेम का प्रीव्यू, एन्क्रिप्टेड स्ट्रीमिंग, अनुरोध और कई राउंड वाली अदला-बदली, मेहमानों से अदला-बदली, अस्थायी लिंक, दोस्त और चैट, दो-चरणीय लॉग इन (एडमिन के लिए ज़रूरी), सूचनाएँ, 20 भाषाओं में ऐप, रिपोर्ट, और एडमिन पैनल।
ध्यान रखें कि हर इंस्टेंस अपना अलग टापू है। उस पर मौजूद लोग सिर्फ़ आपस में शेयर और अदला-बदली करते हैं, tapeshelf.com या दूसरे इंस्टेंस के अकाउंट के साथ कभी नहीं।
अपडेट और बैकअप
अपडेट करने का मतलब है नया वर्शन लेना और स्टैक को फिर से शुरू करना। माइग्रेशन शुरू होते समय लागू होते हैं, और जो वीडियो प्रोसेस हो रहा था, वह फिर से शुरू होता है। फिर भी, बड़े अपडेट से पहले बैकअप ले लें।
रोज़ के डेटाबेस डंप अपने-आप आपके बकेट में पहुँच जाते हैं। वीडियो पहले से स्टोरेज में रहते हैं, और उनकी कीज़ मास्टर की से आती हैं। इसलिए सुरक्षित रखने लायक तीन चीज़ें हैं: बकेट, डेटाबेस डंप और वह एक की।
लाइसेंस, एक पैराग्राफ़ में
आप tapeshelf चला सकते हैं, उसे पढ़ सकते हैं और बदल सकते हैं। अगर आप उसे बदलते हैं और दूसरे लोगों को अपना बदला हुआ वर्शन नेटवर्क पर इस्तेमाल करने देते हैं, तो AGPL के अनुसार आपको उन्हें उस वर्शन का सोर्स कोड देना होगा। उसे बिना बदले, अपने लिए, अपने परिवार या दोस्तों के लिए चलाने में, लाइसेंस को साथ रखने के अलावा कुछ नहीं चाहिए।
कब
जल्द ही हम रिपॉज़िटरी, तैयार कंटेनर इमेज और एक इंस्टॉल गाइड प्रकाशित करेंगे, जिसमें स्टोरेज, ईमेल, बैकअप और समस्याओं का हल शामिल होगा। उस दिन सेल्फ़-होस्ट पेज और यह ब्लॉग इसकी जानकारी देंगे, और इसे न चूकने का सबसे आसान तरीका RSS फ़ीड है। तब तक ऐप आज़माने का सबसे तेज़ तरीका tapeshelf.com है, और विवरण क़ीमतों वाले पेज पर हैं।