Enhance the deployment process by adding functionality to build frontend assets if a package.json file exists. Implement npm dependency installation and asset building, followed by copying the built assets to the remote server. Update the deployment workflow to include these new steps for improved asset management.
Laravel Hostinger Deploy
Deploy your Laravel application to Hostinger shared hosting with automated GitHub Actions support.
Installation
Install the package via Composer:
composer require thecodeholic/laravel-hostinger-deploy:^0.1 --dev
Or install the latest version:
composer require thecodeholic/laravel-hostinger-deploy --dev
Note: This package should be installed as a development dependency (
--dev) since it's only needed during deployment, not in production.
Quick Start (All-in-One Command)
The easiest way to deploy and set up automated deployment:
php artisan hostinger:deploy-and-setup-cicd
Required Environment Variables
Add these to your .env file:
HOSTINGER_SSH_HOST=your-server-ip
HOSTINGER_SSH_USERNAME=your-username
HOSTINGER_SSH_PORT=22
HOSTINGER_SITE_DIR=your-website-folder
GITHUB_API_TOKEN=your-github-token
What this command does:
- Deploys your Laravel application to Hostinger
- Sets up SSH keys on the server
- Automatically adds deploy key to GitHub repository via API
- Publishes GitHub Actions workflow file locally (
.github/workflows/hostinger-deploy.yml) - Configures GitHub secrets and variables via API
Command Options:
--fresh- Delete existing files and clone fresh repository--site-dir=- Override site directory from config--token=- GitHub Personal Access Token (overrides GITHUB_API_TOKEN from .env)--branch=- Branch to deploy (default: auto-detect)--php-version=- PHP version for workflow (default: 8.3)
Individual Commands
1. Manual Deployment Only
php artisan hostinger:deploy
What it does: Deploys your Laravel application to Hostinger server (composer install, migrations, storage link, etc.)
Required Environment Variables:
HOSTINGER_SSH_HOSTHOSTINGER_SSH_USERNAMEHOSTINGER_SSH_PORTHOSTINGER_SITE_DIR
Command Options:
--fresh- Delete existing files and clone fresh repository--site-dir=- Override site directory from config--token=- GitHub Personal Access Token (optional, enables automatic deploy key management)
Note: If
GITHUB_API_TOKENis provided (via.envor--tokenoption), the command will automatically add deploy keys to your GitHub repository. Otherwise, you'll be prompted to add the deploy key manually.
2. Setup Automated Deployment (Manual)
php artisan hostinger:auto-deploy
What it does: Generates SSH keys on server and displays GitHub secrets/variables for manual setup
Required Environment Variables:
HOSTINGER_SSH_HOSTHOSTINGER_SSH_USERNAMEHOSTINGER_SSH_PORTHOSTINGER_SITE_DIR
No options - Run this command, then manually add the displayed secrets to GitHub
3. Create GitHub Actions Workflow File
php artisan hostinger:publish-workflow
What it does: Creates .github/workflows/hostinger-deploy.yml file locally
Required Environment Variables: None (must be in a Git repository)
Command Options:
--branch=- Branch to trigger deployment (default: auto-detect)--php-version=- PHP version for workflow (default: 8.3)
4. Setup Automated Deployment (Via GitHub API)
php artisan hostinger:setup-cicd
What it does: Publishes GitHub Actions workflow file locally and creates secrets automatically via GitHub API, and automatically adds deploy keys to your repository
Required Environment Variables:
HOSTINGER_SSH_HOSTHOSTINGER_SSH_USERNAMEHOSTINGER_SSH_PORTHOSTINGER_SITE_DIRGITHUB_API_TOKEN
Command Options:
--token=- GitHub Personal Access Token (overrides GITHUB_API_TOKEN from .env)--branch=- Branch to deploy (default: auto-detect)--php-version=- PHP version for workflow (default: 8.3)
GitHub Personal Access Token Permissions: Your GitHub Personal Access Token needs the following permissions:
- Administration → Read and write (for managing deploy keys for the repository)
- Metadata → Read-only (automatically selected, required for API access)
Note: The workflow file is published locally to .github/workflows/hostinger-deploy.yml. You'll need to review, commit, and push it manually. The command only uses the API to create secrets and deploy keys.
Environment Variables Summary
| Variable | Required For | Description |
|---|---|---|
HOSTINGER_SSH_HOST |
All commands | Hostinger server IP address |
HOSTINGER_SSH_USERNAME |
All commands | Hostinger SSH username |
HOSTINGER_SSH_PORT |
All commands | SSH port (default: 22) |
HOSTINGER_SITE_DIR |
All commands | Website folder name |
GITHUB_API_TOKEN |
Automated setup | GitHub Personal Access Token (requires Administration permission for deploy keys) |
Requirements
- PHP ^8.2
- Laravel ^11.0|^12.0
- SSH access to Hostinger server
- Git repository (GitHub recommended)
License
MIT