Self-hosting su Railway
ChurchApps pubblica un template Railway con un clic che offre alla tua chiesa un'istanza privata di B1 Admin, del portale dei membri B1, dell'API e di un database MySQL -- tutto in esecuzione su un'infrastruttura di tua proprietà e che paghi direttamente. Questa guida ti porta online in circa 15 minuti, poi illustra la configurazione post-deploy che molte chiese prima o poi vogliono.
Avvio rapido
- Clicca sul pulsante Deploy on Railway qui sopra.
- Accedi a Railway (oppure crea un account gratuito) e aggiungi un metodo di pagamento.
- Clicca su Deploy senza modificare nulla -- ogni variabile ha un valore predefinito sensato.
- Attendi 5–10 minuti che i quattro servizi diventino verdi.
- Apri l'URL del servizio B1Admin, clicca su Registrati e crea il tuo account. Il primo account diventa automaticamente amministratore del server.
- Segui le istruzioni dell'app per creare la tua prima chiesa.
Fatto. Ora hai un'istanza ChurchApps completamente funzionante. Tutto ciò che segue è facoltativo.
Il deploy è attualmente in beta. Se incontri qualcosa che la documentazione non copre, apri una segnalazione su github.com/ChurchApps/Api/issues allegando i log del deploy.
Di cosa hai bisogno
Cosa viene distribuito
Il template configura quattro servizi in un unico progetto Railway:
| Servizio | Scopo | URL dopo il deploy |
|---|---|---|
| MySQL | Archivia tutti i dati (una sola istanza, più schemi) | solo interno |
| Api | Backend per membership, contenuti, donazioni, presenze, ecc. | https://api-<id>.up.railway.app |
| B1Admin | App web per lo staff e gli amministratori | https://b1admin-<id>.up.railway.app |
| B1App | App web per i membri e sito web della chiesa | https://b1app-<id>.up.railway.app |
Gli schemi del database vengono creati automaticamente al primo avvio dalla migrazione di avvio dell'API.
Configurazione iniziale
Ora che il sistema è online, ecco le cose che la maggior parte delle chiese configura subito dopo, più o meno in ordine di priorità.
1. Email (fortemente consigliata)
Senza email, i membri possono comunque registrarsi e usare il sistema, ma non possono reimpostare la password dimenticata -- deve farlo un amministratore al posto loro. Configurare SMTP richiede circa 5 minuti.
Nella dashboard di Railway, apri il servizio Api → Variables e aggiungi:
MAIL_SYSTEM=SMTP
SMTP_HOST=<your provider host>
SMTP_USER=<your username>
SMTP_PASS=<your password or API key>
SMTP_SECURE=false
SUPPORT_EMAIL=noreply@yourchurch.org
Tre provider da conoscere:
Resend — l'opzione gratuita più semplice (100 email/giorno)
- Registrati su resend.com.
- Verifica un dominio di invio (oppure usa il mittente di prova
onboarding@resend.devper iniziare). - Crea una chiave API.
- Imposta
SMTP_HOST=smtp.resend.com,SMTP_USER=resend,SMTP_PASS=re_xxxxxxxxx.
Gmail — gratuito per uso personale (~500/giorno)
- Attiva l'autenticazione a due fattori sull'account Google.
- Crea una Password per le app.
- Imposta
SMTP_HOST=smtp.gmail.com,SMTP_USER=tuo-indirizzo@gmail.com,SMTP_PASS=<la password per le app di 16 caratteri>.
AWS SES — il più economico su larga scala
- Verifica un dominio di invio in AWS.
- Esci dalla sandbox di SES se invierai a indirizzi non verificati.
- Crea le credenziali SMTP in SES → Impostazioni SMTP → Crea credenziali.
- Imposta
SMTP_HOST=email-smtp.us-east-2.amazonaws.com,SMTP_USER=AKIA...,SMTP_PASS=<la password SMTP di SES>.
Dopo aver salvato le variabili, il servizio Api viene ridistribuito automaticamente. Verificalo avviando un reset della password su un account di prova.
Se imposti MAIL_SYSTEM=SMTP con credenziali errate, la registrazione sembrerà riuscita ma l'email di verifica non arriverà mai. Correggi le credenziali oppure rimuovi MAIL_SYSTEM per tornare alla modalità senza email.
2. Domini personalizzati
Gli URL predefiniti *.up.railway.app funzionano, ma la maggior parte delle chiese vuole i propri.
Per ogni servizio web (B1Admin e B1App):
- Apri il servizio in Railway → Settings → Networking.
- Clicca su + Custom Domain e inserisci il nome host:
admin.tuachiesa.orgper B1Adminapp.tuachiesa.org(oppurewww) per B1App
- Aggiungi il record CNAME che Railway ti mostra al tuo provider DNS.
- Attendi qualche minuto che il DNS si propaghi. Railway emette automaticamente il certificato TLS.
Poi aggiorna le variabili del servizio Api così i link nelle email usano i nuovi domini:
B1ADMIN_ROOT=https://admin.tuachiesa.org
E sul servizio B1Admin:
REACT_APP_API_BASE=https://api.tuachiesa.org (se imposti anche un dominio API personalizzato)
REACT_APP_B1_WEBSITE_URL=https://{subdomain}.tuachiesa.org
Il token {subdomain} è letterale -- viene sostituito a runtime con il sottodominio di ogni chiesa (vedi Multi-sito più sotto).
3. Multi-sito (più chiese su un'unica istanza)
ChurchApps è multi-tenant per progettazione -- un unico deployment può ospitare un numero qualsiasi di chiese, ciascuna con le proprie persone, gruppi e sito web. Le nuove chiese si aggiungono interamente dall'interfaccia di amministrazione; non servono modifiche all'infrastruttura.
Aggiungere altre chiese
- In B1 Admin, vai su Impostazioni → Gestisci chiesa → Cambia chiesa → Crea nuova.
- Ogni chiesa ha uno slug di sottodominio univoco (ad esempio
primachiesa,comunitagrazia). - La nuova chiesa ottiene i propri dati, membri, sito web e configurazione delle donazioni, completamente isolati dalle altre chiese della stessa istanza.
Instradare ogni chiesa verso il proprio URL
Due modi per esporre pubblicamente le chiese:
| Schema | Esempio | Configurazione |
|---|---|---|
| Basato sul percorso (funziona subito) | app.tuachiesa.org/primachiesa | Nessuna configurazione aggiuntiva |
| Basato sul sottodominio (URL più puliti) | primachiesa.tuachiesa.org | DNS con wildcard + dominio personalizzato con wildcard |
Per il routing basato sul sottodominio su Railway:
- Nel tuo provider DNS, crea un CNAME con wildcard:
*.tuachiesa.org → <destinazione Railway di b1app>. - In Railway, sul servizio B1App → Settings → Networking, aggiungi
*.tuachiesa.orgcome dominio personalizzato. - Sul servizio B1Admin, imposta
REACT_APP_B1_WEBSITE_URL=https://{subdomain}.tuachiesa.org.
Dopo la ridistribuzione, il sito di ogni chiesa è servito automaticamente su <sottodominio>.tuachiesa.org.
I domini personalizzati con wildcard richiedono un piano Railway a pagamento. Il routing basato sul percorso funziona su ogni piano ed è funzionalmente identico -- solo meno bello nella barra degli indirizzi.
4. Donazioni online (Stripe / PayPal)
Le donazioni si configurano per chiesa dall'interfaccia di amministrazione, non tramite variabili d'ambiente -- così ogni chiesa può usare il proprio conto commerciante.
- Ottieni le credenziali per sviluppatori da Stripe (Developers → API keys) oppure PayPal (My Apps & Credentials).
- In B1 Admin, vai su Impostazioni → Impostazioni donazioni.
- Scegli il tuo provider, incolla le chiavi Pubblica e Segreta e configura la gestione delle commissioni.
- Facoltativamente aggiungi
GOOGLE_RECAPTCHA_SECRET_KEYal servizio Api in Railway per proteggere i moduli di donazione pubblici dai bot.
5. Archiviazione dei file
Il template configura un volume persistente da 1 GB montato sul servizio Api per le foto dei membri, i file dei sermoni e i documenti caricati.
Per aumentarlo: apri il servizio Api → Volumes → regola il cursore della dimensione.
Per distribuzioni più grandi (100+ GB o molti caricamenti simultanei), passa a S3 impostando queste variabili sul servizio Api:
FILE_STORE=S3
AWS_S3_BUCKET=<your-bucket>
AWS_ACCESS_KEY_ID=<key>
AWS_SECRET_ACCESS_KEY=<secret>
AWS_REGION=us-east-2
I file già presenti nel volume non vengono migrati automaticamente -- copiali nel bucket prima di cambiare la variabile.
6. Integrazioni opzionali di funzionalità
Queste sbloccano funzionalità specifiche e possono essere aggiunte in seguito dalla dashboard di Railway. Impostale sul servizio Api.
| Variabile | Funzionalità abilitata |
|---|---|
OPENAI_API_KEY oppure OPENROUTER_API_KEY | Ricerca assistita dall'IA e suggerimenti per i contenuti |
YOUTUBE_API_KEY | Ricerca e incorporamento dei sermoni da YouTube |
PEXELS_KEY | Selettore di immagini di repertorio per il costruttore di siti web |
VIMEO_TOKEN | Supporto dei sermoni su Vimeo |
API_BIBLE_KEY | Ricerca di versetti biblici nelle lezioni e nei contenuti |
YOUVERSION_API_KEY | Integrazione con YouVersion Bible |
WEB_PUSH_PUBLIC_KEY + WEB_PUSH_PRIVATE_KEY | Notifiche push nel browser (genera una coppia di chiavi VAPID) |
HUBSPOT_KEY | Sincronizzazione CRM facoltativa per le nuove registrazioni |
Aggiornamenti
Ogni servizio è collegato al rispettivo repository GitHub. I push su main di ChurchApps/Api, ChurchApps/B1Admin o ChurchApps/B1App attivano ridistribuzioni automatiche.
Per fissare una versione specifica, cambia l'impostazione Branch di ogni servizio su un tag o un branch di release. Questa è la configurazione consigliata per la produzione -- distribuire automaticamente da main significa ereditare anche il lavoro ancora in corso.
Costi
Intervalli reali per una piccola chiesa (meno di 200 membri, traffico leggero):
| Componente | Costo mensile indicativo |
|---|---|
| Base Railway | 5 $ |
| Plugin MySQL | 5 $ + ~1 $ di archiviazione |
| Calcolo dei 3 servizi web | 3–10 $ in totale |
| Volume da 1 GB | 0,25 $ |
| Totale | ~15–25 $/mese |
I costi crescono in modo lineare con il traffico, i caricamenti di foto e le dimensioni del database. Railway mostra l'utilizzo in tempo reale nella scheda Usage del progetto -- imposta lì dei limiti di spesa per contenere l'esposizione.
Risoluzione dei problemi
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
La build fallisce con EBUSY: rmdir '/app/node_modules/.cache' | conflitto della cache mount di Nixpacks | Imposta NIXPACKS_NO_CACHE=true sul servizio interessato |
La build di B1Admin fallisce con Missing: @types/... | package-lock.json non sincronizzato | Aggiorna con l'ultimo main |
| Il deploy dell'Api resta bloccato su "Deploying" | healthcheck fallito -- /health non restituisce 200 | Controlla i log di deploy; di solito manca una variabile d'ambiente obbligatoria |
| B1Admin mostra "controlla la tua email" ma nessuna email arriva | MAIL_SYSTEM=SMTP impostato ma credenziali mancanti o errate | Correggi le credenziali, oppure rimuovi MAIL_SYSTEM per disattivare l'email |
Il login reindirizza a api.churchapps.org | REACT_APP_STAGE è prod | Imposta REACT_APP_STAGE=custom sul servizio B1Admin |
| Tutte le chiese con sottodominio mostrano lo stesso contenuto | REACT_APP_B1_WEBSITE_URL non include il token {subdomain} | Impostalo ad esempio su https://{subdomain}.tuachiesa.org |
| Il dominio personalizzato mostra "Application not found" | DNS non ancora propagato, oppure certificato Railway in attesa | Attendi 5 minuti; verifica il DNS con dig admin.tuachiesa.org |
Se incontri qualcosa che non compare in questo elenco, apri una segnalazione su github.com/ChurchApps/Api/issues allegando i log di deploy.
Articoli correlati
- Self-hosting con Docker — lo stesso stack sul proprio hardware o VPS
- Configurazione iniziale — primi passi dopo la creazione della chiesa
- Configurazione iniziale del sito web — configura il sito pubblico della chiesa
- Impostazioni donazioni — collega Stripe o PayPal
- Setup locale dell'API — eseguire lo stack in locale per lo sviluppo
- Deployment dell'API (AWS) — come viene distribuito il SaaS ufficiale di ChurchApps