Деплой 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:$PORT3. Добавьте переменные окружения
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?
Фоновый процесс разворачивается отдельным проектом на той же платформе, с общими переменными окружения и доступом к той же базе или брокеру.