How to Use GitHub Actions for Continuous Deployment on VPS Hosting?

5/5 - (2 votes)

How to Use GitHub Actions for Continuous Deployment on VPS Hosting?

Continuous deployment is becoming an essential practice in modern DevOps workflows. For developers using virtual private servers (VPS), setting up an automated deployment pipeline ensures faster release cycles, reduced downtime, and increased confidence in production releases.
In this guide, we’ll walk you through using GitHub Actions for VPS deployment and how to build a robust GitHub CI/CD pipeline for VPS hosting.

What is GitHub Actions?

GitHub Actions is a CI/CD platform provided by GitHub that lets you automate tasks within your software development workflow. With GitHub Actions, you can build, test, and deploy applications directly from your GitHub repository. It supports Linux, macOS, and Windows runners and allows integration with any server, including your own VPS.

Why Use GitHub Actions for Server Deployment?

  • It automates repetitive tasks like building and deploying.
  • You can run scripts, restart services, and push code automatically.
  • Eliminates manual deployment errors.
  • Provides detailed logs and easy rollbacks.

With GitHub Actions for server deployment, your entire workflow becomes efficient, reliable, and reproducible.

Prerequisites for GitHub Actions VPS Deployment

  • A GitHub repository with your application code
  • Access to a VPS (preferably with SSH login and root access)
  • Git and Node.js, PHP, or any runtime depending on your application stack
  • Configured firewall and user permissions

Step-by-Step: Setting Up Continuous Deployment with GitHub Actions

1. Create Your GitHub Workflow File

In your GitHub repository, create a new workflow file under .github/workflows/deploy.yml. This file tells GitHub how to build and deploy your project.

name: Deploy to VPS

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Deploy to VPS
      uses: appleboy/ssh-action@v1.0.0
      with:
        host: ${{ secrets.VPS_HOST }}
        username: ${{ secrets.VPS_USER }}
        key: ${{ secrets.VPS_PRIVATE_KEY }}
        script: |
          cd /var/www/yourproject
          git pull origin main
          npm install
          pm2 restart app
      

This script checks out your code, connects to your VPS via SSH, and performs the deployment tasks like pulling the latest code and restarting the app.

2. Configure Your Repository Secrets

Go to your GitHub repository settings and add the following secrets:

  • VPS_HOST: Your server’s IP address
  • VPS_USER: The user with access (e.g., root or deploy)
  • VPS_PRIVATE_KEY: Your private SSH key without a passphrase

3. Secure SSH Access to the VPS

On your VPS, add your GitHub runner’s public SSH key to the ~/.ssh/authorized_keys file. Make sure the VPS user has the right permissions to access your app directory and restart services.

Benefits of Automated Deployment to VPS

Using automated deployment to VPS brings a wide range of advantages:

  • Code changes are automatically pushed live after every commit.
  • Faster release cycles and immediate rollback options.
  • Reduces human error during deployment.
  • Improves team collaboration and transparency.
  • Integrates well with staging and production environments.

Best Practices for GitHub CI/CD Pipeline VPS Deployment

To ensure your GitHub CI/CD pipeline for VPS runs efficiently, follow these tips:

  • Keep your workflow scripts modular and reusable.
  • Use environment variables for sensitive data.
  • Set up staging and production branches separately.
  • Use rollback mechanisms in case of deployment failure.
  • Monitor logs and use alerts for deployment errors.

Common Use Cases for GitHub Actions on VPS Hosting

  • Deploying Node.js, Laravel, Django, or Flask apps to a Linux server
  • Running database migrations or syncing assets post-deployment
  • Managing server-side cron jobs or queue workers
  • Performing system updates after code releases

GitHub Actions vs Other CI/CD Tools

While Jenkins, GitLab CI, and CircleCI offer powerful deployment tools, GitHub Actions stands out due to:

  • Built-in GitHub integration
  • No need for separate servers
  • Free for public repositories
  • Extensive marketplace of prebuilt actions

This makes it an ideal solution for lean teams and startups looking for seamless continuous deployment with GitHub Actions.

Troubleshooting Common Deployment Issues

Here are a few issues you might encounter while using GitHub Actions for server deployment:

  • SSH Authentication Fails: Check if the private key is correctly added in GitHub secrets and matches the VPS user’s authorized keys.
  • Permission Denied: Ensure the deployment user has write and execution rights on the VPS project directory.
  • Git Pull Fails: Add GitHub’s deploy key to the VPS or configure Git credentials properly.
Setting up GitHub Actions for VPS deployment is one of the most effective ways to automate and streamline your server workflows. Whether you’re pushing changes to a Node.js app or a PHP backend, this guide equips you with everything you need for a reliable, automated deployment pipeline.At BeStarHost, our high-performance dedicated hosting plans are optimized for continuous deployment with GitHub Actions. With full SSH access, root privileges, and fast SSD storage, deploying with GitHub becomes a breeze. Try BeStarHost today and supercharge your CI/CD workflow!

Leave a comment