Деплой 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 с реверс-прокси.