मुख्य सामग्री पर जाएं

Railway पर सेल्फ-होस्टिंग

ChurchApps एक वन-क्लिक Railway टेम्पलेट प्रकाशित करता है जो आपके चर्च को B1 Admin, B1 सदस्य पोर्टल, API, और एक MySQL डेटाबेस का अपना निजी इंस्टेंस देता है — यह सब उस इंफ्रास्ट्रक्चर पर चलता है जिसके आप स्वयं मालिक हैं और सीधे भुगतान करते हैं। यह गाइड आपको लगभग 15 मिनट में लाइव कर देती है और फिर उस पोस्ट-डिप्लॉय कॉन्फ़िगरेशन के माध्यम से चलती है जो अधिकांश चर्च अंततः चाहते हैं।

त्वरित शुरुआत

Deploy on Railway

  1. ऊपर दिए गए Deploy on Railway बटन पर क्लिक करें।
  2. Railway में साइन इन करें (या एक निःशुल्क खाता बनाएँ) और एक भुगतान विधि जोड़ें।
  3. कुछ भी बदले बिना Deploy पर क्लिक करें — हर वेरिएबल का एक उचित डिफ़ॉल्ट है।
  4. चार सेवाओं के हरा होने के लिए 5–10 मिनट प्रतीक्षा करें।
  5. B1Admin सेवा URL खोलें, Register पर क्लिक करें, और अपना खाता बनाएँ। पहला खाता स्वतः एक सर्वर व्यवस्थापक होता है।
  6. अपना पहला चर्च बनाने के लिए इन-ऐप प्रॉम्प्ट का पालन करें।

बस इतना ही। अब आपके पास एक पूरी तरह से काम करने वाला ChurchApps इंस्टेंस है। नीचे दी गई हर चीज़ वैकल्पिक निखार है।

सुझाव

डिप्लॉय वर्तमान में बीटा में है। यदि आपको कुछ ऐसा मिलता है जो डॉक्स कवर नहीं करते, तो कृपया डिप्लॉय लॉग संलग्न करके github.com/ChurchApps/Api/issues पर एक इश्यू खोलें।

आपको क्या चाहिए

  • एक निःशुल्क Railway खाता
  • Railway के साथ एक फ़ाइल में क्रेडिट कार्ड (एक छोटी कॉन्ग्रीगेशन के लिए ~$15–25/माह; देखें लागत)
  • प्रारंभिक डिप्लॉय के लिए लगभग 15 मिनट
  • वैकल्पिक लेकिन बाद में अत्यधिक अनुशंसित: SMTP क्रेडेंशियल और एक कस्टम डोमेन

क्या डिप्लॉय किया जाता है

टेम्पलेट एक ही Railway प्रोजेक्ट में चार सेवाएँ प्रोविज़न करता है:

सेवाउद्देश्यडिप्लॉय के बाद URL
MySQLसारा डेटा स्टोर करता है (एक इंस्टेंस, कई स्कीमा)केवल आंतरिक
Apimembership, 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 ईमेल/दिन)

  1. resend.com पर साइन अप करें।
  2. एक भेजने वाला डोमेन सत्यापित करें (या शुरू करने के लिए onboarding@resend.dev टेस्ट सेंडर का उपयोग करें)।
  3. एक API key बनाएँ।
  4. SMTP_HOST=smtp.resend.com, SMTP_USER=resend, SMTP_PASS=re_xxxxxxxxx सेट करें।

Gmail — व्यक्तिगत उपयोग के लिए निःशुल्क (~500/दिन)

  1. Google खाते पर 2-factor auth सक्षम करें।
  2. एक App Password बनाएँ।
  3. SMTP_HOST=smtp.gmail.com, SMTP_USER=your-address@gmail.com, SMTP_PASS=<16-अक्षर का app password> सेट करें।

AWS SES — बड़े पैमाने पर सबसे सस्ता

  1. AWS में एक भेजने वाला डोमेन सत्यापित करें।
  2. यदि आप non-verified पतों को भेजेंगे तो SES सैंडबॉक्स से बाहर निकलें।
  3. SES → SMTP Settings → Create credentials के तहत SMTP क्रेडेंशियल बनाएँ।
  4. 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) के लिए:

  1. Railway में सेवा खोलें → SettingsNetworking
  2. + Custom Domain पर क्लिक करें और होस्टनेम दर्ज करें:
    • B1Admin के लिए admin.yourchurch.org
    • B1App के लिए app.yourchurch.org (या www)
  3. Railway द्वारा दिखाया गया CNAME रिकॉर्ड अपने DNS प्रोवाइडर में जोड़ें।
  4. 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 के माध्यम से जोड़े जाते हैं; किसी इंफ्रास्ट्रक्चर परिवर्तन की आवश्यकता नहीं।

अतिरिक्त चर्च जोड़ना

  1. B1 Admin में, Settings → Manage Church → Switch Church → Create New पर जाएँ।
  2. प्रत्येक चर्च का एक अद्वितीय सबडोमेन स्लग होता है (जैसे firstchurch, gracecommunity)।
  3. नए चर्च को अपना डेटा, सदस्य, वेबसाइट, और गिविंग सेटअप मिलता है, जो उसी इंस्टेंस पर अन्य चर्चों से पूरी तरह अलग है।

प्रत्येक चर्च को उसके अपने URL पर रूट करना

चर्चों को सार्वजनिक रूप से उजागर करने के दो तरीके:

पैटर्नउदाहरणसेटअप
पथ-आधारित (out of the box काम करता है)app.yourchurch.org/firstchurchकोई अतिरिक्त सेटअप नहीं
सबडोमेन-आधारित (साफ़ URL)firstchurch.yourchurch.orgवाइल्डकार्ड DNS + वाइल्डकार्ड कस्टम डोमेन

Railway पर सबडोमेन-आधारित रूटिंग के लिए:

  1. अपने DNS प्रोवाइडर में, एक वाइल्डकार्ड CNAME बनाएँ: *.yourchurch.org → <b1app railway target>
  2. Railway में, B1App सेवा पर → Settings → Networking, *.yourchurch.org को एक कस्टम डोमेन के रूप में जोड़ें।
  3. B1Admin सेवा पर, REACT_APP_B1_WEBSITE_URL=https://{subdomain}.yourchurch.org सेट करें।

फिर से डिप्लॉय करने के बाद, प्रत्येक चर्च की साइट स्वतः <their-subdomain>.yourchurch.org पर सर्व की जाती है।

जानकारी

वाइल्डकार्ड कस्टम डोमेन के लिए एक भुगतान वाली Railway योजना आवश्यक है। पथ-आधारित रूटिंग हर योजना पर काम करती है और कार्यात्मक रूप से समान है — बस URL बार में कम सुंदर।

4. ऑनलाइन गिविंग (Stripe / PayPal)

गिविंग को एडमिन UI के अंदर प्रति-चर्च कॉन्फ़िगर किया जाता है, एनवायरनमेंट वेरिएबल के माध्यम से नहीं — इस तरह प्रत्येक चर्च अपना खुद का व्यापारी खाता उपयोग कर सकता है।

  1. Stripe (Developers → API keys) या PayPal (My Apps & Credentials) से डेवलपर क्रेडेंशियल प्राप्त करें।
  2. B1 Admin में, Settings → Giving Settings पर जाएँ।
  3. अपना प्रोवाइडर चुनें, Public और Secret keys पेस्ट करें, और फ़ीस हैंडलिंग कॉन्फ़िगर करें।
  4. वैकल्पिक रूप से सार्वजनिक डोनेशन फ़ॉर्म को बॉट्स से बचाने के लिए 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_KEYAI-सहायता प्राप्त खोज और सामग्री सुझाव
YOUTUBE_API_KEYYouTube सरमन खोज और एम्बेडिंग
PEXELS_KEYवेबसाइट बिल्डर के लिए स्टॉक-इमेज पिकर
VIMEO_TOKENVimeo सरमन समर्थन
API_BIBLE_KEYपाठों और सामग्री में बाइबल वर्स लुकअप
YOUVERSION_API_KEYYouVersion बाइबल इंटीग्रेशन
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 पर एक इश्यू खोलें।

संबंधित लेख