Самостоятельный хостинг на Railway
ChurchApps публикует один клик Railway шаблон, который дает вашей церкви собственный приватный экземпляр B1 Admin, портала B1 для членов, API и базе данных MySQL — все работающие на инфраструктуре, которой вы владеете и платите напрямую. Это руководство получает вас в действие примерно за 15 минут и затем проходит через конфигурацию после развертывания, которую большинство церквей в конечном итоге хотят.
Быстрый старт
- Нажмите кнопку Развернуть на Railway выше.
- Войдите в Railway (или создайте бесплатный аккаунт) и добавьте способ оплаты.
- Нажмите Развернуть без изменения чего-либо — каждая переменная имеет рассудительное по умолчанию значение.
- Ждите 5–10 минут, пока четыре сервиса не станут зелеными.
- Откройте URL B1Admin сервиса, нажмите Зарегистрироваться и создайте свой аккаунт. Первый аккаунт автоматически является администратором сервера.
- Следуйте подсказкам в приложении, чтобы создать вашу первую церковь.
Вот оно. Теперь у вас есть полностью работающий экземпляр ChurchApps. Все ниже является опциональной полировкой.
Развертывание в настоящее время находится в бета. Если вы столкнетесь с чем-то, чего документы не охватывают, пожалуйста, откройте вопрос на github.com/ChurchApps/Api/issues с логами развертывания.
Что вам нужно
Что получает развернуто
Шаблон подготавливает четыре сервиса в одном проекте Railway:
| Сервис | Назначение | URL после развертывания |
|---|---|---|
| MySQL | Хранит все данные (один экземпляр, множественные схемы) | только внутренний |
| Api | Backend для членства, контента, пожертвований, посещаемости и т.д. | 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 сервис → Переменные и добавьте:
MAIL_SYSTEM=SMTP
SMTP_HOST=<ваш хост поставщика>
SMTP_USER=<ваше имя пользователя>
SMTP_PASS=<ваш пароль или API ключ>
SMTP_SECURE=false
SUPPORT_EMAIL=noreply@yourchurch.org
Три поставщика стоят знания:
Resend — самый простой бесплатный вариант (100 писем/день)
- Зарегистрируйтесь на resend.com.
- Проверьте отправляющий домен (или используйте отправителя тестирования
onboarding@resend.dev, чтобы начать). - Создайте API ключ.
- Установите
SMTP_HOST=smtp.resend.com,SMTP_USER=resend,SMTP_PASS=re_xxxxxxxxx.
Gmail — бесплатно для личного использования (~500/день)
- Включите двухфакторную аутентификацию на аккаунте Google.
- Создайте пароль приложения.
- Установите
SMTP_HOST=smtp.gmail.com,SMTP_USER=your-address@gmail.com,SMTP_PASS=<16-символьный пароль приложения>.
AWS SES — дешевле при масштабе
- Проверьте отправляющий домен в AWS.
- Выйдите из SES sandbox, если вы отправляете на не-проверенные адреса.
- Создайте учетные данные SMTP под SES → SMTP Settings → Create credentials.
- Установите
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 URLs работают, но большинство церквей хотят собственные.
Для каждого веб-сервиса (B1Admin и B1App):
- Откройте сервис в Railway → Параметры → Сетевая связь.
- Нажмите + Пользовательский домен и введите имя хоста:
admin.yourchurch.orgдля B1Adminapp.yourchurch.org(илиwww) для B1App
- Добавьте запись CNAME, которую показывает Railway, на вашего поставщика 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 является многопользовательским по дизайну — одно развертывание может хостировать любое количество церквей, каждая со своей собственной людьми, группами и веб-сайтом. Новые церкви добавляются полностью через админский пользовательский интерфейс; никакие изменения инфраструктуры не требуются.
Добавление дополнительных церквей
- В B1 Admin перейдите в Параметры → Управление церковью → Переключить церковь → Создать новую.
- Каждая церковь имеет уникальный слаг поддомена (например
firstchurch,gracecommunity). - Новая церковь получает свои собственные данные, членов, веб-сайт и настройку пожертвований, полностью изолированные от других церквей на одном экземпляре.
Маршрутизирование каждой церкви на свой собственный URL
Два способа выставить церкви публично:
| Паттерн | Пример | Настройка |
|---|---|---|
| На основе пути (работает из коробки) | app.yourchurch.org/firstchurch | Нет дополнительной настройки |
| На основе поддомена (чище URLs) | firstchurch.yourchurch.org | Подстановочный DNS + подстановочный пользовательский домен |
Для маршрутизации на основе поддомена на Railway:
- В вашем поставщике DNS создайте подстановочный CNAME:
*.yourchurch.org → <b1app railway target>. - На Railway, на сервисе B1App → Параметры → Сетевая связь, добавьте
*.yourchurch.orgкак пользовательский домен. - На B1Admin сервисе установите
REACT_APP_B1_WEBSITE_URL=https://{subdomain}.yourchurch.org.
После переразворачивания, сайт каждой церкви обслуживается на <their-subdomain>.yourchurch.org автоматически.
Подстановочные пользовательские домены требуют платный план Railway. Маршрутизация на основе пути работает на каждом плане и функционально идентична — просто менее красивая в адресной строке.
4. Онлайн пожертвования (Stripe / PayPal)
Пожертвования настраиваются в пределах админского пользовательского интерфейса для каждой церкви, не через переменные окружения — так каждая церковь может использовать свой собственный счет поставщика.
- Получите учетные данные разработчика из Stripe (Developers → API keys) или PayPal (My Apps & Credentials).
- В B1 Admin перейдите в Параметры → Параметры пожертвований.
- Выберите вашего поставщика, вставьте открытые и секретные ключи и настройте обработку комиссий.
- При необходимости добавьте
GOOGLE_RECAPTCHA_SECRET_KEYна сервис Api в Railway для защиты форм публичных пожертвований от ботов.
5. Хранилище файлов
Шаблон подготавливает 1 GB постоянное хранилище, смонтированное на Api сервис для фотографий членов, файлов проповедей и загруженных документов.
Чтобы увеличить: откройте Api сервис → Хранилища → отрегулируйте ползунок размера.
Для больших развертываний (100+ GB или много одновременных загрузок) переключитесь на S3 установкой этих на Api сервис:
FILE_STORE=S3
AWS_S3_BUCKET=<ваше-ведро>
AWS_ACCESS_KEY_ID=<ключ>
AWS_SECRET_ACCESS_KEY=<секрет>
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 Bible |
WEB_PUSH_PUBLIC_KEY + WEB_PUSH_PRIVATE_KEY | Push-уведомления браузера (генерируйте VAPID ключевую пару) |
HUBSPOT_KEY | Опциональная синхронизация CRM для новых регистраций |
Обновление
Каждый сервис связан с соответствующим репо GitHub. Pushes на main на ChurchApps/Api, ChurchApps/B1Admin или ChurchApps/B1App запускают автоматические переразворачивания.
Чтобы закрепить конкретную версию, измените параметр Branch на каждом сервисе на тег или ветвь выпуска. Это рекомендуемая настройка для production — автоматическое развертывание из main означает, что вы наследуете любую незаконченную работу.
Стоимость
Реальные диапазоны для малой церкви (менее 200 членов, легкий трафик):
| Компонент | Приблизительная ежемесячная стоимость |
|---|---|
| Railway основа | $5 |
| MySQL плагин | $5 + ~$1 хранилище |
| 3 веб-сервиса вычисления | $3–10 объединенные |
| 1 GB хранилище | $0.25 |
| Всего | ~$15–25/месяц |
Стоимость масштабируется линейно с трафиком, загрузками фотографий и размером базы данных. Railway показывает использование в реальном времени на вкладке Использование проекта — установите там лимиты расходов, чтобы ограничить ваше воздействие.
Решение проблем
| Симптом | Вероятная причина | Исправление |
|---|---|---|
Сборка не получается с EBUSY: rmdir '/app/node_modules/.cache' | Конфликт кэша Nixpacks | Установите NIXPACKS_NO_CACHE=true на затронутом сервисе |
Сборка не получается на B1Admin с Missing: @types/... | Из синхронизации package-lock.json | Потяните последний main |
| Api развертывание зависает на "Deploying" | Проверка здоровья не получается — /health не возвращает 200 | Просмотрите логи развертывания; обычно отсутствует требуемая переменная окружения |
| B1Admin показывает "проверьте свою электронную почту", но электронное письмо не прибывает | MAIL_SYSTEM=SMTP установлено, но учетные данные отсутствуют/неправильные | Исправьте учетные данные или отмените установку MAIL_SYSTEM, чтобы отключить электронную почту |
Вход перенаправляет на api.churchapps.org | REACT_APP_STAGE is prod | Установите REACT_APP_STAGE=custom на сервис B1Admin |
| Поддомен церквей показывают все одно содержание | REACT_APP_B1_WEBSITE_URL не включает токен {subdomain} | Установите его на например https://{subdomain}.yourchurch.org |
| Пользовательский домен показывает "Application not found" | DNS еще не распространен или Railway сертификат ожидает | Подождите 5 минут; проверьте DNS с dig admin.yourchurch.org |
Если вы столкнетесь с чем-то, не в этом списке, откройте вопрос на github.com/ChurchApps/Api/issues с логами развертывания.
Связанные статьи
- Начальная настройка — Первые шаги после создания вашей церкви
- Начальная настройка сайта — Настройте открытый сайт вашей церкви
- Параметры пожертвований — Подключите Stripe или PayPal
- Локальная настройка API — Запуск стека локально для разработки
- Развертывание API (AWS) — Как развертывается официальная ChurchApps SaaS