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

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

Деплой Go-приложений из Git: автосборка бинарника, Gin, Echo, Fiber, chi. Серверы в РФ, оплата в рублях, авто-SSL и свой домен. Бесплатный старт.

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

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

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

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

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

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

RelaxDev собирает Go-проекты напрямую из репозитория: платформа находит go.mod, компилирует статический бинарник (CGO отключён) и запускает его в минимальном контейнере. Итоговый образ весит десятки мегабайт, стартует за доли секунды и не тянет за собой рантайм-зависимости.

Подходит и HTTP-сервисам на Gin, Echo, Fiber или стандартном net/http, и фоновым процессам — воркерам и Telegram-ботам. Инфраструктура физически в России, оплата в рублях, для юрлиц доступен договор.

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

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

Выберите репозиторий с Go-проектом и ветку. Автоопределение находит go.mod и выбирает Go-сборщик. Точка входа ищется в ./cmd/... либо в корне модуля.

2. Слушайте порт из переменной PORT

Приложение должно слушать 0.0.0.0 и порт из переменной окружения PORT (по умолчанию 8080). Захардкоженный порт — самая частая причина 502 после деплоя.

port := os.Getenv("PORT")
if port == "" {
    port = "8080"
}
log.Fatal(http.ListenAndServe(":"+port, mux))

3. Задайте переменные окружения

Строка подключения к базе, ключи API и прочие секреты добавляются в настройках проекта и читаются через os.Getenv — коммитить .env в репозиторий не нужно.

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

После сборки сервис доступен на техническом HTTPS-адресе. Свой домен добавляется в настройках проекта: A-запись — и платформа сама выпускает и продлевает SSL. При включённом автодеплое каждый push пересобирает проект.

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

ПлатформаСтатусОплата
HerokuНе работает с РФОплата картой РФ невозможна
Обычный VPSРаботаетsystemd, nginx, SSL — вручную
Fly.io / RailwayНедоступны из РФВалютная подписка
RelaxDevСерверы в РФРубли, есть бесплатный тариф

Go-разработчики в России обычно деплоят бинарник на VPS руками: scp, systemd-юнит, nginx, certbot. RelaxDev закрывает тот же сценарий деплоем из git push — сборка, HTTPS и перезапуск при сбое на стороне платформы, оплата в рублях.

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

Сервис запустился, но отдаёт 502

Приложение слушает не тот адрес или порт. Проверьте, что сервер поднят на 0.0.0.0 и берёт порт из переменной PORT — localhost внутри контейнера снаружи недоступен.

Сборка не находит точку входа

Сборщик ищет main-пакет в ./cmd/... и затем в корне модуля. Если структура нестандартная (несколько сервисов в одном репозитории), укажите корневую папку в настройках проекта или добавьте свой Dockerfile.

Ошибки при сборке пакетов с CGO

Сборка идёт с CGO_ENABLED=0 для статического бинарника. Зависимостям, требующим cgo (например, некоторые SQLite-драйверы), нужен собственный Dockerfile — либо замените их на чистые Go-аналоги, например modernc.org/sqlite.

Приложение падает сразу после старта

Смотрите рантайм-логи в панели: чаще всего это отсутствующая переменная окружения или недоступная база. Внутри контейнера localhost указывает на сам контейнер — используйте адрес базы, выданный платформой.

FAQ

Какая версия Go используется при сборке?

Актуальная стабильная версия тулчейна. Если проекту нужна конкретная версия, зафиксируйте её в go.mod (директива go) или подключите собственный Dockerfile.

Нужен ли Dockerfile для Go-проекта?

Нет, для типового сервиса достаточно go.mod — платформа соберёт бинарник сама. Dockerfile нужен для CGO-зависимостей, системных библиотек или нестандартной структуры репозитория.

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

Да: боты на telebot или tgbotapi определяются автоматически и работают как долгоживущий процесс 24/7 с автоперезапуском при сбое.

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

Создайте базу на платформе и передайте строку подключения через переменную окружения (например, DATABASE_URL), либо укажите внешний хост. Внутри контейнера не используйте localhost.

Поддерживаются ли WebSocket и gRPC?

WebSocket проксируется без дополнительной настройки на том же порту. Для gRPC-сервисов рекомендуем режим gRPC-Web либо свой Dockerfile с реверс-прокси.