Перейти к основному содержимому

Самостоятельное развёртывание на 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, нажмите Register и создайте учётную запись. Первая учётная запись автоматически становится администратором сервера.
  6. Следуйте подсказкам в приложении, чтобы создать первую церковь.

На этом всё. У вас полностью работающий экземпляр ChurchApps. Всё, что ниже, — необязательная доработка.

Совет

Развёртывание сейчас находится в бета-версии. Если вы столкнулись с чем-то, чего нет в документации, создайте задачу на github.com/ChurchApps/Api/issues и приложите журналы развёртывания.

Что понадобится

  • Бесплатная учётная запись Railway
  • Банковская карта, привязанная к Railway (~$15–25 в месяц для небольшой общины; см. Стоимость)
  • Около 15 минут на первоначальное развёртывание
  • Необязательно, но настоятельно рекомендуется позже: учётные данные SMTP и собственный домен

Что развёртывается​

Шаблон создаёт четыре сервиса в одном проекте 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.

Первоначальная настройка​

Теперь, когда система запущена, вот что большинство церквей настраивают дальше — примерно в порядке приоритета.

Без email участники всё равно могут регистрироваться и пользоваться системой, но они не смогут сбросить забытый пароль — это должен сделать за них администратор. Настройка SMTP занимает около 5 минут.

В панели Railway откройте сервис Api → Variables и добавьте:

MAIL_SYSTEM=SMTP
SMTP_HOST=<адрес вашего провайдера>
SMTP_USER=<ваше имя пользователя>
SMTP_PASS=<ваш пароль или ключ API>
SMTP_SECURE=false
SUPPORT_EMAIL=noreply@yourchurch.org

Стоит знать о трёх провайдерах:

Resend — самый простой бесплатный вариант (100 писем в день)​

  1. Зарегистрируйтесь на resend.com.
  2. Подтвердите домен отправки (или используйте тестовый отправитель onboarding@resend.dev, чтобы начать).
  3. Создайте ключ API.
  4. Задайте SMTP_HOST=smtp.resend.com, SMTP_USER=resend, SMTP_PASS=re_xxxxxxxxx.

Gmail — бесплатно для личного использования (~500 в день)​

  1. Включите двухфакторную аутентификацию в учётной записи Google.
  2. Создайте пароль приложения.
  3. Задайте SMTP_HOST=smtp.gmail.com, SMTP_USER=your-address@gmail.com, SMTP_PASS=<16-символьный пароль приложения>.

AWS SES — самый дешёвый при больших объёмах​

  1. Подтвердите домен отправки в AWS.
  2. Выйдите из песочницы SES, если будете отправлять на неподтверждённые адреса.
  3. Создайте учётные данные SMTP в разделе SES → SMTP Settings → Create credentials.
  4. Задайте SMTP_HOST=email-smtp.us-east-2.amazonaws.com, SMTP_USER=AKIA..., SMTP_PASS=<пароль SMTP SES>.

После сохранения переменных сервис Api перезапускается автоматически. Проверьте, инициировав сброс пароля на тестовой учётной записи.

Предупреждение

Если указать MAIL_SYSTEM=SMTP с неверными учётными данными, регистрация будет выглядеть успешной, но письмо с подтверждением так и не придёт. Либо исправьте учётные данные, либо удалите MAIL_SYSTEM, чтобы вернуться к режиму без email.

2. Собственные домены​

Адреса *.up.railway.app работают, но большинство церквей хотят свои.

Для каждого веб-сервиса (B1Admin и B1App):

  1. Откройте сервис в Railway → Settings → Networking.
  2. Нажмите + Custom Domain и введите имя хоста:
    • admin.yourchurch.org для B1Admin
    • app.yourchurch.org (или www) для B1App
  3. Добавьте CNAME-запись, которую покажет Railway, у вашего 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 изначально многопользовательская система — одно развёртывание может обслуживать любое количество церквей, у каждой свои люди, группы и сайт. Новые церкви добавляются полностью через административный интерфейс; никаких изменений инфраструктуры не требуется.

Добавление дополнительных церквей​

  1. В B1 Admin перейдите в Settings → Manage Church → Switch Church → Create New.
  2. У каждой церкви есть уникальный slug поддомена (например, firstchurch, gracecommunity).
  3. Новая церковь получает собственные данные, участников, сайт и настройки пожертвований, полностью изолированные от других церквей на том же экземпляре.

Направление каждой церкви на собственный адрес​

Есть два способа публично открыть церкви:

СхемаПримерНастройка
По пути (работает сразу)app.yourchurch.org/firstchurchДополнительная настройка не нужна
По поддомену (более аккуратные адреса)firstchurch.yourchurch.orgПодстановочная DNS-запись и подстановочный собственный домен

Для маршрутизации по поддомену на Railway:

  1. В DNS-провайдере создайте подстановочную CNAME-запись: *.yourchurch.org → <цель railway для b1app>.
  2. В Railway, в сервисе B1App → Settings → Networking, добавьте *.yourchurch.org как собственный домен.
  3. В сервисе B1Admin задайте REACT_APP_B1_WEBSITE_URL=https://{subdomain}.yourchurch.org.

После повторного развёртывания сайт каждой церкви автоматически открывается по адресу <их-поддомен>.yourchurch.org.

Информация

Подстановочные собственные домены требуют платного тарифа Railway. Маршрутизация по пути работает на любом тарифе и функционально идентична — просто адресная строка выглядит менее аккуратно.

4. Онлайн-пожертвования (Stripe / PayPal)​

Пожертвования настраиваются для каждой церкви внутри административного интерфейса, а не через переменные окружения — так каждая церковь может использовать собственную торговую учётную запись.

  1. Получите учётные данные разработчика в Stripe (Developers → API keys) или PayPal (My Apps & Credentials).
  2. В B1 Admin перейдите в Settings → Giving Settings.
  3. Выберите провайдера, вставьте публичный и секретный ключи и настройте обработку комиссий.
  4. По желанию добавьте GOOGLE_RECAPTCHA_SECRET_KEY в сервис Api в Railway, чтобы защитить публичные формы пожертвований от ботов.

5. Хранение файлов​

Шаблон создаёт постоянный том на 1 ГБ, подключённый к сервису Api, для фото участников, файлов проповедей и загруженных документов.

Чтобы увеличить его: откройте сервис Api → Volumes → измените размер ползунком.

Для больших развёртываний (100+ ГБ или много одновременных загрузок) переключитесь на S3, задав в сервисе Api:

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Поиск с ИИ-помощником и предложения по контенту
YOUTUBE_API_KEYПоиск и встраивание проповедей с YouTube
PEXELS_KEYВыбор стоковых изображений для конструктора сайтов
VIMEO_TOKENПоддержка проповедей с Vimeo
API_BIBLE_KEYПоиск стихов Библии в уроках и контенте
YOUVERSION_API_KEYИнтеграция с YouVersion Bible
WEB_PUSH_PUBLIC_KEY + WEB_PUSH_PRIVATE_KEYPush-уведомления в браузере (создайте пару ключей VAPID)
HUBSPOT_KEYНеобязательная синхронизация с CRM для новых регистраций

Обновление​

Каждый сервис связан со своим репозиторием GitHub. Push в main в ChurchApps/Api, ChurchApps/B1Admin или ChurchApps/B1App запускает автоматическое повторное развёртывание.

Чтобы зафиксировать конкретную версию, измените настройку Branch каждого сервиса на тег или ветку релиза. Это рекомендуемая схема для продакшна: автоматическое развёртывание из main подхватывает незавершённую работу.

Стоимость​

Реальные диапазоны для небольшой церкви (менее 200 участников, небольшой трафик):

КомпонентПримерная стоимость в месяц
Базовый тариф Railway$5
Плагин MySQL$5 + ~$1 за хранилище
Вычислительные ресурсы 3 веб-сервисов$3–10 вместе
Том 1 ГБ$0.25
Итого~$15–25 в месяц

Стоимость растёт линейно с трафиком, загрузкой фото и размером базы данных. Railway показывает текущее использование на вкладке Usage проекта — там можно задать лимиты расходов, чтобы ограничить риск.

Устранение неполадок​

СимптомВероятная причинаРешение
Сборка падает с EBUSY: rmdir '/app/node_modules/.cache'Конфликт кеша NixpacksЗадайте NIXPACKS_NO_CACHE=true для затронутого сервиса
Сборка B1Admin падает с Missing: @types/...Рассинхронизированный package-lock.jsonЗагрузите последний main
Развёртывание Api зависает на "Deploying"Проверка работоспособности не проходит — /health не возвращает 200Посмотрите журналы развёртывания; обычно не хватает обязательной переменной окружения
B1Admin пишет "check your email", но письмо не приходитЗадан MAIL_SYSTEM=SMTP, но учётные данные отсутствуют или неверныИсправьте учётные данные или удалите MAIL_SYSTEM, чтобы отключить email
Вход перенаправляет на api.churchapps.orgREACT_APP_STAGE равен 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 и приложите журналы развёртывания.

Связанные статьи​