Go на VPS: деплой бинарника без лишних зависимостей
Деплой Go-приложения на VPS: кросс-компиляция, systemd, Nginx, graceful shutdown. Минимальный RAM и максимальная скорость.
Краткий ответ: скомпилируйте Go в статический бинарник, скопируйте на VPS, запустите через systemd. Nginx — для SSL и reverse proxy. Go потребляет 20–50 MB RAM — идеален для маленького VPS.
Go — лучший выбор, когда на 2 GB VPS нужно держать API, worker и Nginx одновременно. Сравните с Node.js (100+ MB на процесс).
Почему Go на VPS
| Go binary | Node.js | Python | |
|---|---|---|---|
| RAM | 20–50 MB | 100–300 MB | 80–200 MB |
| Зависимости на сервере | Нет | Node + node_modules | Python + venv |
| Старт | Мгновенный | 1–3 сек | 1–2 сек |
| Кросс-компиляция | Да | Нет | Нет |
Кросс-компиляция
# На dev-машине (Windows/macOS/Linux)
GOOS=linux GOARCH=amd64 go build -o app ./cmd/main.go
Скопируйте один файл:
scp app deploy@VPS:/opt/myapp/app
Никакого runtime на сервере — только бинарник.
systemd unit
[Unit]
Description=Go API
After=network.target
[Service]
User=deploy
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/app
Restart=on-failure
RestartSec=5
Environment=PORT=8080
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now go-api
См. systemd на Linux.
Nginx + SSL
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
SSL Let’s Encrypt + Cloudflare для CDN.
Graceful shutdown
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
srv.Shutdown(context.WithTimeout(context.Background(), 10*time.Second))
При systemctl restart — zero dropped connections.
Docker альтернатива
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o app .
FROM scratch
COPY --from=builder /app/app /app
ENTRYPOINT ["/app"]
Образ ~10 MB — см. multi-stage builds.
Мониторинг и логи
- Structured JSON logs → journalctl
- Метрики — Prometheus /metrics endpoint
- Алерты — Grafana
RAM на VPS
| Нагрузка | RAM |
|---|---|
| API 1000 rps | 512 MB–1 GB |
| API + worker | 1–2 GB |
| Несколько сервисов | 2 GB |
Go позволяет отложить апгрейд VPS дольше, чем Node/Python.
Итог
Go + VPS = один бинарник, systemd, Nginx. Минимум moving parts, максимум производительности на дешёвом сервере.
VPS от 1 GB — StormNet Cloud. Docker-вариант — Compose.
Рекомендуем прочитать
Частые вопросы
Нужен ли Go runtime на VPS?
Нет. Go компилируется в статический бинарник — на сервере только исполняемый файл и systemd unit.
Go или Node.js на VPS с 1 ГБ RAM?
Go — однозначно. Бинарник потребляет 20–50 МБ против 100+ МБ на Node.js процесс.






