Проект для развертывания инфраструктуры CanFly на платформе Railway.app с поддержкой поддоменов через Cloudflare DNS.
- 🚂 Развертывание на платформе Railway.app
- 🔄 Перенаправление поддоменов в пути
/i/[service] - 🛡️ Интеграция с Cloudflare DNS
- 📊 Подробное логирование всех операций
- 🧩 Простое добавление новых сервисов
- Установленный Railway CLI
- Домен, настроенный на Cloudflare
- Python 3 и pip
- curl, jq (для работы скрипта)
- Клонируйте репозиторий:
git clone https://github.com/yourusername/canfly-railway.git
cd canfly-railway-
Получите API токен Cloudflare (см. cloudflare-api-setup.md)
-
Запустите скрипт развертывания:
chmod +x railway-deploy.sh
./railway-deploy.sh- Следуйте инструкциям в консоли
/
├── railway-deploy.sh # Основной скрипт развертывания
├── cloudflare-api-setup.md # Инструкция по настройке Cloudflare API
└── README.md # Эта документация
После запуска скрипта создается временная директория с проектом, которая отправляется на Railway:
/tmp/temp-dir/
├── app/ # Статические файлы для Nginx
│ └── index.html # Демонстрационная страница
├── nginx/ # Конфигурация Nginx
│ └── conf.d/
│ └── default.conf # Основная конфигурация с обработкой поддоменов
├── Dockerfile # Dockerfile для сборки образа
├── railway.json # Конфигурация для Railway
└── ... (другие служебные файлы)
- Скрипт создает проект на Railway с Nginx сервером
- Настраивает DNS записи в Cloudflare для основного домена и wildcard поддомена
- Nginx обрабатывает запросы и перенаправляет поддомены в пути
/i/[service]
- Запрос к
https://mail.canfly.orgбудет автоматически перенаправлен наhttps://canfly.org/i/mail - Аналогично работает для любых других поддоменов
Если вы уже запускали скрипт и хотите внести изменения:
# Войдите в Railway CLI
railway login
# Найдите директорию с временными файлами в логах
grep "Создана временная директория" ~/.railway-canfly-logs/deploy-*.log | tail -1
# Перейдите в эту директорию и внесите изменения
cd /tmp/temp-dir-example
# Внесите изменения...
# Разверните обновления
railway up- Логи сохраняются в директории
~/.railway-canfly-logs/ - Конфигурация хранится в
~/.railway-canfly-config/
MIT
В проекте настроен защищенный доступ к логам Nginx через Basic Authentication.
Для корректной работы необходимо установить следующие переменные окружения:
LOGS_USER: имя пользователя для доступа к логам (по умолчаниюadmin)LOGS_PASSWORD: пароль для доступа к логам (по умолчаниюadmin, рекомендуется сменить)
Для локальной разработки создайте файл .env в корне проекта:
LOGS_USER=admin
LOGS_PASSWORD=secure_password
Для продакшн-среды установите переменные окружения через Railway Dashboard:
- Перейдите в Railway Dashboard
- Выберите проект
- Перейдите в раздел "Variables"
- Добавьте переменные
LOGS_USERиLOGS_PASSWORD
Доступ к логам осуществляется по URL /logs/ с использованием Basic Authentication.
Пример доступа через curl:
curl -u $LOGS_USER:$LOGS_PASSWORD https://canfly.org/logs/access.logПример скачивания файла логов:
wget --user=$LOGS_USER --password=$LOGS_PASSWORD https://canfly.org/logs/access.log