GitHub Actions ile sıfır sunucu yüküyle deploy
Build GitHub'ın makinesinde, sunucuya sadece çıktı gidiyor. Kısıtlı SSH anahtarı ile güvenli bir deploy hattı kurmak.
İçindekiler
Deploy hattımın hedefi basitti: main dalına push edince site güncellensin, sunucu hiç zorlanmasın.
Akış
- GitHub Actions kodu çeker, bağımlılıkları kurar.
npm run buildile üretim çıktısını hazırlar.- Çıktı
rsyncile sunucuya gider. - Sunucudaki konteyner yeniden başlatılır.
Anahtarı kısıtlamak
Deploy için ayrı bir SSH anahtarı kullanıyorum ve sunucuda bu anahtarın yapabileceklerini sınırlıyorum:
command="/home/kullanici/deploy-gate.sh",restrict ssh-ed25519 AAAA...
restrict port yönlendirmeyi, terminal açmayı ve diğer her şeyi kapatır. command ise anahtar ne isterse istesin sadece belirli betiğin çalışmasını sağlar.
Workflow'dan bir kesit
- run: npm ci
- run: npm run build
- name: Upload
run: rsync -rlz --delete .next/standalone/ sunucu:/
Anahtar sızsa bile saldırgan sadece site dosyalarını değiştirebilir; sunucuda komut çalıştıramaz.
Yazar
Taha Bayar
Bu blogun sahibi. Sunucular, yazılım ve öğrendiklerim üzerine yazıyorum.
Yorumlar3
- Can Arslan
Bu konuda Türkçe kaynak çok az, iyi ki yazmışsınız.
- Elif Yılmaz
Performans farkını ölçtünüz mü? Rakam görmek ilginç olurdu.
- Mert Kaya
Tam aradığım yazıydı, elinize sağlık. Özellikle örnek komutlar çok işime yaradı.