Git deploy na hostingu — automatyczny deployment przez git push
Opublikowano: 8 kwietnia 2026 · Kategoria: Hosting
Krótka odpowiedź: Na hostingu z SSH możesz deployować przez
git push używając bare repo + post-receive hook. Bez SSH: użyj
GitHub Actions + rsync — działa z każdym hostingiem. Obie metody eliminują ręczne
wgrywanie plików przez FTP.
Metody git deploy — porównanie
| Metoda | Wymagania | Trudność | Najlepiej dla |
|---|---|---|---|
| Bare repo + post-receive hook | SSH + Git na serwerze | Średnia | VPS, zaawansowani |
| GitHub Actions + rsync | SSH (klucze), GitHub | Niska | Każdy hosting z SSH |
| GitHub Actions + FTP | FTP (login/hasło) | Niska | Hosting bez SSH |
| cPanel Git Version Control | cPanel hosting | Bardzo niska | Smarthost, hostingi cPanel |
| DeployHQ / Buddy.works | Zewnętrzna usługa | Niska | Zespoły, wiele serwerów |
Metoda 1: Bare repo + post-receive hook
# 1. Na SERWERZE (przez SSH) — utwórz bare repo
mkdir -p ~/repos/moja-strona.git
cd ~/repos/moja-strona.git && git init --bare
# 2. Utwórz post-receive hook
nano hooks/post-receive
# --- zawartość hooka: ---
#!/bin/bash
GIT_WORK_TREE=/home/uzytkownik/public_html
GIT_DIR=/home/uzytkownik/repos/moja-strona.git
git checkout -f main
# opcjonalnie: cd $GIT_WORK_TREE && composer install --no-dev
# 3. Nadaj uprawnienia wykonania
chmod +x hooks/post-receive
# 4. LOKALNIE — dodaj remote i pushuj
git remote add hosting ssh://[email protected]/~/repos/moja-strona.git
git push hosting main
Metoda 2: GitHub Actions + rsync
Najprostsze rozwiązanie — nie wymaga konfiguracji na serwerze, działa przez klucze SSH:
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy via rsync
uses: easingthemes/ssh-deploy@main
with:
# Dodaj w GitHub: Settings → Secrets → Actions
SSH_PRIVATE_KEY: ${{
secrets.SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{
secrets.SSH_HOST }}
REMOTE_USER: ${{
secrets.SSH_USER }}
SOURCE: ./
TARGET:
/home/uzytkownik/public_html/
EXCLUDE: ".git/, node_modules/,
.env"
Bezpieczeństwo kluczy SSH: Wygeneruj osobny klucz SSH tylko do deployu:
ssh-keygen -t ed25519 -C "github-deploy" -f ~/.ssh/github_deploy. Dodaj klucz
publiczny do ~/.ssh/authorized_keys na serwerze, a klucz prywatny jako GitHub Secret.
Nigdy nie używaj klucza głównego do CI/CD.
cPanel Git Version Control — Smarthost i inne
Hostingi z cPanelem (np. Smarthost) mają wbudowany interfejs Git — bez konfiguracji przez SSH:
- Zaloguj się do cPanela → sekcja "Pliki" → "Git™ Version Control"
- Kliknij "Create" → wklej URL repozytorium GitHub/GitLab
- Wybierz katalog docelowy (zazwyczaj
public_html/) - Deploy: w panelu kliknij "Update from Remote" lub skonfiguruj automatyczny pull przez webhook
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.