Deploy przez Git na hostingu i VPS
Ostatnia aktualizacja: kwiecień 2026
post-receive — deploy przez
git push production main. Na hostingu współdzielonym bez SSH: użyj GitHub Actions
z krokiem SFTP/rsync. Wersja minimalna: 3 pliki konfiguracji, zero ręcznego FTP po wdrożeniu.
Metoda 1: Git hook post-receive na VPS
Najprostszy sposób automatycznego deployu na VPS. Po konfiguracji wystarczy
git push production main i kod ląduje na serwerze.
Krok 1: Utwórz bare repository na serwerze
# Na serwerze (przez SSH) mkdir -p /repos/myapp.git cd /repos/myapp.git git init --bare # Katalog docelowy aplikacji mkdir -p /var/www/myapp
Krok 2: Utwórz hook post-receive
# Plik: /repos/myapp.git/hooks/post-receive
#!/bin/bash
TARGET="/var/www/myapp"
GIT_DIR="/repos/myapp.git"
BRANCH="main"
while read oldrev newrev ref; do
PUSHED_BRANCH=$(echo "$ref" | sed -n 's,refs/heads/,,p')
if [ "$PUSHED_BRANCH" != "$BRANCH" ]; then
echo "Ignoruję branch: $PUSHED_BRANCH (oczekuję: $BRANCH)"
continue
fi
echo "--- Deploy branch $BRANCH ---"
git --work-tree="$TARGET" --git-dir="$GIT_DIR" checkout -f "$BRANCH"
cd "$TARGET"
# Opcjonalne kroki po deployu:
# npm ci --production
# npm run build
# pm2 restart myapp
echo "Deploy zakończony: $(date)"
done # Nadaj uprawnienia do uruchamiania chmod +x /repos/myapp.git/hooks/post-receive
Krok 3: Dodaj remote lokalnie i deployuj
# Lokalnie — dodaj remote "production" git remote add production [email protected]:/repos/myapp.git # Deploy = git push git push production main # Output: # --- Deploy branch main --- # Deploy zakończony: Tue Apr 8 23:00:00 CEST 2026
Metoda 2: GitHub Actions z SSH (hosting + VPS)
GitHub Actions umożliwia automatyczny deploy po każdym push na branch. Działa zarówno na VPS jak i na hostingach z dostępem SSH.
Plik: .github/workflows/deploy.yml
name: Deploy to VPS
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
cd /var/www/myapp
git pull origin main
npm ci --production
pm2 restart myapp Konfiguracja GitHub Secrets
W repozytorium GitHub: Settings > Secrets and variables > Actions > New repository secret. Dodaj:
VPS_HOST — adres IP lub hostname serwera
VPS_USER — nazwa użytkownika SSH (np. root lub deploy)
VPS_SSH_KEY — zawartość prywatnego klucza SSH (-----BEGIN
OPENSSH PRIVATE KEY-----)
Metoda 3: Deploy na hosting współdzielony przez SFTP
Na hostingach bez bare Git repository użyj GitHub Actions z krokiem SFTP:
name: Deploy to Shared Hosting
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm ci && npm run build
- name: Deploy via SFTP
uses: wlixcc/[email protected]
with:
username: ${{ secrets.FTP_USER }}
server: ${{ secrets.FTP_HOST }}
ssh_private_key: ${{ secrets.SSH_KEY }}
local_path: './dist/*'
remote_path: '/public_html/'
delete_remote_files: true Najczęstsze pytania
Szybkie przejście do ofert związanych z tym tematem
Wybraliśmy oferty i strony z kodami rabatowymi, które najczęściej pasują do tego scenariusza użycia.