PaaS Инфраструктура в РФ 🇷🇺

Деплой Python приложений

Хостинг и автоматический деплой Python-приложений из Git: FastAPI, Django, Flask, aiogram. Серверы в РФ, оплата в рублях, авто-SSL. Бесплатный старт.

Автодеплой из Git

Платформа сама скачает код с Репозитория, соберет проект и запустит его.

Готовая среда

Не нужно настраивать Nginx или Linux. Под капотом надежные серверы RelaxDev.

Свои домены и SSL

Привяжите свой домен в 1 клик, а платформа автоматически выпустит Let's Encrypt SSL.

Платформа разворачивает Python-приложения напрямую из репозитория: читает requirements.txt или pyproject.toml, ставит зависимости в изолированный контейнер, запускает приложение и выдаёт рабочий HTTPS-адрес. Настраивать сервер, gunicorn-юниты и обновление сертификатов вручную не нужно.

Подходит и веб-приложениям (FastAPI, Django, Flask), и фоновым процессам — например, ботам на aiogram, которым нужен режим 24/7. Инфраструктура в России, оплата в рублях: типичный сценарий переезда с Heroku, где бесплатный тариф закрыт, а оплата российской картой невозможна.

Как задеплоить Python?

1. Подключите репозиторий и выберите ветку

Поддерживаются GitHub, GitLab, GitFlic и GitVerse, включая приватные репозитории. Платформа скачивает код сама — загружать архивы вручную не нужно.

2. Опишите зависимости и команду запуска

Автодетект ищет requirements.txt (или pyproject.toml) и точку входа. Для веб-приложений команда запуска должна поднимать ASGI/WSGI-сервер и слушать порт из переменной окружения PORT на хосте 0.0.0.0.

# requirements.txt
fastapi==0.115.*
uvicorn[standard]==0.32.*

# команда запуска
uvicorn app.main:app --host 0.0.0.0 --port $PORT

# Django
gunicorn project.wsgi:application --bind 0.0.0.0:$PORT

3. Добавьте переменные окружения

SECRET_KEY, DATABASE_URL, токены API задаются в настройках проекта и подставляются при запуске. Для Django не забудьте ALLOWED_HOSTS — иначе приложение вернёт ошибку 400 на любой запрос.

# Django settings.py
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')
DEBUG = False
CSRF_TRUSTED_ORIGINS = ['https://ваш-домен.ru']

4. Задеплойте и подключите домен

После сборки проект доступен сразу. Свой домен добавляется в настройках, SSL выпускается и продлевается автоматически. Автодеплой пересобирает приложение на каждый push.

Сравнение платформ

ПлатформаСтатусОплата
HerokuНе работает с РФБесплатный тариф закрыт
RenderДоступен частичноОплата только в валюте
PythonAnywhereДоступенВалютная оплата, лимиты
RelaxDevСерверы в РФРубли, есть бесплатный тариф

Для российских разработчиков основной блокер зарубежных PaaS — не функциональность, а оплата и юрисдикция. RelaxDev повторяет привычный сценарий Heroku (подключил репозиторий → получил рабочий адрес), но с рублёвым биллингом и серверами внутри страны.

Частые ошибки и решения

Приложение запустилось, но отдаёт 502

Проверьте, что сервер слушает 0.0.0.0 и порт из переменной PORT. Команда uvicorn app:app без --host 0.0.0.0 поднимет приложение только внутри контейнера — снаружи оно будет недоступно.

Django: DisallowedHost / ошибка 400

В ALLOWED_HOSTS не добавлен домен, на котором работает проект. Впишите туда и технический адрес платформы, и ваш домен, а сам список вынесите в переменную окружения.

Статика Django не отдаётся

В контейнере нет отдельного веб-сервера для статики. Соберите файлы командой collectstatic на этапе сборки и раздавайте через WhiteNoise — либо вынесите статику в хранилище платформы.

Сборка падает на установке пакета

Зафиксируйте версии в requirements.txt. Пакеты, требующие компиляции (psycopg2, lxml), лучше ставить в бинарной сборке — например, psycopg2-binary.

FAQ

Какие версии Python поддерживаются?

Актуальные стабильные версии ветки 3.x. Конкретную версию можно закрепить через pyproject.toml или собственный Dockerfile.

Можно ли хостить Telegram-бота на Python?

Да, это один из частых сценариев. Бот на aiogram или pyTelegramBotAPI работает в режиме 24/7, токен хранится в переменных окружения. Подробности — на странице хостинга Telegram-ботов.

Как подключить PostgreSQL?

Базу можно создать на платформе и получить строку подключения, либо указать внешнюю через переменную DATABASE_URL. Для миграций при сборке включается режим доступа к БД во время сборки.

Нужен ли Docker?

Нет, для типовых проектов достаточно requirements.txt. Dockerfile нужен для нестандартных системных зависимостей — например, при работе с ffmpeg или geospatial-библиотеками.

Как запустить фоновые задачи и Celery?

Фоновый процесс разворачивается отдельным проектом на той же платформе, с общими переменными окружения и доступом к той же базе или брокеру.