Railway पर सेल्फ-होस्टिंग
ChurchApps एक वन-क्लिक Railway टेम्पलेट प्रकाशित करता है जो आपके चर्च को B1 Admin, B1 सदस्य पोर्टल, API, और एक MySQL डेटाबेस का अपना निजी इंस्टेंस देता है — यह सब उस इंफ्रास्ट्रक्चर पर चलता है जिसके आप स्वयं मालिक हैं और सीधे भुगतान करते हैं। यह गाइड आपको लगभग 15 मिनट में लाइव कर देती है और फिर उस पोस्ट-डिप्लॉय कॉन्फ़िगरेशन के माध्यम से चलती है जो अधिकांश चर्च अंततः चाहते हैं।
त्वरित शुरुआत
- ऊपर दिए गए Deploy on Railway बटन पर क्लिक करें।
- Railway में साइन इन करें (या एक निःशुल्क खाता बनाएँ) और एक भुगतान विधि जोड़ें।
- कुछ भी बदले बिना Deploy पर क्लिक करें — हर वेरिएबल का एक उचित डिफ़ॉल्ट है।
- चार सेवाओं के हरा होने के लिए 5–10 मिनट प्रतीक्षा करें।
- B1Admin सेवा URL खोलें, Register पर क्लिक करें, और अपना खाता बनाएँ। पहला खाता स्वतः एक सर्वर व्यवस्थापक होता है।
- अपना पहला चर्च बनाने के लिए इन-ऐप प्रॉम्प्ट का पालन करें।
बस इतना ही। अब आपके पास एक पूरी तरह से काम करने वाला ChurchApps इंस्टेंस है। नीचे दी गई हर चीज़ वैकल्पिक निखार है।
डिप्लॉय वर्तमान में बीटा में है। यदि आपको कुछ ऐसा मिलता है जो डॉक्स कवर नहीं करते, तो कृपया डिप्लॉय लॉग संलग्न करके github.com/ChurchApps/Api/issues पर एक इश्यू खोलें।
आपको क्या चाहिए
क्या डिप्लॉय किया जाता है
टेम्पलेट एक ही Railway प्रोजेक्ट में चार सेवाएँ प्रोविज़न करता है:
| सेवा | उद्देश्य | डिप्लॉय के बाद URL |
|---|---|---|
| MySQL | सारा डेटा स्टोर करता है (एक इंस्टेंस, कई स्कीमा) | केवल आंतरिक |
| Api | membership, content, giving, attendance, आदि के लिए बैकएंड | https://api-<id>.up.railway.app |
| B1Admin | स्टाफ/व्यवस्थापक वेब ऐप | https://b1admin-<id>.up.railway.app |
| B1App | सदस्य-केंद्रित वेब ऐप और चर्च वेबसाइट | https://b1app-<id>.up.railway.app |
डेटाबेस स्कीमा पहले लॉन्च पर API के स्टार्टअप माइग्रेशन द्वारा स्वतः बनाए जाते हैं।
पहली बार का कॉन्फ़िगरेशन
अब जब आप ऊपर आ चुके हैं, यहाँ वे चीज़ें हैं जो अधिकांश चर्च आगे सेटअप करते हैं, मोटे तौर पर प्राथमिकता के क्रम में।
1. ईमेल (अत्यधिक अनुशंसित)
ईमेल के बिना, सदस्य अभी भी रजिस्टर कर सकते हैं और सिस्टम का उपयोग कर सकते हैं, लेकिन वे भूले हुए पासवर्ड रीसेट नहीं कर सकते — एक व्यवस्थापक को यह उनके लिए करना होगा। SMTP सेट करने में लगभग 5 मिनट लगते हैं।
Railway डैशबोर्ड में, Api सेवा → Variables खोलें, और जोड़ें:
MAIL_SYSTEM=SMTP
SMTP_HOST=<आपका प्रोवाइडर होस्ट>
SMTP_USER=<आपका यूज़रनेम>
SMTP_PASS=<आपका पासवर्ड या API key>
SMTP_SECURE=false
SUPPORT_EMAIL=noreply@yourchurch.org
जानने लायक तीन प्रोवाइडर:
Resend — सबसे सरल निःशुल्क विकल्प (100 ईमेल/दिन)
- resend.com पर साइन अप करें।
- एक भेजने वाला डोमेन सत्यापित करें (या शुरू करने के लिए
onboarding@resend.devटेस्ट सेंडर का उपयोग करें)। - एक API key बनाएँ।
SMTP_HOST=smtp.resend.com,SMTP_USER=resend,SMTP_PASS=re_xxxxxxxxxसेट करें।
Gmail — व्यक्तिगत उपयोग के लिए निःशुल्क (~500/दिन)
- Google खाते पर 2-factor auth सक्षम करें।
- एक App Password बनाएँ।
SMTP_HOST=smtp.gmail.com,SMTP_USER=your-address@gmail.com,SMTP_PASS=<16-अक्षर का app password>सेट करें।
AWS SES — बड़े पैमाने पर सबसे सस्ता
- AWS में एक भेजने वाला डोमेन सत्यापित करें।
- यदि आप non-verified पतों को भेजेंगे तो SES सैंडबॉक्स से बाहर निकलें।
- SES → SMTP Settings → Create credentials के तहत SMTP क्रेडेंशियल बनाएँ।
SMTP_HOST=email-smtp.us-east-2.amazonaws.com,SMTP_USER=AKIA...,SMTP_PASS=<SES SMTP पासवर्ड>सेट करें।
वेरिएबल सेव करने के बाद, Api सेवा स्वतः फिर से डिप्लॉय होती है। एक टेस्ट खाते पर पासवर्ड रीसेट को ट्रिगर करके इसका परीक्षण करें।
यदि आप गलत क्रेडेंशियल के साथ MAIL_SYSTEM=SMTP सेट करते हैं, तो रजिस्ट्रेशन सफल दिखेगा लेकिन सत्यापन ईमेल कभी नहीं पहुँचेगा। या तो क्रेडेंशियल ठीक करें या नो-ईमेल मोड पर वापस जाने के लिए MAIL_SYSTEM को अनसेट करें।
2. कस्टम डोमेन
डिफ़ॉल्ट *.up.railway.app URL काम करते हैं, लेकिन अधिकांश चर्च अपने खुद के चाहते हैं।
प्रत्येक वेब सेवा (B1Admin और B1App) के लिए:
- Railway में सेवा खोलें → Settings → Networking।
- + Custom Domain पर क्लिक करें और होस्टनेम दर्ज करें:
- B1Admin के लिए
admin.yourchurch.org - B1App के लिए
app.yourchurch.org(याwww)
- B1Admin के लिए
- Railway द्वारा दिखाया गया CNAME रिकॉर्ड अपने DNS प्रोवाइडर में जोड़ें।
- DNS प्रोपागेट होने के लिए कुछ मिनट प्रतीक्षा करें। Railway स्वतः TLS सर्टिफिकेट प्रोविज़न करता है।
फिर Api सेवा वेरिएबल अपडेट करें ताकि ईमेल में लिंक नए डोमेन का उपयोग करें:
B1ADMIN_ROOT=https://admin.yourchurch.org
और B1Admin सेवा पर:
REACT_APP_API_BASE=https://api.yourchurch.org (यदि आपने एक कस्टम API डोमेन भी सेट किया है)
REACT_APP_B1_WEBSITE_URL=https://{subdomain}.yourchurch.org
{subdomain} टोकन शाब्दिक है — इसे रनटाइम पर प्रत्येक चर्च के सबडोमेन से बदल दिया जाता है (नीचे मल्टी-साइट देखें)।
3. मल्टी-साइट (एक इंस्टेंस पर कई चर्च)
ChurchApps डिज़ाइन के अनुसार मल्टी-टेनेंट है — एक डिप्लॉयमेंट किसी भी संख्या में चर्चों को होस्ट कर सकता है, प्रत्येक की अपनी लोग, समूह, और वेबसाइट के साथ। नए चर्च पूरी तरह से एडमिन UI के माध्यम से जोड़े जाते हैं; किसी इंफ्रास्ट्रक्चर परिवर्तन की आवश्यकता नहीं।
अतिरिक्त चर्च जोड़ना
- B1 Admin में, Settings → Manage Church → Switch Church → Create New पर जाएँ।
- प्रत्येक चर्च का एक अद्वितीय सबडोमेन स्लग होता है (जैसे
firstchurch,gracecommunity)। - नए चर्च को अपना डेटा, सदस्य, वेबसाइट, और गिविंग सेटअप मिलता है, जो उसी इंस्टेंस पर अन्य चर्चों से पूरी तरह अलग है।
प्रत्येक चर्च को उसके अपने URL पर रूट करना
चर्चों को सार्वजनिक रूप से उजागर करने के दो तरीके:
| पैटर्न | उदाहरण | सेटअप |
|---|---|---|
| पथ-आधारित (out of the box काम करता है) | app.yourchurch.org/firstchurch | कोई अतिरिक्त सेटअप नहीं |
| सबडोमेन-आधारित (साफ़ URL) | firstchurch.yourchurch.org | वाइल्डकार्ड DNS + वाइल्डकार्ड कस्टम डोमेन |
Railway पर सबडोमेन-आधारित रूटिंग के लिए:
- अपने DNS प्रोवाइडर में, एक वाइल्डकार्ड CNAME बनाएँ:
*.yourchurch.org → <b1app railway target>। - Railway में, B1App सेवा पर → Settings → Networking,
*.yourchurch.orgको एक कस्टम डोमेन के रूप में जोड़ें। - B1Admin सेवा पर,
REACT_APP_B1_WEBSITE_URL=https://{subdomain}.yourchurch.orgसेट करें।
फिर से डिप्लॉय करने के बाद, प्रत्येक चर्च की साइट स्वतः <their-subdomain>.yourchurch.org पर सर्व की जाती है।
वाइल्डकार्ड कस्टम डोमेन के लिए एक भुगतान वाली Railway योजना आवश्यक है। पथ-आधारित रूटिंग हर योजना पर काम करती है और कार्यात्मक रूप से समान है — बस URL बार में कम सुंदर।
4. ऑनलाइन गिविंग (Stripe / PayPal)
गिविंग को एडमिन UI के अंदर प्रति-चर्च कॉन्फ़िगर किया जाता है, एनवायरनमेंट वेरिएबल के माध्यम से नहीं — इस तरह प्रत्येक चर्च अपना खुद का व्यापारी खाता उपयोग कर सकता है।
- Stripe (Developers → API keys) या PayPal (My Apps & Credentials) से डेवलपर क्रेडेंशियल प्राप्त करें।
- B1 Admin में, Settings → Giving Settings पर जाएँ।
- अपना प्रोवाइडर चुनें, Public और Secret keys पेस्ट करें, और फ़ीस हैंडलिंग कॉन्फ़िगर करें।
- वैकल्पिक रूप से सार्वजनिक डोनेशन फ़ॉर्म को बॉट्स से बचाने के लिए Railway में Api सेवा में
GOOGLE_RECAPTCHA_SECRET_KEYजोड़ें।
5. फ़ाइल स्टोरेज
टेम्पलेट सदस्य फोटो, सरमन फ़ाइलों, और अपलोड की गई डॉक्यूमेंट्स के लिए Api सेवा पर माउंट किया गया एक 1 GB स्थायी वॉल्यूम प्रोविज़न करता है।
इसे बढ़ाने के लिए: Api सेवा → Volumes → साइज़ स्लाइडर एडजस्ट करें।
बड़े डिप्लॉयमेंट के लिए (100+ GB या कई समवर्ती अपलोड), Api सेवा पर इन्हें सेट करके S3 पर स्विच करें:
FILE_STORE=S3
AWS_S3_BUCKET=<your-bucket>
AWS_ACCESS_KEY_ID=<key>
AWS_SECRET_ACCESS_KEY=<secret>
AWS_REGION=us-east-2
वॉल्यूम में मौजूदा फ़ाइलें स्वतः माइग्रेट नहीं होतीं — वेरिएबल बदलने से पहले उन्हें बकेट में कॉपी करें।
6. वैकल्पिक फ़ीचर इंटीग्रेशन
ये विशिष्ट फीचर्स को अनलॉक करते हैं और बाद में Railway डैशबोर्ड के माध्यम से जोड़े जा सकते हैं। इन्हें Api सेवा पर सेट करें।
| वेरिएबल | जो फ़ीचर यह सक्षम करता है |
|---|---|
OPENAI_API_KEY या OPENROUTER_API_KEY | AI-सहायता प्राप्त खोज और सामग्री सुझाव |
YOUTUBE_API_KEY | YouTube सरमन खोज और एम्बेडिंग |
PEXELS_KEY | वेबसाइट बिल्डर के लिए स्टॉक-इमेज पिकर |
VIMEO_TOKEN | Vimeo सरमन समर्थन |
API_BIBLE_KEY | पाठों और सामग्री में बाइबल वर्स लुकअप |
YOUVERSION_API_KEY | YouVersion बाइबल इंटीग्रेशन |
WEB_PUSH_PUBLIC_KEY + WEB_PUSH_PRIVATE_KEY | ब्राउज़र पुश सूचनाएँ (एक VAPID keypair जनरेट करें) |
HUBSPOT_KEY | नए रजिस्ट्रेशन के लिए वैकल्पिक CRM सिंक |
अपडेट करना
प्रत्येक सेवा अपने संबंधित GitHub repo से लिंक है। ChurchApps/Api, ChurchApps/B1Admin, या ChurchApps/B1App पर main में पुश करने से स्वतः फिर से डिप्लॉय ट्रिगर होता है।
एक विशिष्ट संस्करण को पिन करने के लिए, प्रत्येक सेवा पर Branch सेटिंग को एक टैग या रिलीज़ ब्रांच में बदलें। यह प्रोडक्शन के लिए अनुशंसित सेटअप है — main से auto-deploy करने का मतलब है कि आप किसी भी in-progress काम को इनहेरिट करते हैं।
लागत
एक छोटे चर्च (200 सदस्यों से कम, हल्का ट्रैफ़िक) के लिए वास्तविक-दुनिया की रेंज:
| कंपोनेंट | अनुमानित मासिक लागत |
|---|---|
| Railway base | $5 |
| MySQL plugin | $5 + ~$1 स्टोरेज |
| 3 वेब सेवाओं की कंप्यूट | $3–10 संयुक्त |
| 1 GB वॉल्यूम | $0.25 |
| कुल | ~$15–25/माह |
लागतें ट्रैफ़िक, फोटो अपलोड, और डेटाबेस साइज़ के साथ रैखिक रूप से बढ़ती हैं। Railway प्रोजेक्ट के Usage टैब में लाइव उपयोग दिखाता है — अपने एक्सपोज़र को कैप करने के लिए वहाँ खर्च सीमाएँ सेट करें।
समस्या निवारण
| लक्षण | संभावित कारण | समाधान |
|---|---|---|
EBUSY: rmdir '/app/node_modules/.cache' के साथ बिल्ड विफल | Nixpacks कैश माउंट टकराव | प्रभावित सेवा पर NIXPACKS_NO_CACHE=true सेट करें |
Missing: @types/... के साथ B1Admin पर बिल्ड विफल | असिंक package-lock.json | नवीनतम main पुल करें |
| Api डिप्लॉय "Deploying" पर अटक जाता है | Healthcheck विफल हो रहा है — /health 200 नहीं लौटा रहा | डिप्लॉय लॉग देखें; आमतौर पर एक आवश्यक env var गायब है |
| B1Admin "check your email" दिखाता है लेकिन कोई ईमेल नहीं पहुँचता | MAIL_SYSTEM=SMTP सेट है लेकिन क्रेडेंशियल गायब/गलत हैं | क्रेडेंशियल ठीक करें, या ईमेल को अक्षम करने के लिए MAIL_SYSTEM को अनसेट करें |
लॉगिन api.churchapps.org पर रीडायरेक्ट करता है | REACT_APP_STAGE prod है | B1Admin सेवा पर REACT_APP_STAGE=custom सेट करें |
| सबडोमेन चर्च सभी एक ही सामग्री दिखाते हैं | REACT_APP_B1_WEBSITE_URL में {subdomain} टोकन शामिल नहीं है | इसे उदाहरण के लिए https://{subdomain}.yourchurch.org पर सेट करें |
| कस्टम डोमेन "Application not found" दिखाता है | DNS अभी तक प्रोपागेट नहीं हुआ, या Railway सर्टिफिकेट पेंडिंग है | 5 मिनट प्रतीक्षा करें; dig admin.yourchurch.org से DNS जाँचें |
यदि आपको इस सूची में न होने वाली कोई चीज़ मिलती है, तो डिप्लॉय लॉग संलग्न करके github.com/ChurchApps/Api/issues पर एक इश्यू खोलें।
संबंधित लेख
- Docker के साथ सेल्फ-होस्टिंग — आपके अपने हार्डवेयर या VPS पर वही स्टैक
- प्रारंभिक सेटअप — आपका चर्च बनने के बाद पहले कदम
- वेबसाइट प्रारंभिक सेटअप — अपने चर्च की सार्वजनिक साइट कॉन्फ़िगर करें
- गिविंग सेटिंग्स — Stripe या PayPal वायर करें
- स्थानीय API सेटअप — विकास के लिए स्टैक को स्थानीय रूप से चलाना
- API डिप्लॉयमेंट (AWS) — आधिकारिक ChurchApps SaaS कैसे डिप्लॉय किया जाता है