Деплой на VPS через GitHub Actions: практический гайд

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

деплойvpsgithub actions

Автоматический деплой на VPS через GitHub Actions — это способ выкатывать изменения на сервер без ручного scp, SSH-команд и лишних ошибок. Подход особенно полезен для pet-проектов, лендингов, API и небольших production-сервисов.

Что нужно для настройки

  • VPS с доступом по SSH
  • GitHub-репозиторий с проектом
  • SSH-ключ для безопасного подключения
  • установленный на сервере runtime: Node.js / Python / Docker — в зависимости от проекта
  • GitHub Secrets для хранения чувствительных данных 🔐

Какие данные добавить в GitHub Secrets

Обычно нужны:

  • HOST — IP или домен VPS
  • USERNAME — пользователь сервера
  • SSH_KEY — приватный SSH-ключ
  • PORT — SSH-порт, если не стандартный

Если проект требует переменные окружения, их тоже лучше хранить в Secrets, а не в коде.

Базовый сценарий деплоя

  1. Вы пушите код в main
  2. GitHub Actions запускает workflow
  3. Runner подключается к VPS по SSH
  4. На сервере обновляется код
  5. Устанавливаются зависимости
  6. Перезапускается приложение ⚙️

Пример workflow

name: Deploy to VPS

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: ${{ secrets.PORT }}
          script: |
            cd /var/www/app
            git pull origin main
            npm install
            npm run build
            pm2 restart app

Что должно быть на VPS

  • проект уже один раз склонирован в нужную папку
  • настроены права доступа
  • установлен pm2, systemd или Docker для перезапуска сервиса
  • сервер умеет получать изменения из GitHub

Важный момент с SSH-ключами

Лучше создать отдельный deploy key, а не использовать личный ключ администратора. Это снижает риски и упрощает отзыв доступа. Также стоит отключить вход по паролю, оставив только авторизацию по ключу 🛡️

Частые ошибки

  • Permission denied — неверный ключ или права на сервере
  • git pull не работает — сервер не авторизован в GitHub
  • приложение не перезапускается — проблема в pm2 или service unit
  • деплой проходит, но сайт не обновился — забыли пересобрать фронтенд или очистить кэш

Как сделать деплой надежнее

  • запускать workflow только для main
  • добавить тесты перед деплоем
  • использовать npm ci вместо npm install для предсказуемой сборки
  • хранить логи деплоя
  • делать релизы через Docker, если нужен более стабильный rollout 📦

GitHub Actions + VPS — это простой способ получить CI/CD без сложной инфраструктуры. Для небольших команд и независимых разработчиков такой деплой часто дает лучший баланс между скоростью, ценой и контролем ✅

Посмотрите подборку каналов про IT — там есть полезные материалы по DevOps, backend, автоматизации и production-практике.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же